Repository navigation
PHP 8.6.0 TrueAsync alpha.1
Pre-release
Pre-release
·
3784 commits
to master
since this release
PHP 8.6.0 TrueAsync alpha.1
First alpha release of TrueAsync PHP 8.6.0.
This is a pre-release intended for testing. Do not use in production.
Changed
- New
\Cancellationroot class — added to PHP core per the True Async RFC. Implements\Throwablealongside\Exceptionand\Error.Async\AsyncCancellationnow extends\Cancellationinstead of\Error, preventing cancellation exceptions from being accidentally caught bycatch(\Exception)orcatch(\Error)blocks.- Migration: Replace
catch(Async\CancellationError $e)withcatch(Async\AsyncCancellation $e)orcatch(\Cancellation $e).
- Migration: Replace
Fixed
stream_select()ignoring PHP-buffered data in async context — whenfgets()/fread()pulled more data into PHP's internal buffer than returned, a subsequentstream_select()did not detect buffered data because the async path only checks OS-level file descriptors. Caused hangs inrun-tests.php -jparallel workers on macOS. Fixed by checkingstream_array_emulate_read_fd_set()before entering the async poll path.- Waker events not cleaned when coroutine is resumed outside scheduler context — stale event references could accumulate when a coroutine was resumed directly. Now
ZEND_ASYNC_WAKER_CLEAN_EVENTSis called on resume outside the scheduler.
Related repositories
- true-async/php-async — async extension (see its changelog for full 0.6.0 feature list)
- true-async/releases — binary releases and Docker images