Joël Wurtz de JoliCode cuenta cómo construyó rphp, una máquina virtual de PHP experimental en Rust, donde los grandes modelos de lenguaje actuaron como acelerador y no como autor. Un primer prototipo se generó en un solo día a partir del conocimiento del propio modelo. Ejecutaba un subconjunto significativo de PHP, pero era extremadamente lento e implementaba una VM de pila, mientras que PHP es una VM de registros: una diferencia que puede alterar el orden de destrucción de valores y el momento de emisión de errores, de los que pueden depender bibliotecas existentes.

El objetivo, deliberadamente, no era clonar el Zend Engine. Wurtz critica reescrituras como la de Bun por su uso masivo de bloques unsafe, lo que en su opinión anula el propósito de elegir Rust. El proyecto buscaba entender por qué PHP funciona como funciona y diseñar una VM según la filosofía de Rust: ownership, sin estado global mutable y un mínimo de unsafe. Leer las fuentes del Zend Engine con la IA como interlocutor reveló que algunas optimizaciones reflejan comportamientos de CPU antiguos, mientras que en otros casos PHP ya había encontrado la mejor solución hace años.

Destacan dos ideas de arquitectura. La VM es un objeto autocontenido que puede instanciarse varias veces por hilo, lo que facilita las pruebas y la integración. Y un modelo de fork permite clonar una VM precargada y pausada con semántica copy-on-write por petición: arrancar un kernel de Symfony, cachear datos costosos, llamar a rphp_request_pause() — cada petición parte de ese estado caliente pero permanece aislada. Se sitúa entre el PHP clásico por petición y el modo worker de FrankenPHP.

Estado actual: alrededor del 80 % de las pruebas básicas de compatibilidad pasan. La ejecución de PHP puro es de 5 a 15 veces más lenta que la del Zend Engine, pero el modo fork es unas 30 veces más rápido que el modo clásico de la propia VM — suficiente para superar a PHP con FrankenPHP en modo clásico en la aplicación Symfony Demo, ya que el estado de la aplicación no se reconstruye en cada petición.

El proyecto llevó cerca de un mes, con un plan Claude Max 20x (unos 200 €) y los modelos Opus 4.8, Sonnet 4.6 y en ocasiones Fable; con ajustes constantes, cualquiera de los tres modelos habría dado resultados similares, según Wurtz. Su conclusión: la IA rara vez acierta a la primera, a veces produce código descuidado o erróneo que hay que verificar, y no sustituye al conocimiento — las restricciones estrictas y deterministas de Rust la hacen especialmente adecuada para el trabajo asistido por IA, porque los errores afloran automáticamente. El código está en GitHub: jolicode/rphp.