Entrez vos identifiants

x
OU
Vous avez oublié votre mot de passe ?
Utilisateur wiki : vous n'aviez pas d'email ?

Korben - Site d'actualité geek et tech

Go Top

HipHop – Le compilateur PHP de Facebook

Je vous en parlais hier, et voilà c'est officiellement officiel :-) Facebook vient d'annoncer la naissance de Hip Hop, son compilateur PHP. Après 2 ans de travail acharné, Facebook diffuse maintenant 90 % de ses pages en utilisant leur technologie HipHop.

Ainsi, à partir d'un code PHP statique, HipHop débute par une phase d'analyse qui permet de déterminer quelles sont les fonctions et les différentes dépendances du code. Cela permet une première optimisation. Ensuite, HipHop détermine comment typer au mieux les variables afin d'économiser encore plus de mémoire et pour finir, HipHop génère le reste du code en établissant une correspondance directe entre PHP et C++.

Vous l'aurez compris, HipHop est surtout un outil qui permet de convertir du code PHP en C++ et permet de faire tourner tout ça sur un serveur HipHop, optimisant ainsi la consommation mémoire. Mais comme ils s'ennuyaient un peu chez Facebook, ils ont aussi développé HPHPi qui est un outil permettant de développer directement sur HipHop sans passer par la phase de compilation. Cela permet de débugger plus rapidement sans avoir à changer ses habitudes de codeur PHP.

Le code de HipHop sera rendu public ce soir lors d'un événèment online chez Facebook auquel vous pourrez assister en vous rendant ici. (Tout en bas)

Merci à Sylvain pour l'info



Facebook Twitter Email Copier Url

55 Responses to “HipHop – Le compilateur PHP de Facebook”

  1. Gorgo dit :

    Excellent j’ai hate de tester ça :)

  2. Doublecafe dit :

    Et concrètement , pour l’utilisateur lambda quels seront les avantages ?

  3. Ulrar dit :

    Ho excelent, ça pourrait me plaire !

  4. HaFLiNGeR dit :

    Ca peut être pas mal, a voir :)

  5. Tux-planet dit :

    Un outil qui permet de convertir un langage dans un autre… Hum autant développer directement dans le langage finale, nan ?

  6. Korben dit :

    @Doublecafe: Des sites qui se chargent plus vite… et peut être de nouvelles possibilités pour les applis web (à déterminer)

  7. Korben dit :

    @Tux-planet: Disons que tu gardes tes habitudes de coder en PHP et ensuite, c’est exécuté en C++ au niveau serveur… ça commence à devenir chaud de coder un équivalent wordpress tout en C++ par exemple…

  8. Targhan dit :

    Je n’aurais jamais pensé que cette plateforme que je déteste puisse être à l’origine d’une avancée techno intéressante.
    Mais je demande à avoir des retours chiffrés et surtout l’avis des développeurs principaux de PHP.

  9. @Tux-planet : pourquoi ?
    Tu gardes la simplicité du langage et tu laisses le compilateur faire le sale boulot tout en améliorant la vitesse d’exécution. Coder en PHP est bien plus rapide que de coder en C++ qui est bien plus verbeux … après il est plus simple sur le marché de trouver des dev PHP que des dev C++ … IMHO :)

  10. Pierre dit :

    C’est en application concrète depuis quand sur Facebook ?
    Un ptit lien vers la source ?

  11. @Korben

    je me disais justement que ça permettrait peut-être de speeder l’usine à gaz wordpress et de la faire tourner sur des serveurs moins puissant (la quète à korben pour son serveur pourrait baisser que quelques dizaines de pourcents (j’en parle avec détachement je n’ai pas donné)) ou bien peut-être mon syno DS207+ avec les gains de performance se prendrait pour un cray one et pourrait héberger mon blog ?

  12. Tux-planet dit :

    @Korben: hum, je me disais surtout que vu que Java est plus proche de C++ que Php, pourquoi il n’ont pas écrit Facebook en Java directement.

    Enfin je me trompe peut-être.

  13. Mat dit :

    @Targhan: Ils ont deja pas mal contribué en ouvrant les sources de certains de leurs projets (scribe, tornado, thrift … la liste complète est sur leur compte github)!

    M’enfin c’est clair que celui ci risque de faire un carton :-)
    J’ai hâte de voir ce que ça donne…

  14. jdo dit :

    @tux : Java est certes compilé, mais dans un pseudo-code qui nécessite d’être interpreté… donc au final, pas de gain en performance transcendental par rapport à du PHP, surtout que Java tourne en général avec une artillerie bien plus lourde qu’un mod_php des familles…

    par contre, ça m’a toujours étonné qu’il n’y aie jamais eu de vrai environnement web utilisant un langage vraiment compilé…

  15. Greg dit :

    Je ne vois pas en quoi Java est plus proche du C que PHP: ce sont 3 types de langages différents: natif, virtuel et scripté.

    Quels seraient les avantages par rapport à eAccelerator ou APC, qui vont ça à la volée et en plus stocke le bytecode dans de la mémoire ?

  16. héhé dit :

    > retours chiffrés

    D’après Facebook ça tourne chez eux depuis 6 mois, et ça donne 50% des performances en plus.

    > hum, je me disais surtout que vu que Java est plus proche de C++ que Php, pourquoi il n’ont pas écrit Facebook en Java directement.

    Il n’y a pas beaucoup de personnes qui programment en Java de leur plein gré (</troll>)

    > Quels seraient les avantages [de java] par rapport à eAccelerator ou APC, qui vont ça à la volée et en plus stocke le bytecode dans de la mémoire ?

    Java a un typage beaucoup plus strict, donc c’est un code beaucoup plus facile à optimiser (par le compiler) que du code PHP, c’est pour ça que Java est plus rapide que PHP.

  17. kalahaine dit :

    @Tux-Planet : peut-être parce que les jsp sont plus lentes encore qu’un php bien codé!

    Personnellement, je demande à voir ce que ça va donner leur truc.

  18. Greg dit :

    @héhé: eAccelerator et APC sont des optimizers pour PHP ….

  19. steph dit :

    7H30 heure pacifique on t’attend…. :)

  20. pourquoi est-il écrit g++ ? si c’est du c++ ?

    je ne connais pas java, ni php, ni vraiment c++, mais déjà c++ c’est un language à compiler alors que java à la base c’est plutôt interprété is it not ?

    d’où une plus grande rapidité escomptée surtout si tu as un compilo optimisé pour, ta bécane, un multi coeur multi thread par exemple.

    alors que java si je ne me trompe pas c’est le truc qui est fait pour s’exécuter partout nativement, tu peux pas commencer par vouloir optimiser pour ta plateforme un truc qui tourne sur n’importe quoi nativement.

    Bon pi ils ont droit de s’amuser aussi si ça les amuse

  21. Optix dit :

    Tux-planet:

    Bah au début le mec de Facebook ne s’attendait pas à une telle audience, donc il ne savait pas qu’il devait le coder en C++ depuis le début ;)

    En tout cas, ça lui fait une bonne expérience ainsi qu’à nous ;)

  22. héhé dit :

    @Greg: J’avais compris ta question comme “Quels seraient les avantages [de java qui est compilé en byte code et a un optimizer] par rapport à [PHP + ]eAccelerator ou APC, qui vont ça à la volée et en plus stocke le bytecode dans de la mémoire ?”

    Et ma réponse était que même en ayant un cache + optimizer sur Java (d’origine) et PHP (via eAccelerator ou APC), Java a des chances d’être plus rapide parce que l’optimizer peut faire du largement meilleur travail sur Java que sur PHP, à cause de leurs différences de typages, de résolution de symboles, etc.

    (Et pour être tout à fait précis, APC cache le bytecode, ce qui donne déjà un gain non négligeable, mais ne l’optimize pas.)

    Donc pour ta vrai question, l’avatange de hiphop php par rapport aux caches de bytecode c’est que là le code PHP est transformé en C++, et donc beaucoup d’opérations sont effectuées nativement par le processeur au lieu d’être interprétées par le Zend Engine. Il y a aussi un optimizeur qui semble être pas mal poussé, etc. Restent les résolutions de symboles (fonctions, méthodes, classes), faites à l’exécution, qui doivent prendre au moins autant de temps que l’exécution du code lui même au final.

  23. jaguie dit :

    @citoyenlambda: http://en.wikipedia.org/wiki/G%2B%2B

    Regarderai ça demain, mais ça sonne bien. Ceci dit, il existe déjà pas mal de solution pour compiler PHP avec les opcodes.

    Bonne soirée à tous.

  24. jdo dit :

    je viens de tilter avec un peu de recul, ce que fait ce “hiphop” c’est en fait très similaire à ce que fait la moulinette qui transforme des JSP en servlets dans les serveurs d’applications J2EE, non ?
    (ok, c’est pas très compréhensible pour les non-javaistes ;) )

  25. crevette d'@cier dit :

    l’idée est géniale, on va enfin nous lâcher sur la lenteur de PHP;
    mais si on code avec un framework genre cakePHP, est-ce que l’on va pouvoir quand même le compiler ?
    à noter que le nom de leur compilateur me rappel une émission de télévision française conçue et animée par Sidney en 1984…
    Ho mon dieu ! ce compilateur vient à peine de sortir qu’il a déjà un arrière goût “has been” ^^

  26. krg dit :

    Cela me parait étonnant tout de meme, je vois mal des .exe tourné pour une site web, http://truk.com/hu.exe?var=prout ??? loool
    Ou bien un get va appeler un exe qui renvoi des données resultant du exe?

    Enfin bref, perso, ya pas lgt j’ai coder un brute force pour des contests hack
    au debut en php compilé, puis en c++ pour voir la diff de tmp..
    Ba ya pas photo, en php c de la merde :p lol

    Tout ca pour dir que, je ne pense pas me faire chier a compiler du php pour mes appli web, et au taff je prefere mes JSP, webservice et tout le tralala :p

  27. Broz dit :

    Et sous quelle licence ça va sortir, Hiphop ? …parce que, mine de rien, au delà des performances, un langage libre, c’est important… si on doit passer à du propriétaire, ça me plaît nettement moins.

  28. jdo dit :

    @krg : j’imagine effectivement difficilement qu’on revienne au bon vieux mode “CGI” qu’on utilisait ya 15 ans :)

    je suppose que derrière il y a un serveur d’application permettant de faire tourner ça, au moins pour gérer les sessions, etc…. écrire un serveur d’application, c’est un autre boulot que de faire une moulinette qui convertit du code, du coup c’est un peu étonnant que l’article de FB n’en parle pas… affaire à suivre…

  29. héhé dit :

    @crevette d’@cier

    > on va enfin nous lâcher sur la lenteur de PHP

    C’est un mythe, PHP est pas mal du tout niveau rapidité pour un langage interprété. (il est plus rapide que python/perl/ruby)

    > si on code avec un framework genre cakePHP, est-ce que l’on va pouvoir quand même le compiler ?

    D’après la source, il semblerait que oui.

    @krg

    > Cela me parait étonnant tout de meme, je vois mal des .exe tourné pour une site web

    Ça peut être un module Apache ou une appli FastCGI

    > Enfin bref, perso, ya pas lgt j’ai coder un brute force […] en php

    Oui, si il y plusieurs langages différents, c’est pour des usages différent

    @jdo

    Les bons vieux FastCGI et similaires sont encore bien en vie.

    @Broz

    > Et sous quelle licence ça va sortir, Hiphop ?

    Licence PHP (style BSD)

  30. JB dit :

    Juste pour préciser concernant java, les sources sont compilés en bytecode qui est exécuté par la machine virtuelle mais cela fait des années que les VM java compile à la volée ce bytecode en code natif du système exécutant. On a donc des performances très proche du code natif.

  31. Repie dit :

    Cool, on va pouvoir coder encore plus comme des gros porcs :)

  32. Sn4kY dit :

    et sinon ? aucun d’entre vous ne va sur facebook ?

    Erreurs sur erreurs, dans les mails, les connexions aux fils d’actualités, les recherches etc.

    Sans déconner, la seule plateforme qui utilise cette techno est bugguée…ça ne vous viendrai pas à l’esprit que ça pourrait venir de leur “superbe techno toute méga top moumoute ?”

    Qu’ils fassent un facebook sans bugs, on verra après si leur techno est si bien que ça ou pas !

  33. Emralegna dit :

    Salut,

    @krg:

    Un exécutable ça n’est pas toujours un .exe tu sais. Plus concrètement, un .exe c’est QUE sur Windows.

    Surtout qu’on voit sur la capture « g++ » à la fin, qui est le compilateur en ligne de commande GNU/Linux, donc aucune chance d’avoir un .exe.

    Est-ce que ce genre d’outil permettra d’augmenter le potentiel de PHP, par exemple au niveau de la création probable de jeux sur le net ? Il serait intéressant d’avoir un concurrent à Flash pour cela.

  34. dededede4 dit :

    Heu…

    Que des pages php qui ne sont pas dynamique ? :-(

    Et c’est plus rapide que xcache ? :D

  35. héhé dit :

    D’après ce que je comprends de la video; hiphop est donc un serveur (http?) multi-threadé qui fait tourner les scripts compilés. Ils ont obtenus 50% de perfs CPU en plus par rapport à PHP+APC.

    Est-ce qu’il y a un article détaillé quelque part, ou une retranscription ou quelque chose pour ceux qui ont du mal avec l’anglais parlé ? :-)

  36. steph dit :

    Et sa ce télécharge ou ? Il donne ce lien mais impossible d’y acceder …. :(

    http://github.com/facebook/hiphop-php

  37. Lolo dit :

    Et bien c’est un sacré truc au final.

    Mais quitte à bosser sur un truc de se genre, pourquoi ne pas faire une bonne API pour faire du C++ pour le Web.

    Car sa fait tous un processus inutile je trouve, autant y aller directe en C++, et puis bon cela n’annoncera pas la mort de PHP si sa devait ce faire.

    Car là actuellement sa doit prendre un certain temps de parser ça et puis la suite.

    Je suis que débutant en C++ ou php et je le fais sur mon temps libre, et je préfère le C++ au php et je regrette qu’il n’y est pas de réelle Framework C++, pourtant ce langage est solide et approuvé depuis le temps.

    Mais je trouve que c’est une avancé et je crois que ce projet à de l’avenir et peut être cela va t-il démocratisé le C++ pour le Web (pas forcément un site complet, mais certaine appli d’un site).

    Est-il prévu que le projet de Facebook soit public/Open Source ou du moins libre et utilisable?

    A suivre…..

  38. steph dit :

    @Lolo: Le but c’est pas de faire du c++, le but est la rapidité d’éxécution + simplicité de codage, gain de temps de codage sa donne c++ + php. c’est aussi simple que sa :)

  39. vara dit :

    Je ne suis pas sur de comprendre un truc, si on compile du php, pourquoi il faut encore un serveur d’application ? moi je vois ca comme ca : une fois le php compilé, c’est l’executable généré le serveur si on veut. Y a plus qu’a le lancer, et c’est lui tout seul comme un grand qui se met en écoute sur un port et qui traite les requêtes… non ?

    edit : et aussi, écrire dans un language et le transformer dans un autre, c’est assez courant comme pratique, ça n’a rien d’étonnant

  40. Olivier dit :

    @Targhan: des retours ? va voir facebook, ça rame et ça plante comme c’est pas permis.

  41. cr0vax dit :

    @vara : parce que le titre de Korben est mensonger, ce n’est pas un compilateur de PHP. C’est un transcripteur vers le C++. Exactement comme quand tu codes ton webapp en Java avec les technos Google, ton code est ensuite retranscrit.

  42. Korben dit :

    @cr0vax: Mensonger, je ne suis pas tout à fait d’accord. C’est un raccourci peut être mais c’est pas faux d’appeler ça compilateur. Après je détaille dans l’article ce que ça fait exactement.

    Regarde la définition chez Wikipedia

    “Un compilateur est un programme informatique qui traduit un langage, le langage source, en un autre, appelé le langage cible, en préservant la signification du texte source. Ce schéma général décrit un grand nombre de programmes différents ; et ce que l’on entend par « signification du texte source » dépend du rôle du compilateur. Lorsque l’on parle de compilateur, on suppose aussi en général que le langage source est, pour l’application envisagée, de plus haut niveau que le langage cible, c’est-à-dire qu’il présente un niveau d’abstraction supérieur.
    En pratique, un compilateur sert le plus souvent à traduire un code source écrit dans un langage de programmation en un autre langage, habituellement un langage d’assemblage ou un langage machine. Le programme en langage machine produit par un compilateur est appelé code objet.”

    http://fr.wikipedia.org/wiki/Compilateur

  43. Benjamin dit :

    C’est mort ce truc ?
    Plus personne n’en parle :/

  44. beninsky dit :

    Perso c’est une des meilleurs nouvelle que j’ai jamais entendu!!!! Le PHP est le langage que je connais le mieux (comme beaucoup de développeurs web je pense) et apprendre qu’il puisse enfin être exécuté aussi rapidement que le meilleur des langages!!! Que demande le peuple? J’ai VRAIMENT hâte de tester cette bête :D

  45. Metal3d dit :

    Sinon depuis 4 ou 5 ans on Roadsend PCC qui compile en natif du PHP. Utilisable en microserver ou fastcgi par exemple…

    Et il est en train d’être refondu en C++, nom du projet Raven (rphp). Donc perso Hip Hop j’y crois pas, j’ai pas envie de tester, avoir un serveur spécial pour lancer du code… autant changer de langage.

    Autre possibilité, phc: http://phpcompiler.org/ qui demande un PHP compilé avec SAPI… mais pour l’avoir testé c’est juste superbement bien fait.

    Facebook est à la bourre, mais comme c’est Facebook tout le monde en parle comme une révolution… alors que ça existe depuis des années

    PS: J’ai fait un conférence sur PCC… je peux vous dire que ça donne vraiment !

    http://code.roadsend.com/pcc
    http://code.roadsend.com/rphp

  46. ANGE MICHEL dit :

    salutation

La menace des failles 0-Day

capture-vjhj

"En avril 2014, les chercheurs en sécurité de Google sont tombé sur une vulnérabilité présente à l’intérieur de la bibliothèque cryptographique OpenSSL. Petit problème, OpenSSL est utilisé sur les 2/3 des sites web qui utilisent HTTPS mais aussi par les téléphones Android. Heartbleed était né."

Si comme moi vous êtes un passionné de sécurité informatique et que vous vous demandez qu'est-ce qu'un truc comme Heartbleed peut causer comme dommages, la lecture de cet article sur les failles 0-Day est pour vous...et je vous rassure je ne parle pas du dernier film Blackhat récemment vu au ciné ;)

Lire la suite

Vous avez aimé cet article ? Alors partagez-le avec vos amis en cliquant sur les boutons ci-dessous :

Twitter Facebook Google Plus Linkedin email
Rejoignez les 55228 korbenautes
et réveillez le bidouilleur qui est en vous
abonnez-vous en savoir plus
"Vous aimez bidouiller ?" Oui j'adore l'informatique et la technologie
Suivez Korben Un jour ça vous sauvera la vie.. Ou celle d'un(e) ami(e)
  • Rejoignez les 55227 bidouilleurs de la grande famille des Korbenautes
    «Je considère que votre email est aussi important que le mien.»
    Korben
  •  
  • Site hébergé par
    Agarik Sponsor Korben
  • Univers Populaires

  • Rejoignez les 55227 bidouilleurs de la grande famille des Korbenautes
    «Je considère que votre email est aussi important que le mien.»
    Korben
  • Vidéos

  • DANS TON CHAT (BASHFR)

    Vico: ouai?
    Antoine: Bah tu vois a la soirée d'Arthur je me suis fait Marion et elle veut qu'on se mette en couple, et j'ai pas vraiment envie..
    Vico: Attends
    Vico: Tu veux dire que LA meuf avec qui tu viens de te depuceler, qui plus est super canon, te demande que vous restiez en couple et ca te fait chier.....?
    Vico: T'es vraiment pas normal, aucune raison peut justifier ca....
    Antoine: Si...
    Antoine: J'aurais moins de temps pour jouer a LoL...

    -- http://danstonchat.com/13272.html
  • Themes

  • Une astuce pour rendre

    Windows 10 plus rapide

    Si vous trouvez que Windows 10 est un peu lent, que vos applications ne se lancent pas très vite, que vos compilations prennent du temps, voici une petite astuce débusquée par Brominou pour accélérer le bouzin. Cliquez dans la zone de recherche de la barre Windows et tapez le mot clé...lire la suite

    Cryptool pour s'initier à la cryptographie

    Alors attention, ce n'est pas nouveau, mais je me suis dit que ce serait intéressant de vous en parler si vous ne connaissez pas encore. Cryptool est un logiciel open source éducatif qui va vous permettre de comprendre les principes de base de la cryptographie. Dans sa version 2, Cryptool intègre...lire la suite

    En ce moment dans l'univers "Windows"

    Voir tous les articles »