HipHop : Une révolution pour PHP ?
La rumeur courait depuis que dimanche un employé avait laissé entendre dans une interview que Facebook travaillait sur un projet secret visant à améliorer radicalement les performances de PHP. L'annonce officielle a été faite hier par l'équipe qui travaille sur ce projet dont le nom est HipHop for PHP.
Ce projet fait suite à toute une série d'améliorations initiées ou supportées par Facebook pour améliorer les performances de PHP comme les patchs proposés pour l'extension APC.
Un fonctionnement novateur
Avant de voir comment fonctionne HipHop, faisons un rappel sur le fonctionnement de PHP. Il s'agit d'un langage de script et non un langage interprété comme Java ou compilé comme C ou C++. Cela signifie qu'à chaque exécution PHP doit analyser lexicalement puis syntaxicalement le script appelé, le transformer en OP Code, un format binaire, puis exécuter cet OP Code. La phase d'analyse du script et de création de l'OP Code peut être optimisée à l'aide d'un cache d'OP Code comme APC.
HipHop a choisi une approche radicalement différente qui consiste à transformer le script PHP en code source C++ qui sera ensuite compilé avec les outils standards de ce langage.
La transformation se fait en trois étapes :
- Analyse statique afin de déterminer qui déclare quoi et les dépendances afférentes ;
- Détermination du type C++ le plus adapté, si la variable change de type au cours de sa vie un type "variant" proche des zval du Zend Engine sera utilisé ;
- Transformation des structures PHP en code C++.
La substitution de HipHop au binaire PHP officiel vise à être transparente pour les développeurs mais bien entendu, tout cela n'est pas miraculeux et quelques contraintes existent.
Les limites
Tout d'abord, Windows n'est pas supporté et ne le sera probablement pas dans un avenir proche. Cela n'est pas un problème majeur car les serveurs de production des utilisateurs potentiels sont quasiment tous sous Unix mais cela pourrait compliquer son adoption car la majorité des postes de développement restent sous Windows.
Plus impactant, une fois compilé HipHop utilise son propre serveur web, ou son interface ligne de commande. Il est cependant possible de le coupler à Apache ou tout autre outil via un reverse proxy.
Par ailleurs, comme tout "émulation" d'un langage, HipHop ne peut être 100% compatible avec la dernière version de PHP. Il implémente aujourd'hui l'essentiel des fonctionnalités de PHP 5.2 ainsi que des extensions principales. Il faut noter que pour des raisons techniques évidentes certaines fonctions ne peuvent être supportées comme eval(), qui exécute dynamiquement du code PHP passé en argument.
L'absence d'eval() n'est pas très grave car il n'y a pratiquement aucune bonne raison d'utiliser cette fonction. En revanche, cela veut probablement dire que les assertions, qui évaluent du code à la volée pour vérifier le comportement de l'application, ne seront pas utilisables ce qui est dommage.
Quel public pour HipHop ?
Disons le clairement, en l'état actuel, HipHop n'est pas pour tout le monde. Le mode d'exécution classique de PHP a de beaux jours devant lui, notamment pour les hébergements mutualisés. La cible de HipHop est donc principalement les sites à fort et très fort trafic, à l'image de Facebook.
HipHop pourrait également être utile pour les scripts lancés en ligne de commande pour effectuer des opérations longues et récurrentes comme des imports. Ces opérations sont souvent lentes et consommatrices de CPU et de mémoire.
Révolution ou simple expérimentation ?
Il est un peu tôt pour se prononcer mais HipHop s'inscrit dans la tendance actuelle où l'on voit de plus en plus nettement se creuser un fossé entre les besoins simples des petites applications peu sollicitées, que l'on pourrait qualifier d'approche historique, et ceux beaucoup plus exigeants des applications critiques développées par des acteurs économiques de premier plan.
Le risque qu'engendre cette divergence des besoins et des moyens est une scission de la communauté PHP qui constitue l'une de ses forces. Pour le moment nous n'en sommes heureusement pas là et je doute que ce soit le but de Facebook qui une fois de plus réaffirme clairement son attachement à PHP pour sa simplicité et sa flexibilité.
Enfin, l'absence de support pour PHP 5.3 aura-t-elle un impact négatif sur l'adoption de ce dernier chez les grands comptes ?
PHP devient le troisième langage le plus utilisé selon TIOBE
La société TIOBE, spécialisée dans la qualité logicielle, propose depuis 2001 un classement des langages de programmation. La méthodologie de ce genre de classements est toujours sujet à caution mais cela a le mérite de donner des grandes tendances. Ce qui est calculé là n'est pas la qualité intrinsèque des langages, qui est impossible à quantifier, mais leur popularité à travers le nombre de développeurs, de formations et d'acteurs économiques qui y ont trait.
Le classement de décembre 2009 montre l'arrivée de PHP dans le trio de tête, juste après Java et C, passant du même coup devant C++ et Visual Basic.

A mon sens, ces chiffres illustrent deux choses : la place grandissante qu'occupent les technologies web face au client lourd et la position de fer de lance de PHP dans ce mouvement.


