PHP-Rust : une implémentation de zéro de PHP en... Rust
mar, 13/10/2026 - 16:46
Et si on pouvait utiliser les codes et projets PHP sur un runtime totalement réécrit en Rust ? C'est le défi du projet PHP Rust. Une des difficultés est de garder une compatibilité optimale avec le code PHP tout remplaçant le moteur Zend et ses 270 000 lignes de C. Une des bases techniques du projet est phpt et les 21 500 tests officiels pour assurer la compatibilité avec le langage. Ce n'est donc pas une réécriture du code C actuel mais plutôt une réimplémentation en s'appuyant sur phpt. "Le résultat est un moteur où Rust effectue le gros du travail à coût nul : la propriété remplace zend_alloc, Rc+copy-on-write remplace le comptage de références manuel, Send/Sync fait du multithreading une propriété du type au lieu d'un sous-système (TSRM), et un processus résident rend le moteur prêt pour l'asynchrone par construction." explique le projet.
Cet environnement d'exécution PHP doit :
1 / être fidèle au langage avec une compatibilité bug à bug avec PHP 8.5
2 / assurer un haut niveau de confiance et de sécurité notamment sur la gestion mémoire
3 / apporter une couche moderne et sous la forme d'un binaire avec un serveur web natif
Créer un runtime n'est ni facile ni rapide. Sur les 13 phases du projet, les phases 1 à 9 sont complètes sauf une. Le travail d'optimisation est en cours. Un test crucial sera le bon fonctionnement de Composer, une véritable app exécutée de bout en bout. Le bytecode VM pèse environ 62 300 lignes de Rust contre 136 000. La partie HIR et compilateur représentent 19 200 lignes contre 12 400.
Selon la page du projet : le langage de base est complet et même les fonctions avancées de PHP 8.4 et 8.5 sont présentes (ex. : propriétés hooks, lazy objects). Sur la roadmap de développement, Laravel sera le prochain framework à être supporté.

