The Daily Commit · Ressort-Ausgabe Titelseite PHP AI Dev EN DE FR ES

The Php Times

RFC-Watch — Ökosystem

Neues PHP-RFC schlägt austauschbaren Coroutinen-Scheduler für die Zend Engine vor


Ein neues PHP-RFC von Edmond Dantes will der Zend Engine eine native Coroutinen-Darstellung und eine per Extension austauschbare Scheduler-Schnittstelle geben, ohne neue Syntax, Funktionen oder Klassen.

PHP INTERNALS ([RFC]/[VOTE]), 23. Juli 2026 kuratiert von Sönke

Anders als das frühere True-Async-RFC liegt bereits ein funktionierender Pull Request für php-src vor; Scheduler sollen künftig Fibers aus ReactPHP, Revolt oder AMPHP übernehmen können.

Der PHP-Entwickler Edmond Dantes hat die Diskussion zu einem neuen RFC mit dem Titel „Concurrency Support in the PHP Engine“ (wiki.php.net/rfc/async_scheduler_abi) eröffnet. Der Vorschlag gibt der Zend Engine eine native Coroutinen-Repräsentation und eine austauschbare Scheduler-Komponente, die von Extensions implementiert werden kann. Es werden keine neuen PHP-Klassen, Funktionen, Konstanten oder Syntaxelemente eingeführt; ist kein Scheduler registriert, verhält sich PHP genau wie bisher.

Das RFC ist ausdrücklich nicht identisch mit dem zuvor diskutierten „True Async“-RFC, sondern ein minimaler, aus dieser Arbeit extrahierter Engine-Kern. Es definiert einen Aktivierungsvertrag, vom Engine ausgelöste Benachrichtigungen, einen Mechanismus zur Übernahme von Fibers durch einen Scheduler sowie coroutinenbezogenen Speicher. Nutzerseitige APIs wie spawn(), await() oder Channels blieben weiterhin Aufgabe von Extensions; True Async würde darauf lediglich als ein möglicher Anbieter aufsetzen.

Eine funktionierende Implementierung liegt bereits als Pull Request php/php-src#22561 auf GitHub vor, ebenfalls von Dantes eingereicht. Sie enthält eine im Quellbaum enthaltene Referenz-Scheduler-Extension namens ext/test_scheduler, standardmäßig deaktiviert, die alle Scheduler-Slots über gewöhnlichen Extension-Code füllt; die bestehenden PHP-Testsuiten sollen unverändert im schedulerlosen Modus in derselben Binärdatei laufen. Eine separate, nicht im Repository enthaltene Bridge-Extension implementiert einen Scheduler in reinem PHP und dient als Machbarkeitsnachweis.

Für bestehende Async-Bibliotheken erlaubt das Design, dass ein Scheduler bereits von ReactPHP, Revolt oder AMPHP gestartete Fibers übernimmt, pro Fiber und optional. Der neue coroutinenbezogene Speicher soll perspektivisch Funktionen wie ob_start() coroutinensicher machen. Dantes betont, dass der Vorschlag keine Goroutinen und keine echte Parallelität einführt – die Ausführung bleibt auf einen einzigen Betriebssystem-Thread beschränkt.

Originalquelle lesen (Englisch) ↗

Artikel bewerten: 0

Leserforum

Noch keine Beiträge — eröffne die Debatte.

← Ökosystem — Page B1

"All the Code That's Fit to Ship" · The Daily Commit · Bildschirm-Ausgabe · Impressum · Datenschutz