HipHop for PHP, what else?
Ne nous emballons pas... trop (peu?)
Beaucoup de choses ont été dites à propos du truc révolutionnaire que facebook nous préparait pour php. Les spéculations sont allées bon train. On a eu droit à du JIT (très en vogue actuellement, notamment grace à LLVM), une réécriture du runtime de php, j'en passe et des meilleurs.
Finalement, l'info officielle est tombée le 2 fev via un post du lead developer en personne, Haiping Zhao. Inutile de vous dire que ce mec là, aux allures très sympathiques par ailleurs, va être soit adulé soit haï par toute la communauté php, du simple rédacteur de templates aux membres les plus influents du PHP Group.
OK. Donc le truc s'appelle HipHop for PHP (lien de github, qui n'existe pas encore à cet instant précis). Je ne vais pas revenir sur ce que l'on apprend à partir du post officiel de Haiping. Pour ça, je vous conseille ces deux billets en fançais ou encore celui là.
Maintenant, que pouvons-nous dire d'autre sur HipHop? Tout d'abord, j'ai comme l'impression que le code source ne sera pas divulgué de si tôt contrairement à ce que l'on pouvait attendre d'après le post officiel (en fait, j'espère que je me goure). HipHop et toute sa suite doit être une usine à gaz, tout du moins sous sa forme actuelle, c'est à dire spécifique à facebook. Voir les interventions de Scott MacVicar et Haiping Zhao ici et ici sur le google group du projet. HipHop utilise CMake comme build system. SCons ça l'aurait mieux fait quand même!
Ensuite, comme attendu, toutes les extensions de php (standard et tiers) doivent être réécrites. Haiping dévoile une liste du travail déjà accompli. Un peu plus bas dans cette même thread, on apprend que PDO sera supporté, tout du moins l'interface pour les quelques drivers les plus utilisés. Je n'ose pas imaginer le chantier que ça doit être. Un travail de forçat. Toujours plus bas, il parle d'une extension memcache maison qui devrait également être mise à disposition du public (avide de sensations fortes?).
Pour ceux qui ne dorment plus depuis l'annonce du non support de eval() dans HipHop: lâchez les calments et les somnifères, la fonction est déjà implémentée et fonctionne en partie via HPHPi (l'interpreter). Inutile de dire qu'il vaut mieux s'en passer et qu'il n'a pas fallu attendre HipHop pour ça! Même chose concernant create_function('with literal string'), c'est bon, ça fonctionne.
Autres goodies, et non des moindres car potentiellement très utile: FFI ou comment générer des librairies statiques et dynamiques (.a et .so) à partir de sources php pour un interfaçage avec d'autres langages (apparement avec SWIG). Source. Imaginons que ça fonctionne bien. Putain, ça le fait carrément!
Personnellement, j'attends avec impatience la release du projet, et je suis parfaitement détendu, probablement parce que je n'ai rien à perdre ni à gagner: je ne suis pas un développeur php ;) J'imagine une certaine angoisse latente chez les responsables de frameworks (Symfony, Drupal etc). Est-ce que ça va compiler? Dans quelle proportion va-t-on devoir réécrire notre code? Qui est le connard qui a insisté pour utiliser eval()? J'ai comme l'impression que certaines roadmaps vont subir quelques légers bouleversements...
En tout cas, je note une chose: C++, tu es vraiment le meilleurs ;)