Ce genre de chose est loin d'être nouveau, Roadsend PHP propose depuis bien longtemps un compilateur PHP natif...
Ce genre de chose est loin d'être nouveau, Roadsend PHP propose depuis bien longtemps un compilateur PHP natif...
HipHop confirme ce que je disais dans mon premier post dans cette thread, à savoir que C++ est en train d'opérer un retour (ou une simple arrivée, en fait) dans le monde des langages pour applications web. Personnellement, je trouve que c'est tout naturel et m'étonne que cette prise de conscience ne soit pas intervenue plutôt. A la base, C++ est conçu pour supporter des charges importantes tout en optimisant la mémoire. Les gros sites web actuels n'ont rien à envier aux larges appli desktop. Bref, c'est une évolution naturelle en l'absence de technologies miracles et qui fassent consensus dans un style JIT (génération de code machine Just In Time). Oui bien sûr, il y a java et .NET.
A ce propos, les info (les bruits de couloir, les rumeurs?) concernant ce que facebook nous préparait allaient plutôt dans le sens d'une solution basée sur du JIT, justement.
Ce que facebook nous propose est différent. hiphop est avant tout un "transformeur de code" (et dans un second temps un runtime 100% détaché du runtime de php). Ca transforme du code php en code C++. Ensuite, ce code C++ est compilé de manière traditionnelle pour créer un executable.
Actuellement, 2 types d'executables sont possibles:
- un "tout en un" qui fait office de server web en plus du travail spécifique implementé initialement en php. Il s'agit d'un process multithread.
- un simple programme en ligne de commande
A terme, facebook veut proposer une solution spécifiquement adaptée à apache, ainsi que du fastcgi.
Quelque part, on ne peut pas faire mieux que ce que facebook propose en terme de performances et de ressources utilisées: laisser un compilo C++ faire le travail final à partir d'un code C++ optimisé (ça c'est ce qu'ils prétendent, mais bon, en théorie, ça se tient). Néanmoins, cela implique quelques restrictions, et non des moindre.
Tout d'abord, hiphop ne supporte qu'environ 90% de php 5.2 (core et extensions standard). Supporter php 5.3 est dans la roadmap (heureusement!). De plus, un certain nombre de features vraiment dynamiques de php ne sont et ne seront pas implémentées. Parmis lesquelles:
- eval()
- create_function()
- preg_replace() avec /e
- bidouiller avec l'ordre de déclarations des symboles (functions, classes..).
Cependant, il faut savoir que facebook tourne à 90% avec hiphop à l'heure actuelle. Il s'agit donc d'un projet déjà en production.. et sur pas n'importe quel site!
D'un point de vue utilisateur, pour bénéficier de hiphop, il faudra avoir accès à un compilo C++ sur le server (g++). Pour les shared hosts, ça risque d'être limité.
Il ne sera pas possible d'utiliser des extensions php non standard, à moins que celles-ci aient été réécrites spécifiquement pour hiphop (ce que facebook semble avoir fait pour certaines).
Le moindre changement dans le code d'un script php entrainera une nouvelle phase de transformation puis de compilation. Pour un "scripteur", ça doit être quelques chose d'assez frustrant (facebook propose aussi HPHPi, un interpreter, mais destiné au dev/debugging).
Pour finir, le plus gros problème à mon avis, est le fait que hiphop fournisse son propre runtime: un changement ou une addition dans le php traditionnel (celui de Zend) ne sera pas automatiquement répercuté dans hiphop. Il faudra que quelqu'un fasse ce réajustement. A terme il pourrait y avoir un décalage entre ces deux implémentations de php. Il y aura le "vrai" php de Zend d'un coté et le php qui marchera avec hiphop de l'autre (et c'est déjà le cas puisque certaines features dynamiques ne sont pas supportées par hiphop).
Oui c'est la solution pour les performances,Pourquoi ne pas faire le pas, personnellement je ne connais que WT,pour faire du C++ en Web !
Connaissez vous d'autres possibilités ?
Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde
Mes Articles/Critiques :
Merise - Guide pratique
PHPExcel
PostgreSQL : Administration et exploitation d'une base de données
PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle
Partager