Skip to content

TrueAsync v0.6.1

Choose a tag to compare

@EdmondDantes EdmondDantes released this 15 Mar 08:24
· 142 commits to main since this release

Install

Windows

Build Download
Release php-trueasync-0.6.1-php8.6-windows-x64.zip
Debug php-trueasync-0.6.1-php8.6-windows-x64-debug.zip
Checksums sha256sums.txt

Quick install (PowerShell):

irm https://raw.githubusercontent.com/true-async/releases/master/installer/install.ps1 | iex

Docker (Linux)

docker pull trueasync/php-true-async:0.6.1-php8.6
docker run --rm trueasync/php-true-async:0.6.1-php8.6 php -v
Tag Description
0.6.1-php8.6 Ubuntu 24.04
0.6.1-php8.6-alpine Alpine
0.6.1-php8.6-debug Debug build

Build from Source (Linux)

curl -fsSL https://raw.githubusercontent.com/true-async/releases/master/installer/build-linux.sh | bash

Build from Source (macOS)

curl -fsSL https://raw.githubusercontent.com/true-async/releases/master/installer/build-macos.sh | bash

Documentation

Full documentation, API reference, and guides at true-async.github.io


What's Changed

Fixed

  • feof() on sockets unreliable on Windows: WSAPoll(timeout=0) fails to detect FIN packets on Windows, causing feof() to return false on closed sockets. Fixed by skipping poll for liveness checks (value==0) and going directly to recv(MSG_PEEK). On Windows, MSG_DONTWAIT is unavailable, so non-blocking mode is temporarily toggled via ioctlsocket. Errno is saved immediately after recv because ioctlsocket clears WSAGetLastError(). Shared logic extracted into php_socket_check_liveness() in network_async.c to eliminate duplication between xp_socket.c and xp_ssl.c.
  • Pipe close error on Windows: php_select() incorrectly skipped signaled pipe handles when num_read_pipes >= n_handles, causing pipe-close events to be missed and proc_open reads to hang. Fixed by removing the num_read_pipes < n_handles guard so PeekNamedPipe is always called for signaled handles.

Full Changelog: v0.6.0...v0.6.1