Skip to content
This repository has been archived by the owner on Oct 1, 2023. It is now read-only.

Releases: hhvm/hsl-experimental

v4.108.0: support and require HHVM 4.108

04 May 18:42
c145eda
Compare
Choose a tag to compare

This release supports and requires HHVM v4.108. HHVM v4.108 includes the HSL and HSL IO, so those are no longer present in this package.

v4.99.0: support and require HHVM 4.99

05 Mar 21:50
Compare
Choose a tag to compare

Removes all <<__Pure>> attributes, which are no longer supported (they have been replaced by contexts/capabilities).

v4.93.1: support HHVM 4.97

12 Feb 21:53
Compare
Choose a tag to compare

Removes all <<__Rx>> and related attributes, which are no longer supported as of HHVM 4.97 (they have been replaced by contexts/capabilities).

v4.93.0: support and require HHVM 4.93

19 Jan 23:24
Compare
Choose a tag to compare

Needed for coeffect/capability syntax

v4.77.0: rename readAsync/writeAsync

18 Dec 19:13
Compare
Choose a tag to compare

This release:

  • still supports v4.76; the version number was updated given it contains a breaking change
  • provides hhvm/hsl-io v0.3.0
  • renames readAsync() to readAllowPartialSuccessAsync()
  • renames writeAsync() to writeAllowPartialSuccessAsync()

These methods were renamed as the majority of existing callers assumed the behavior of readAllAsync() /writeAllAsync(), and as such were buggy depending on the behavior of the underlying native file descriptor and the amount of data being read/written.

In most cases, the correct fix is to replace calls to these functions with calls to readAllAsync() or writeAllAsync(); callers that depend on partial reads/writes (e.g. two-way communication over sockets/pipes, interactive CLIs) may wish to use the renamed functions, readUntilAsync(), readLineAsync(), or the write equivalents.

v4.76.1: bugfixes and performance improvements in readUntilAsync()

10 Dec 17:17
Compare
Choose a tag to compare

This release:

  • fixes a bug where multibyte separators would not be recognized if they straddled a chunk boundary
  • improves performance when the separator is not found in the first chunk, regardless of length of the separator

v4.76.0: bugfixes and internal improvements

08 Dec 20:27
Compare
Choose a tag to compare

This release:

  • makes readAllAsync() use a reasonable buffer size for read(), instead of using the specified limit - or 6GB (the maximum size of a string in HHVM) if no limit was specified. This memory would be released after the call to read, but could still have a large impact on peak memory usage.
  • removes the internal _Private\_Network\CancelablePoller class; this was used as a workaround for an HHVM bug that was fixed in HHVM 4.76

4.66: Add `OS\ttyname()`, `OS\isatty()`

02 Sep 21:15
Compare
Choose a tag to compare

This release also fixes a bug leading to an exception if a file is closed before a lock or temporary file is disposed.

4.58.1: add `OS\mkdtemp()`, `CloseableHandle::closeWhenDisposed()`

08 Jul 22:47
Compare
Choose a tag to compare

Example usage:

  • $dir = OS\mkdtemp('/tmp/foo.XXXXXX'); - must end with at least 6 'X' characters, which will be used as placeholders. Any additional X's may remain as literal X's or be considered additional placeholders, depending on the platform libc
  • using $handle->closeWhenDisposed() { /* ... */ }

v4.58.0: HSL-IO v0.2: buffered readers, FDHandle, removal of write queuing, disposables, and PHP resource support

02 Jul 16:26
Compare
Choose a tag to compare

This release:

  • increases the version number of the hsl-io virtual package to 0.2.0
  • removes CloseableHandle::closeAsync() - use close() instead
  • adds convenience methods readAllAsync(), readFixedSizeAsync(), writeAllAsync() to IO\ReadHandle
  • adds IO\BufferedReader class, which implements IO\ReadHandle and adds:
    • linesIterator() - use as foreach ($reader->linesIterator() await as $line) {}
    • readLineAsync() - prefer using linesIterator() where appropriate
    • readUntilAsync()
    • readByteAsync()
  • adds IO\MemoryHandle class
  • O_CLOEXEC is now implicitly set on all handles; this will not affect most users, but removes an observable difference when using CLI-server mode
  • Removed disposable interfaces; file/socket open functions now return the non-disposable interface.
  • removed queuing system from IO\WriteHandle, as it can not provide the guarantees that would intuitively be expected. In general, avoid concurrent writes to the same handle, or add a queue or lock for your higher-level operations instead of each individual IO operation.
  • PHP resource support in HSL IO has been removed; all native handles have been ported to OS\FileDescriptor
  • Fixed a bug where non-blocking accepts would never resolve (fail) if the socket was already closed
  • Added OS\mkostemps(), OS\mkostemp(), OS\mkstemp(), OS\mkstemps(); File\temporary_file() now uses these
  • Added IO\FDHandle interface for handles that are backed by OS\FileHandles; all native types now implement this interface
  • Removed UserSpaceHandle; check for the behavior you want instead, e.g. OS\FileHandle
  • invalid arguments in HSL IO now consistently fail with EINVAL, instead of a mix of different exceptions
    • EINVAL is used for consistency regardless of when there error is raised by Hack code or by native functions