Une nouvelle RFC PHP propose un planificateur de coroutines interchangeable pour le moteur Zend
Une nouvelle RFC PHP d'Edmond Dantes propose de doter le moteur Zend d'une représentation native des coroutines et d'une interface de planificateur interchangeable via une extension, sans ajouter de syntaxe, fonction ni classe. Distincte de la RFC True Async précédente, elle s'appuie sur une pull request fonctionnelle pour php-src et permettrait aux planificateurs d'adopter des fibers de ReactPHP, Revolt ou AMPHP.
Le développeur PHP Edmond Dantes a lancé la discussion autour d'une nouvelle RFC intitulée « Concurrency Support in the PHP Engine » (wiki.php.net/rfc/async_scheduler_abi). La proposition dote le moteur Zend d'une représentation native des coroutines et d'un composant ordonnanceur (scheduler) interchangeable, pouvant être implémenté par une extension. Elle n'ajoute aucune classe, fonction, constante ni syntaxe côté PHP ; sans planificateur enregistré, le comportement de PHP reste identique à aujourd'hui.
Cette RFC n'est explicitement pas la RFC « True Async » précédemment discutée, mais un noyau minimal extrait de ce travail au niveau du moteur. Elle définit un contrat d'activation, des notifications émises par le moteur, un mécanisme permettant à un planificateur d'adopter des fibers, ainsi qu'un stockage propre à chaque coroutine. Les API destinées aux développeurs, comme spawn(), await() ou les canaux (channels), resteraient du ressort des extensions ; True Async ne serait qu'un fournisseur possible construit sur cette base.
Une implémentation fonctionnelle existe déjà sous forme de pull request php/php-src#22561 sur GitHub, également soumise par Dantes. Elle comprend une extension de planificateur de référence intégrée à l'arborescence, ext/test_scheduler, désactivée par défaut, qui remplit chaque emplacement du planificateur via du code d'extension ordinaire ; les suites de tests existantes de PHP s'exécuteraient sans modification, sans planificateur, dans le même binaire. Une extension pont distincte, hors dépôt, implémentant un planificateur en PHP pur, sert de preuve que l'interface proposée est suffisante.
Pour les bibliothèques asynchrones existantes, la conception permet à un planificateur d'adopter des fibers déjà créés par ReactPHP, Revolt ou AMPHP, fiber par fiber et de façon optionnelle. Le nouveau stockage par coroutine vise à terme à rendre des fonctions comme ob_start() sûres pour les coroutines. Dantes souligne que la proposition n'introduit ni goroutines ni véritable parallélisme : l'exécution reste confinée à un seul thread du système d'exploitation.
Tribune des lecteurs
Pas encore de contributions — lance le débat.
Lance la discussion
Pas de compte ni de mot de passe — saisis simplement ton adresse e-mail et nous t’envoyons un lien de connexion à usage unique. Première visite ? Tout se met en place automatiquement.
Ton évaluation sera appliquée automatiquement après ta connexion.
Vérifie ta boîte mail
Nous avons envoyé un lien de connexion à …. Ouvre-le sur cet appareil — cet onglet te connectera automatiquement.
En attente de ton clic …
·