Skip to content

v26.2.0

Latest

Choose a tag to compare

@doubaokun doubaokun released this 28 Feb 16:13
· 2 commits to master since this release

New Features

. PHP 8.5 support
. PHP native Fiber context for coroutines: new coroutine context backend using PHP's native zend_fiber API instead of Boost ASM or ucontext. Enables proper integration with xdebug, profilers, and fiber-aware extensions. Configurable at runtime via Co::set(['use_fiber_context' => true]) or INI openswoole.use_fiber_context=On
. Xdebug support: xdebug step debugging now works correctly inside coroutines when fiber context is enabled. Removed the legacy "extremely dangerous" warning
. io_uring reactor backend: new event reactor using Linux io_uring with IORING_OP_POLL_ADD as a drop-in replacement for epoll. Enable with --enable-io-uring (requires liburing). Supports multishot poll on kernel 5.13+ with automatic fallback on older kernels
. io_uring async file I/O engine: dedicated io_uring ring for asynchronous file operations (open, read, write, fstat, fsync, unlink, rename, mkdir, rmdir), replacing the thread pool. Unsupported operations gracefully fall back to the thread pool
. Runtime reactor type selection: select the event reactor backend at runtime via Co::set(['reactor_type' => OPENSWOOLE_IO_URING]). New constants: OPENSWOOLE_EPOLL, OPENSWOOLE_KQUEUE, OPENSWOOLE_POLL, OPENSWOOLE_SELECT, OPENSWOOLE_IO_URING
. Event loop lag metrics: real-time event loop lag monitoring via $server->stats(). Exposes event_loop_lag_ms, event_loop_lag_max_ms, and event_loop_lag_avg_ms per worker, task worker (when coroutine-enabled), and reactor thread (process mode). Useful for detecting blocking operations that stall the event loop
. Migrate HTTP parser to llhttp: replaces the custom openswoole_http_parser with llhttp parser for improved standards compliance and performance
. Coroutine-safe exit() support: intercepts exit() calls inside coroutines on PHP 8.4+ (where exit changed from opcode to function) and throws openswoole_exit_exception instead
. Backward compatibility constant aliases

Bug Fixes

. Fix postgres client bugs @mrVrAlex
. Fix reflection issues and scope leaks (#284) by @remicollet
. Fix file I/O hanging under io_uring: race condition where eventfd notification could be lost between draining and re-arming single-shot POLL_ADD. Added reactor end-of-loop callback and timeout CQE filtering
. Fix file lock bug: non-blocking flock (LOCK_NB) now properly checks in-process coroutine lock state before the system flock() call
. Fix CPU affinity compile check: add missing _GNU_SOURCE define before sched.h
. Fix futex compile check: add missing _GNU_SOURCE define before linux/futex.h

Refactoring

. Namespace normalization: openswoole_*, updated internal references and test directories
. Removed compile-time guards from reactor type PHP constants; runtime validation handles unsupported backends
. Removed PHP < 8.0 compatibility code
. Dropped PHP 8.2 support