HHVM de Facebook peut-il prendre la place de PHP.net ?

HHVM de Facebook peut-il prendre la place de PHP.net ? Le projet de Facebook avance à grands pas. HHVM prendrait en charge PHP 5.4 presque en totalité. Et la machine virtuelle est compatible avec 24 frameworks PHP.

En juillet 2013, Facebook faisait entrer le monde PHP dans une nouvelle ère. Le réseau social livrait une version refondue de sa technologie PHP, HipHop Virtual Machine  (HHVM). Cette nouvelle mouture se présente sous la forme d'une machine virtuelle conçue pour compiler, à la manière de la Java VM et du runtime .Net, le code PHP en bytecode. Elle compile ensuite ce dernier à la volée en code machine de bas niveau (x64). Comparable à de l'assembleur, ce code est ainsi exécuté par l'unité CPU. Avec HHVM, Facebook entend combiner les avantages d'un langage compilé en termes de performance, avec la flexibilité d'un langage de script interprété.

HHVM vs PHP Next Generation : le match de la performance

Aujourd'hui, le projet HHVM relance le débat sur le futur de PHP pour beaucoup de personnalités de la communauté. "Le Hack qui est proposé par Facebook avec la machine virtuelle HHVM intègre un mode de compilation just-in-time (JIT), qui n'est pas présent à la base dans l'environnement PHP, et qui permet d'accroître les performances d'exécution de façon non-négligeable. C'est un projet qui clairement pourrait faire figure d'alternative", nous expliquait en mars dernier Fabien Potencier, initiateur du framework PHP Symfony et fondateur de SensioLabs.

Zend avance sa contre-offensive avec PHP Next Generation

Qu'en pense Andi Gutmans, CEO et co-fondateur de Zend ? Lors d'une récente interview accordée au JDN, ce père de PHP qualifie le projet de Facebook d'"intéressant". Mais selon lui, "la communauté PHP doit rester soudée autour d'un langage, et ne pas multiplier les déclinaisons. La fragmentation n'est pas une bonne chose."

Sur la question des performances, Andi Gutmans met en avant les derniers travaux réalisés par la communauté PHP, pointant notamment le chantier phpng, ou PHP Next Generation. "Nous avons refactorisé et refondu certains points fondamentaux de Zend Engine, avec de très bons résultats. Cela montre que la performance de PHP peut être poussée par d'autres aspects que JIT - que nous n'avons pas décidé de mettre en place pour le moment", nous expliquait-il, indiquant même que sur certains benchmarks réalisés par PHP.net, la performance de phpng pouvait se révéler meilleure qu'avec HHVM.

Un code plus facile à maintenir avec le Hack ?

Nous avons aussi interrogé Bret Taylor, CTO de Facebook entre 2009 et 2012, pour savoir ce qu'il pensait des dernières évolutions de HHVM. "Au-delà des gains de performance apportés, ce projet permet de faciliter la maintenance et les améliorations incrémentales", nous a-t-il confié. Car aux côtés de la machine virtuelle HHVM, Facebook a introduit le langage Hack précisément dans cette optique. Il faut dire que les besoins du réseau social en matière de maintenance de code PHP sont immenses. Egalement supporté par la VM, il permet d'ajouter un typage statique au développement PHP, sans que ce dernier soit obligatoire dans l'ensemble du code et sans qu'il gêne la phase de compilation. La spécification des types permettant ensuite une meilleure appréhension de l'architecture du code, et la possibilité de mieux gérer les impacts des modifications réalisées.

De son côté, Fabien Potencier insiste : "La grande question aujourd'hui est de savoir si cette nouvelle implémentation peut se démocratiser. Si elle parvient à être compatible avec le langage PHP, cela favorisera son adoption." Et Fabien Potencier de préciser que Twig et Symfony fonctionnent sur HHVM. La machine virtuelle de Facebook prendrait elle déjà en charge presque entièrement PHP 5.4. Facebook affiche par ailleurs 27 frameworks et outils PHP compatibles avec HipHop (parmi lesquels Drupal et Laravel). Le chantier avance donc à grands pas. Finalement, HHVM aura eu sans doute au moins le mérite de venir challenger le projet PHP sur la question des performances.