NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #267 most downloaded on Packagist
Rock-solid event loop for concurrent PHP applications.
Last release 4 months ago
16 May 2026
Release timing varies
gaps range from 8 days to 1.2 years
Nearly every release is documented
notes for 18 of 18 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
18 releases · first in 2021
One column per quarter.
Fix #105 : Segmentation fault/fiber exceptions dependent on destruction order on 8.4 by @danog and @bwoebi in #121
Full Changelog: v1.0.8...v1.0.9
use str_increment() when possible to increment non-numeric strings by @xabbuh in #110
Fix for callbacks queued in destructors by @trowski in #100
Full Changelog: v1.0.6...v1.0.7
Fixed re-entering the event loop from {main} after the loop ended with an un-resumed suspension.
{main} after the loop ended with an un-resumed suspension.Full Changelog: v1.0.5...v1.0.6
Discard {main} suspension on uncaught exception from loop by @trowski and @danog in #71 , fixing resuming the event loop in a shutdown function after
{main} suspension on uncaught exception from loop by @trowski and @danog in #71, fixing resuming the event loop in a shutdown function after an uncaught exception from an event loop callback.Full Changelog: v1.0.4...v1.0.5
Renamed a private property in UvDriver to avoid a PHP JIT bug.
UvDriver to avoid a PHP JIT bug.Full Changelog: v1.0.3...v1.0.4
Add runtime check for serious GC bugs in PHP by @kelunik in #85
Full Changelog: v1.0.2...v1.0.3
Clarify event loop terminated error by @danog in #83
Improve pcntl availability check if functions are disabled by @danog in #77
pcntl availability check if functions are disabled by @danog in #77@throws by @simPod in #76Full Changelog: v1.0.0...v1.0.1
We're proud to announce our initial stable release! The event loop is ready for production use, has been tested in various different applications and
We're proud to announce our initial stable release! The event loop is ready for production use, has been tested in various different applications and scenarios, and fully supports fibers.
EventLoop::getIdentifiers (#62)EventLoop::getType (#62)EventLoop::isEnabled (#62)EventLoop::isReferenced (#62)EventLoop::getErrorHandler missing the static modifierUncaughtThrowable if a decorating event loop driver throws an UncaughtThrowable (#61)EventLoop::getInfo, use EventLoop::getIdentifiers() in combination with EventLoop::isEnabled, EventLoop::isReferenced, and EventLoop::getType instead (#62)EventLoop::createSuspension, use EventLoop::getSuspension insteadFull Changelog: v0.2.5...v1.0.0
Fixed compatibility with 8.2 by fixing a deprecation notice
PHP_INT_MAX) timeout is requested (#49)EventLoop::queue()) callback arguments so passed objects may be garbage collected if a resulting fiber unsets all references to the argument (#60)Fixed the fiber reference in DriverSuspension being nulled early during shutdown, leading to an assertion error when attempting to resume the suspensi
DriverSuspension being nulled early during shutdown, leading to an assertion error when attempting to resume the suspensionFixed Undefined property: Revolt\EventLoop\Internal\DriverSuspension::$fiber in an error path
Undefined property: Revolt\EventLoop\Internal\DriverSuspension::$fiber in an error pathFixed memory leak with suspensions keeping a reference to fibers (#42, #52) Similar leaks might still happen if suspensions are never resumed, so ensu
Added template type to Suspension
Suspension (#44)FiberLocal::unset() (#45)EventLoop::createSuspension() has been deprecated and will be removed in the next version
FiberLocal to store data specific to each fiber, e.g. logging context (#40)UnhandledThrowable if event loop stops due to an exception (#32)EventLoop::getErrorHandler() to get the currently set error handlerEventLoop::setErrorHandler(), use EventLoop::getErrorHandler() insteadEventLoop::setErrorHandler() (#30)EventLoop::getSuspension() has been added as replacement for EventLoop::createSuspension()EventLoop::createSuspension() has been deprecated and will be removed in the next versionFixed exceptions being hidden if the event loop stopped due to an uncaught exception
Initial development release.
Initial development release.
Your coding agent can read these notes before it upgrades. Set up the MCP server →