PHP RFC: True Async

Проект TrueAsync около года продвигался через официальный процесс RFC на wiki.php.net. На данный момент опубликованы два RFC, которые описывают базовую модель конкурентности и структурную конкурентность.

RFC #1 — PHP True Async

Автор: Edmond [HT] Версия: 1.7 Целевая версия: PHP 8.6+ Draft

Основной RFC, определяющий модель конкурентности для PHP. Описывает корутины, функции spawn() / await() / suspend(), объект Coroutine, интерфейсы Awaitable и Completable, механизм кооперативной отмены, интеграцию с Fiber, обработку ошибок и graceful shutdown.

Ключевые принципы:

Читать RFC на wiki.php.net →

RFC #2 — Scope и структурная конкурентность

Автор: Edmond [HT] Версия: 1.0 Draft

Расширение базового RFC. Вводит класс Scope, привязывающий время жизни корутин к лексической области видимости. Описывает иерархию scope’ов, распространение ошибок, политику «зомби»-корутин и критические секции через protect().

Что решает:

Читать RFC на wiki.php.net →

Как связаны эти RFC

Первый RFC определяет низкоуровневые примитивы — корутины, базовые функции и C API для расширений. Второй RFC добавляет структурную конкурентность — механизмы управления группами корутин, которые делают конкурентный код безопасным и предсказуемым.

Вместе они формируют полную модель асинхронного программирования для PHP:

  RFC #1: True Async RFC #2: Scope
Уровень Примитивы Управление
Что даёт spawn(), await(), Coroutine Scope, TaskGroup, protect()
Аналогии Go goroutines, Kotlin coroutines Kotlin CoroutineScope, Python TaskGroup
Цель Запуск конкурентного кода Безопасное управление жизненным циклом

Текущий статус RFC

На текущий проект TrueAsync столкнулся с неопределённостью в процессе RFC. За последние несколько месяцев обсуждение практически остановилось, и нет ясности относительно его будущего. Вполне очевидно, что RFC не сможет пройти голосование, и при этом нет никакой возможности что-то изменить.

По этим причинам на текущий момент процесс RFC считается замороженным, и проект будет развиваться в рамках открытого сообщества, без “официального” статуса.

Участие в обсуждении

RFC обсуждаются в рассылке internals@lists.php.net и на GitHub Discussions.

Также присоединяйтесь к обсуждению в Discord.