PackageTrack
Sign in Get early access

revolt/event-loop

Rock-solid event loop for concurrent PHP applications.

v1.0.9 61M downloads/mo #282 most downloaded on Packagist revoltphp/event-loop

What this package is like to depend on

Last release 3 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

1 release in the last 12 months

see the full history below

Release timeline

18 releases · Dec 2021 to May 2026
2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 18
  1. v1.0.9 16 May 2026
    Release notes

    What's Changed

    • 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

    Open source →
  2. v1.0.8 27 Aug 2025
    Release notes

    What's Changed

    • use str_increment() when possible to increment non-numeric strings by @xabbuh in #110

    New Contributors

    Full Changelog: v1.0.7...v1.0.8

    Open source →
  3. v1.0.7 25 Jan 2025
    Release notes

    What's Changed

    • Fix for callbacks queued in destructors by @trowski in #100
    • Serialization and deserialization of loop driver is now explicitly forbidden

    Full Changelog: v1.0.6...v1.0.7

    Open source →
  4. v1.0.6 30 Nov 2023
    Release notes

    What's Changed

    • Fixed re-entering the event loop from {main} after the loop ended with an un-resumed suspension.

    Full Changelog: v1.0.5...v1.0.6

    Open source →
  5. v1.0.5 19 Nov 2023
    Release notes

    What's Changed

    • Discard {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

    Open source →
  6. v1.0.4 22 Oct 2023
    Release notes

    What's Changed

    • Renamed a private property in UvDriver to avoid a PHP JIT bug.

    Full Changelog: v1.0.3...v1.0.4

    Open source →
  7. v1.0.3 29 Jul 2023
    Release notes

    What's Changed

    • Add runtime check for serious GC bugs in PHP by @kelunik in #85
    • Check if fiber was destroyed before resuming by @trowski in #84

    Full Changelog: v1.0.2...v1.0.3

    Open source →
  8. v1.0.2 20 Jul 2023
    Release notes

    What's Changed

    Full Changelog: v1.0.1...v1.0.2

    Open source →
  9. v1.0.1 02 Apr 2023
    Release notes

    What's Changed

    • Improve pcntl availability check if functions are disabled by @danog in #77
    • Use @throws by @simPod in #76

    New Contributors

    Full Changelog: v1.0.0...v1.0.1

    Open source →
  10. v1.0.0 02 Nov 2022
    Release notes

    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.

    What's Changed

    • Added EventLoop::getIdentifiers (#62)
    • Added EventLoop::getType (#62)
    • Added EventLoop::isEnabled (#62)
    • Added EventLoop::isReferenced (#62)
    • Fixed EventLoop::getErrorHandler missing the static modifier
    • Fixed double wrapping in UncaughtThrowable if a decorating event loop driver throws an UncaughtThrowable (#61)
    • Removed EventLoop::getInfo, use EventLoop::getIdentifiers() in combination with EventLoop::isEnabled, EventLoop::isReferenced, and EventLoop::getType instead (#62)
    • Removed EventLoop::createSuspension, use EventLoop::getSuspension instead

    Full Changelog: v0.2.5...v1.0.0

    Open source →
    Release notes
    • Added EventLoop::getIdentifiers (#62)
    • Added EventLoop::getType (#62)
    • Added EventLoop::isEnabled (#62)
    • Added EventLoop::isReferenced (#62)
    • Fixed EventLoop::getErrorHandler missing the static modifier
    • Fixed double wrapping in UncaughtThrowable if a decorating event loop driver throws an UncaughtThrowable (#61)
    • Removed EventLoop::getInfo, use EventLoop::getIdentifiers() in combination with EventLoop::isEnabled, EventLoop::isReferenced, and EventLoop::getType instead (#62)
    • Removed EventLoop::createSuspension, use EventLoop::getSuspension instead

    0.2.x

    Open source →
  11. v0.2.5 01 Aug 2022
    Release notes
    • PHP 8.1 is now required (#55)
    • Fixed compatibility with 8.2 by fixing a deprecation notice (#58)
    • Fixed an integer overflow on timers if a large (e.g. PHP_INT_MAX) timeout is requested (#49)
    • Removed the reference kept to microtask (EventLoop::queue()) callback arguments so passed objects may be garbage collected if a resulting fiber unsets all references to the argument (#60)
    Open source →
  12. v0.2.4 04 Mar 2022
    Release notes
    • Fixed the fiber reference in DriverSuspension being nulled early during shutdown, leading to an assertion error when attempting to resume the suspension
    Open source →
  13. v0.2.3 24 Feb 2022
    Release notes
    • Fixed Undefined property: Revolt\EventLoop\Internal\DriverSuspension::$fiber in an error path
    Open source →
  14. v0.2.2 20 Feb 2022
    Release notes
    • Fixed memory leak with suspensions keeping a reference to fibers (#42, #52) Similar leaks might still happen if suspensions are never resumed, so ensure your suspensions are eventually resumed.
    Open source →
  15. v0.2.1 03 Feb 2022
    Release notes
    • Added template type to Suspension (#44)
    • Added FiberLocal::unset() (#45)
    • Added stacktrace to all current suspensions on early exit of the event loop (#46)
    Open source →
  16. v0.2.0 14 Jan 2022
    Release notes
    • Added FiberLocal to store data specific to each fiber, e.g. logging context (#40)
    • Added throwing UnhandledThrowable if event loop stops due to an exception (#32)
    • Added EventLoop::getErrorHandler() to get the currently set error handler
    • Improved performance by reducing fiber switches by queueing callbacks for each tick (#34)
    • Improved performance by not creating unnecessary fibers if exceptions are thrown from callbacks
    • Removed return value of EventLoop::setErrorHandler(), use EventLoop::getErrorHandler() instead
    • Removed default value for first argument of EventLoop::setErrorHandler() (#30)
    • Cache suspensions and always return the same value for a specific fiber (#37)
      • EventLoop::getSuspension() has been added as replacement for EventLoop::createSuspension()
      • EventLoop::createSuspension() has been deprecated and will be removed in the next version
    • Fixed multiple interrupts on double resumption leading to an assertion error instead of an exception (#41)
    • Fixed suspensions keeping their pending state after the event loop exceptionally stopped

    0.1.x

    Open source →
  17. v0.1.1 10 Dec 2021
    Release notes
    • Fixed exceptions being hidden if the event loop stopped due to an uncaught exception (#31)
    Open source →
  18. v0.1.0 01 Dec 2021
    Release notes

    Initial development release.

    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive