Sun Feb 07 2010

HipHop for PHP, what else?

Ne nous emballons pas... trop (peu?)

Filed under PHP. 3 comments

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 .

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 ;)

Tags hiphop, php

Comments

  1. Jérémy, Sun Feb 07 2010

    eval est un faut problème... Suffit d'écrire le code a "évaluer" dans un fichier temporaire et l'inclure pour avoir le même résultat...

  2. fch, Mon Feb 08 2010

    Hiphop est également un faux problème.

    Le site lambda n'a nullement besoin de hiphop.

    Seul les sites à trés fort trafic (qui a dit facebook ?) ont un intêret à mettre en place ce genre de choses, d'autant qu'ils n'ont aucun business model :D et qu'ils doivent donc essayer de rentabiliser un minimum leur bousin et ca commence par réduire les coûts et donc à optimiser l'optimisable.

    Je prédis d'ailleurs une vente de facebook dans pas très longtemps car lorsque l'on optimise ses coûts dans leur situation, c'est que quelque chose se prépare...

    De plus, je suis sur et certain que le coût de développement de hiphop est déjà largement amorti par les économies en ressource qu'il génére.

    Bref, au niveau mondial, je parie que seul une vingtaine de société ont ce type de besoin, parmi celle qui utilise déjà php.

    Quand à dire que hiphop fait flipper... non merci, pas plus que ca, ca va bien.

    Les sites qui ont besoin de hiphop ont leur propre framework, développé à partir d'un fork d'un framework "connu", ou pas.

    Donc, ca n'est pas un problème.

    Ceux qui doivent flipper, c'est Zend.

    En 6 mois à deux, une société qui n'est pas spécialisé sur le dévellopement php a refondu intégralement la façon d'interpréter le langage (au prix de quelques sacrifices et contorsion, mais ils l'ont fait).

    D'autre vont le faire, et Zend va perdre son monopole, et vu le peu de cas qu'ils font de la communauté, ils vont avoir mal au cul.

    Cette fiévre hiphopienne retombera d'elle même quand tous les barjos de la course à la performance auront compris que hiphop ne sert à rien dans leur cas et que les contraintes sont fortes (je paris d'ailleurs que facebook peut se permettre de rendre hiphop publique parce qu'ils sont les seuls à le maitriser et que peu de gens seront capables de le déployer).

    Et la puissance du code ouvert a été une nouvelle fois démontrée.

  3. metagoto, Mon Feb 08 2010

    @fch

    Oui, il est clair que HipHop n'est pas destiné à tout le monde et toute l'effervescence autour du projet risque de vite retomber une fois celui-ci releasé. Principalement, à mon avis, parce qu'il ne s'agit pas du tout de la même culture. Passer d'un système de scripts interprétés à quelque chose qui se compile et se déploie (avec un serveur embarqué), c'est radicalement différent. Il y a tout un tools chain et des pratiques nouvelles. Je note tout de même que la plupart des interventions qui ont suivi l'annonce officielle (blog posts etc) mettent en garde et tempèrent fortement l'intérêt de ce nouveau système, et ce à juste titre (on n'a que du vent à l'heure actuelle!).

    Si je me mets à la place des lead dev des grands frameworks, alors je me préoccuperai quand même de savoir si un support de HipHop mérite d'être envisagé et ce que cela implique concrètement. Tant que le truc n'est pas publié, ok, on ne peut rien dire de bien pertinent. Néanmoins, il ne me parait pas impossible que HipHop soit utilisé à l'avenir sur des sites modestes, si tant est que cela permette d'économiser un server (par exemple). Si tel est le cas, alors les créateurs de librairies/fw devront prendre ça au sérieux.

    HipHop n'a pas été créé en 6 mois. Il a fallu 6 mois pour que facebook migre à 90% vers ce nouveau système, mais le développement s'est effectué sur près de 3 ans (voir la conférence en video dans le post officiel).

    L'essentiel c'est que ça fasse bouger le microcosme de php et surtout que ça puisse secouer Zend, effectivement. Sur un plan personnel, la seule chose qui m'intéresse c'est d'étudier le système HipHop et jouer avec. Le déploiement effectif de sites, je m'en tappe, mais d'une force ;)

Add a comment

Formating help