A thin, policy-free concurrency core for PHP. The PHP engine standardizes one thing: how a
scheduler is activated and which component is in charge. Everything user-facing (coroutine
classes, spawn()/await(), channels, event loops) stays with the scheduler and the
ecosystem.
With no scheduler registered, PHP behaves exactly as it does today.
| Document | What is inside |
|---|---|
| scheduler_rfc.md | PHP RFC: Concurrency Support in the PHP Engine. The notifications, the granted operations, per-coroutine state and the request lifecycle changes. Start here. |
| SCHEDULER.md | The C-level interface and the exact engine invocation points, for scheduler implementers. |
| core-integration.md | Every place the integration touches php-src, file by file. |
| reactor.md | Reactor C interface, a discussion draft: a callback-first io_* API (poll, streaming IO, timers, filesystem, DNS) and how it feeds the scheduler. Not an RFC. |
- Proof of concept: php/php-src#22561,
branch
async-core: the engine capabilities and the lifecycle points. - Reference C scheduler: ext/test_scheduler, in the same tree.
- Scheduler bridge for PHP: ext-scheduler-hook, a separate extension, not part of the RFC.
- Reference production scheduler: true-async.
- The full stack the core was extracted from: the TrueAsync project.