Thu Feb 25 2010

HipHop, 32-bit et github

Quelques conseils (rapidos)

Filed under PHP. 4 comments

HipHop sur github, ca se présente plutôt pas mal. Une petite communauté de forkers travaille à rendre la chose compilable et surtout utilisable par le plus grand nombre (pour le bien de l'humanité?). Scott MacVicar, un des responsables du projet et commiter en chef sur github, semble bien disposé à appliquer les patches et suggestions qui gravitent autour du truc. Ca le fait.

A propos de fork, je viens de mettre le mien à jour. Sans vouloir jouer les caïds (loin de moi cette idée saugrenue ;) je pense que c'est celui qu'il faut puller si vous souhaitez installer le matos sur une machine 32-bit. Car, je le répète, HipHop est 64-bit only, au moins pour un certain temps. De plus, je n'ai rien ajouté ou modifié à l'artillerie de CMake par rapport au code de facebook pour que le wiki officiel concernant la partie installation reste pertinent.

Un conseil: Installer les dépendances à la main, c'est à dire en récupérant les tarballs sur leurs sites respectifs. Ensuite, procédez aux installations avec un --prefix=$HOME/hiphopdep (ou un truc du genre). Le principe est de placer ces dépendances dans un répertoire isolé et ne rentrant pas en conflit avec quelque système de packages que ce soit. De toute manière il vous faut patcher libcurl et libevent, on n'y coupera pas. Une fois que tout est soigneusement installé, bien penser à mettre $HOME/hiphopdep/bin dans votre PATH (si vous avez installé des programmes tels que re2c ou flex) et faire un export CMAKE_PREFIX_PATH=$HOME/hiphopdep avant de lancer CMake. Normalement, ça devrait bien se passer.

Maintenant, à part compiler le bordel, compiler du php et lancer des servers ou des daemons, je n'ai pas encore eu le temps de vraiment me pencher sur ce que fait HipHop et comment ça marche, autre que les généralités librement disponibles.

Avec un peu de chance, je devrai avoir du temps dans les prochains jours pour m'adonner à l'un de mes hobbies, à savoir glandouiller devant des lignes de codes et attendre qu'une idée ou une illumination surgisse comme par enchantement. Elle est pas belle la vie ? ;)

Tags hiphop, php

Comments

  1. fch, Thu Feb 25 2010

    J'avoue que je n'avais jamais pensé à utiliser hiphop pour générer le code d'un démon ou d'un serveur.

    Tu viens de me donner une piste à suivre pour wmiirc.php (https://svn.mageekbox.net/repositories/wmiirc/trunk), mes scripts php qui permettent de piloter le gestionnaire de fenêtre X Window WMII.

    J'y utilise en effet massivement des démons pour récupérer et gérer les évenements, afficher l'heure, la charge, etc.

    Peut être qu'avoir tout cela compilé directement en C++ permettrait de gagner encore en réactivité sans sacrifier la facilité d'accès que procure PHP.

  2. metagoto, Fri Feb 26 2010

    A voir.. mais quand je parle de daemons ou de servers, il s'agit du mode d'exécution des "compiled" générés par hphp (le compiler de hiphop). "compiled" étant l'appli résultante.

    $ ./compiled -m daemon [-p 8080 -u ...]

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

    (désolé, les urls ne sont pas encore transformés en liens dans les commentaires;)

    L'appli n'est pas "forcément" destinée à être exécutée en tant que daemon à l'origine.

    > Peut être qu'avoir tout cela compilé directement en C++ permettrait de gagner encore en réactivité sans sacrifier la facilité d'accès que procure PHP.

    C'est exactement ce pourquoi hiphop a été créé. Et là je dois dire qu'ils ont fait du bon boulot. Ce truc m'impressionne!

    Initialement, par rapport aux infos qui circulaient à propos de hiphop, j'avais tout de suite été séduit par l'idée de l'utiliser pour autre chose que servir des pages web, par exemple l'utiliser pour faire des "super" scripts shell. Mais vu la taille des binaires générés (quoique, ils ne sont pas strippés par défaut), ça me parait un peu overkill.

    Reste une autre facette que je n'ai pas encore étudiée: ce qu'ils appellent "FFI" et qui permet de générer des librairies pour d'autres langages (via SWIG). Par exemple python, mais aussi du plain c++. Là je pense qu'il y a quelque chose à exploiter. J'en reparlerais le moment venu ;)

  3. fch, Fri Feb 26 2010

    Ok pour le mode "daemon".

    A voir donc comment se comporte le code d'un daemon PHP une fois qu'il est compilé avec HipHop.

    Dommage, je n'ai guère le temps actuellement de me lancer dans ce genre d'expérimentation, et pourtant, ce n'est pas l'envie qui m'en manque.

  4. metagoto, Sun Feb 28 2010

    J'ai pu effectuer quelques benchmarks. Ce que j'ai observé confirme les résultats qui commencent à circuler sur le net: HipHop est beaucoup plus véloce que la stack traditionnelle, à savoir apache+php+apc. Bon, on s'en doutait un peu, sauf que les flags d'optimisation (genre -03) n'ont été activés que récemment dans les sources officielles, ce qui a pu induire en erreur les tous premiers tests.

    Avec 3 ou 4 jours de recul, je pense que le plus gros défaut de HipHop est son build system. A base de CMake, c'est assez complexe et fastidieux. Souvent, tout doit être rebuildé et ça prend un temp non négligeable. Même chose pour le code du compilo (hphp) et là ça prend encore plus de temps. PHP et son système d'extensions est bien plus mature de ce coté là, en tout cas sur un plan fonctionnel. J'ai cru comprendre que facebook est conscient de ce problème et qu'ils comptent faire quelque chose.

Add a comment

Formating help