PHP RFC: True Async

Das TrueAsync-Projekt wurde etwa ein Jahr lang über den offiziellen RFC-Prozess auf wiki.php.net vorangetrieben. Zwei RFCs wurden veröffentlicht, die das grundlegende Nebenläufigkeitsmodell und strukturierte Nebenläufigkeit beschreiben.

RFC #1 — PHP True Async

Autor: Edmond [HT] Version: 1.7 Zielversion: PHP 8.6+ Draft

Das Haupt-RFC, das das Nebenläufigkeitsmodell für PHP definiert. Beschreibt Coroutinen, Funktionen spawn() / await() / suspend(), das Coroutine-Objekt, Awaitable- und Completable-Interfaces, den kooperativen Abbruchmechanismus, Fiber-Integration, Fehlerbehandlung und Graceful Shutdown.

Schlüsselprinzipien:

RFC auf wiki.php.net lesen →

RFC #2 — Scope und strukturierte Nebenläufigkeit

Autor: Edmond [HT] Version: 1.0 Draft

Eine Erweiterung des Basis-RFC. Führt die Klasse Scope ein, die die Lebensdauer von Coroutinen an den lexikalischen Gültigkeitsbereich bindet. Beschreibt die Scope-Hierarchie, Fehlerausbreitung, die „Zombie”-Coroutinen-Richtlinie und kritische Abschnitte über protect().

Was es löst:

RFC auf wiki.php.net lesen →

Wie diese RFCs zusammenhängen

Das erste RFC definiert Low-Level-Primitive — Coroutinen, Basisfunktionen und C-API für Erweiterungen. Das zweite RFC fügt strukturierte Nebenläufigkeit hinzu — Mechanismen zur Verwaltung von Coroutinen-Gruppen, die nebenläufigen Code sicher und vorhersagbar machen.

Zusammen bilden sie ein vollständiges asynchrones Programmiermodell für PHP:

  RFC #1: True Async RFC #2: Scope
Ebene Primitive Verwaltung
Bietet spawn(), await(), Coroutine Scope, TaskGroup, protect()
Analogien Go Goroutines, Kotlin Coroutines Kotlin CoroutineScope, Python TaskGroup
Ziel Nebenläufigen Code ausführen Sichere Lebenszyklusverwaltung

Aktueller RFC-Status

Derzeit ist das Projekt TrueAsync auf Unsicherheit im RFC-Prozess gestoßen. In den letzten Monaten ist die Diskussion praktisch zum Stillstand gekommen, und es gibt keine Klarheit über seine Zukunft. Es ist ziemlich offensichtlich, dass das RFC keine Abstimmung bestehen kann, und es gibt keine Möglichkeit, dies zu ändern.

Aus diesen Gründen wird der RFC-Prozess derzeit als eingefroren betrachtet, und das Projekt wird sich innerhalb der offenen Community weiterentwickeln, ohne „offiziellen” Status.

An der Diskussion teilnehmen

RFCs werden auf der Mailingliste internals@lists.php.net und auf GitHub Discussions diskutiert.

Treten Sie auch der Diskussion auf Discord bei.