La parole est aux speakers : Ivan Enderlin

Publié le

Jusqu’au Forum PHP 2021, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils ou elles aborderont lors de leur conférence !

La conférence

Tu as longtemps été mainteneur de l’ensemble de librairies Hoa. Pourrais-tu nous faire un retour sur cette expérience ?

Hoa a été l’un de mes projets open source les plus connus et les plus importants. Hoa a toujours été un prétexte pour apprendre et explorer de nouvelles choses, mais aussi repousser les limites de PHP. Sur ces points, c’est un succès. Je me suis servi du projet pour faire le pont entre la recherche (durant mon temps à l’université et à l’INRIA) et l’industrie, où nous avons pu implémenter des compilateurs, des parseurs, des outils de générations automatiques de tests (avec un portage dans atoum, un autre projet fabuleux). Il y a tellement de choses intéressantes avec Hoa. Avec la communauté, nous avons expérimenté beaucoup, et nous avons sans cesse porter des innovations dans PHP. Je pense qu’on peut affirmer que Hoa a toujours été connu et reconnu dans le milieu (notamment par des poids lourds comme Laravel ou Doctrine) et je suis très fier du travail effectué par la communauté. De réelles amitiés se sont aussi forgées qui perdurent encore aujourd’hui (on a commencé geeks étudiants et aujourd’hui nos enfants jouent ensemble !).

Mais PHP n’a jamais été mon langage préféré. Après 14 ans et de nombreuses histoires et aventures, la communauté a beaucoup bougé et la vie a fait que le projet a un peu ralenti. Malgré les 115 millions d’installations, et des intégrations dans de multiples projets, je n’ai plus l’énergie de m’en occuper. Des personnes sont cependant prêtes à reprendre le flambeau !

Mon analyse succincte est que je pense que la communauté s’est essoufflée en partie à cause de PHP. Un programme écrit en PHP est difficile à maintenir, notamment à cause de son typage dynamique. Et Hoa c’est 170k lignes de code ! Nous avions déjà réécrit Hoa plusieurs fois par le passé (depuis PHP 4 à 7). L’écosystème s’est aussi de plus en plus renfermé et concentré autour de Laravel et Symfony, fermant la porte à tout autre projet. La communauté de Hoa a commencé à regarder ailleurs, tout comme moi !

Après avoir travaillé sur du PHP, tu fais maintenant du Rust. Comment s’est passée la transition ?

Je me suis intéressé et j’ai suivi très attentivement le développement de Rust bien avant la sortie de la 1.0. J’ai la chance de connaître des dizaines de langage de programmation et (peut-être la malchance) d’être littéralement insatiable d’apprentissage. Je ne cache pas mon faible pour les langages de la famille ML comme Caml ou… Rust. Ce dernier s’est vite imposé comme un langage hors-norme à mes yeux. Il y a pratiquement tout ce que j’aime dedans ! Il n’y a pas eu de transition de PHP à Rust, j’ai toujours utilisé plusieurs langages en même temps dans plusieurs projets.

Je me suis beaucoup amusé avec. J’ai tenté de démarrer un projet plus important : Tagua VM, un runtime pour PHP écrit en Rust et utilisant LLVM. En cherchant des financements pour ce projet, j’ai atterri chez Automattic (WordPress, WooCommerce etc.). Là j’ai eu la chance de pouvoir m’amuser un peu avec Rust professionnellement en écrivant des extensions natives pour PHP/Zend Engine. Les outils de Rust sont tellement bien faits et le langage s’appuyant sur des fondations solides, il est facile de l’intégrer dans beaucoup d’environnements. Là, je me suis beaucoup trop lassé de PHP. On me connaît principalement pour Hoa, et donc mes compétences en PHP, mais ça n’a jamais été ce qui m’attirait le plus !

C’est à ce même moment que je suis parti d’Automattic pour Wasmer : une startup qui développe un runtime WebAssembly écrit en Rust. À propos d’intégrations, le runtime Wasmer s’utilise depuis plusieurs langages,
comme PHP, Python, Go, Ruby, Java, PostgreSQL, C, C++, D, JavaScript, Elixir, R, Swift, Zig, Dart etc. Cependant, Wasmer c’est bien plus que le runtime. Je suis aujourd’hui co-fondateur de cette startup, et il y a tellement de choses excitantes !

L’écosystème de Rust est fantastique, le langage est merveilleux, la suite d’outils fonctionne juste très bien. Avec Rust je peux apprendre et découvrir encore plus loin. C’est un langage qui reste très accessible mais qui permet de pousser très loin nos idées avec un contrôle très fin sur l’exécution, la mémoire etc.

En quelques mots et sans pour autant spoiler ta conférence, peux-tu nous introduire ce qu’est WebAssembly ?

WebAssembly (Wasm) est un format binaire d’instructions pour une machine virtuelle. Des langages comme C, Rust, Zig, Swift etc. peuvent compiler vers WebAssembly. Les instructions représentées par Wasm sont
suffisamment simples et proches du système pour que son exécution se fasse facilement. Et comme ce jeu d’instructions n’est pas dépendant du système, Wasm peut s’exécuter théoriquement partout. C’est pour ça qu’on le trouve dans des navigateurs pour le côté client, mais aussi côté serveur, notamment grâce à Wasmer ! WebAssembly a son lot de garanties et de promesses aussi, notamment le fait que la mémoire soit _sanboxed_. Sûreté, performance, format universel, navigateur comme serveur comme intégration dans plusieurs langages, bibliothèque ou exécutable… WebAssembly se montre très polyvalent et promet de changer et de marquer l’industrie durablement !

Une conférence présentée par

Autres interviews