Contribution à PHP : exécuter des exemples de code dans le navigateur
Publié le 09 décembre 2024
Notre coopérateur Antoine Bluchet a récemment enrichi le site de PHP en y intégrant une fonctionnalité permettant d'exécuter les exemples de code directement dans le navigateur. Cette réalisation constitue à la fois une première itération et l'aboutissement de plusieurs mois de travaux qu'il a menés sur ce sujet. Antoine avait déjà présenté les prémices de ces développements lors de différentes conférences.
Focus sur WebAssembly
WebAssembly (souvent abrégé Wasm) est un standard ouvert conçu pour exécuter du code compilé de manière rapide et efficace dans les navigateurs web, tout en étant portable vers d'autres environnements et en offrant des performances proches de celles des applications natives. De nombreux langages de programmation disposent aujourd'hui d'un compilateur WebAssembly comme Go ou Rust.
Pour compiler PHP en WebAssembly, Antoine s’est servi de emscripten (une extension de LLVM, utilisée par les outils de compilation de PHP), afin de pouvoir ensuite l’utiliser comme une sandbox PHP exécutée directement dans le navigateur web. Il avait déjà démontré la faisabilité d’un tel usage lors de la SymfonyCon Bruxelles 2023.
Une première expérimentation avec API Platform
API Platform propose depuis sa version 3.2 un mode playground permettant d’exécuter le framework dans le navigateur en WebAssembly. Antoine avait présenté les tenants et aboutissants de ces travaux lors de l’API Platform Con 2023. Vous pouvez aussi retrouver ces informations sur son blog dans un article dédié : “How to create a PHP Playground for your documentation · soyuka.me”.
Une collaboration constante avec la PHP Foundation
Cette contribution d’Antoine s’inscrit plus largement dans notre engagement envers la PHP Foundation, une organisation à but non lucratif dédiée à soutenir et promouvoir le développement du langage PHP. Soutenir cette fondation a un impact significatif sur l’écosystème PHP : cela contribue à la pérennité du langage, en permettant à la core team d’assurer durablement une maintenance de qualité, mais aussi en favorisant l’innovation et l’introduction de nouvelles fonctionnalités — comme en témoigne cette contribution. Retrouvez les quelques lignes de code derrière cette fonctionnalité sur GitHub.
Dites-nous ce que vous pensez de cette nouveauté ? L’avez-vous testée ? N’hésitez pas à nous partager votre témoignage !