Una nueva RFC de PHP propone un planificador de corrutinas intercambiable para el motor Zend
Una nueva RFC de PHP presentada por Edmond Dantes propone dotar al motor Zend de una representación nativa de corrutinas y una interfaz de planificador intercambiable mediante extensiones, sin añadir sintaxis, funciones ni clases nuevas. A diferencia de la anterior RFC True Async, ya cuenta con un pull request funcional para php-src y permitiría que los planificadores adopten fibers de ReactPHP, Revolt o AMPHP.
El desarrollador de PHP Edmond Dantes ha abierto el debate sobre una nueva RFC titulada «Concurrency Support in the PHP Engine» (wiki.php.net/rfc/async_scheduler_abi). La propuesta dota al motor Zend de una representación nativa de corrutinas y de un componente planificador (scheduler) intercambiable que puede implementar una extensión. No añade clases, funciones, constantes ni sintaxis nuevas en PHP; si no hay ningún planificador registrado, PHP se comporta exactamente igual que hoy.
Esta RFC no es la anterior RFC «True Async», sino un núcleo mínimo a nivel de motor extraído de ese trabajo. Define un contrato de activación, notificaciones que emite el motor, un mecanismo para que un planificador adopte fibers y almacenamiento propio por corrutina. Las API orientadas al usuario, como spawn(), await() o los canales, seguirían siendo responsabilidad de las extensiones; True Async sería solo uno de los posibles proveedores construidos sobre esta base.
Ya existe una implementación funcional en forma de pull request php/php-src#22561 en GitHub, también presentada por Dantes. Incluye una extensión planificadora de referencia integrada en el árbol de código, ext/test_scheduler, desactivada por defecto, que completa cada ranura del planificador mediante código de extensión ordinario; las suites de pruebas existentes de PHP se ejecutarían sin cambios, sin planificador, dentro del mismo binario. Una extensión puente aparte, fuera del repositorio, que implementa un planificador en PHP puro, sirve como prueba de que la interfaz propuesta es suficiente.
Para las bibliotecas asíncronas existentes, el diseño permite que un planificador adopte fibers ya creados por ReactPHP, Revolt o AMPHP, de forma individual y opcional por cada fiber. El nuevo almacenamiento por corrutina busca, a futuro, hacer que funciones como ob_start() sean seguras para corrutinas. Dantes subraya que la propuesta no introduce goroutines ni paralelismo real: la ejecución permanece confinada a un único hilo del sistema operativo.
Tribuna de lectores
Aún no hay aportaciones — abre el debate.
Inicia la conversación
Sin cuenta ni contraseña — introduce tu correo y te enviamos un enlace de acceso de un solo uso. ¿Primera vez? Todo se configura automáticamente.
Tu valoración se aplicará automáticamente al iniciar sesión.
Revisa tu bandeja de entrada
Hemos enviado un enlace de acceso a …. Ábrelo en este dispositivo — esta pestaña te conectará automáticamente.
Esperando tu clic …
·