Wed Feb 17 2010

Vrac

blog, hiphop, xhp

1 comment

Trucs en vrac #1

En vrac:

XHP

J'en parlais dans mon billet précédent, et bien c'est chose faite, mes patches ont été mergés dans la branche master du projet sur github. Maintenant quant à réellement utiliser l'extension, là franchement je n'ai rien fait mis à part lancer la tests suite.

HipHop

Toujours dans un autre billet, j'avais émis l'hypothèse que le code source de HipHop ne serait pas releasé de si tôt. J'ai l'impression que ça se confirme. D'une part parce que leur build system et les dépendances sont trop spécifiques à l'environnement de facebook et d'autre part parce que la team semble vouloir releaser un produit en mesure de fonctionner out of the box avec des projets aussi populaires que WordPress ou PHPUnit. C'est pas mal quand même. Si le bordel est capable de faire tourner PHPUnit alors y a de bonnes chances que beaucoup d'autres projets le soient également. Plus d'info dans le wiki ainsi que dans un post de Scott MacVicar sur le google group. Au passage on y apprend que la dernière version de boost est finalement supportée. C'est une bonne nouvelle.

Design du blog

Ce blog arbore un tout nouveau design à la con, je suis d'accord. Je ne pense pas qu'il va rester en place bien longtemps. C'était juste pour tester quelques trucs CSS3 de base. De plus, je n'ai à moitié aucune idée de comment toute cette daube se comporte dans IE et Opera (en fait, si, j'en ai une vague idée).

Parser de tweets

Je me suis enfin remué le cul pour implémenter un parser de tweets pour ce site qui prenne en charge les at, hash tags etc. Bon, c'est du rapidos, OK. En fait je me suis aperçu qu'il n'existe pas vraiment de lib de parsing de tweets en C++. Un de ces 4 je détaillerais le fonctionnement de ce site, notamment comment ça se fait que le backend est en C++.

Wed Feb 10 2010

PHP

extension, php, xhp

0 comment

Compiler l'extension XHP de facebook

Jamais autant parlé de facebook que depuis une semaine. Commence à devenir relou!

XHP est une extension développée par facebook qui augmente la syntaxe de php en permettant d'écrire des fragments html au sein même des scripts. Ca a la couleur de E4X mais le but premier de XHP est de garantir un document correctement formé et respectant un schema défini. On a donc une sorte de mix entre E4X et RELAX NG. Le but est louable.

Ce court billet n'a pas vocation à présenter l'extension. Je vous invite à lire la présentation faite par son auteur ainsi que les pages wiki sur github (là où réside le code source, nous y reviendrons). A voir aussi, un billet de Rasmus Lerdorf qui a effectué des benchmarks. Je vous laisse matter les conclusions.

Pour compiler l'extension, il faut l'artillerie usuelle nécessaire à la modification de la grammaire php: flex, Bison et re2c. RAS pour ça. Le problème c'est que ça ne compilait pas chez moi. Mon php de test est un CLI 5.3.1 en mode debug ainsi qu'en thread safety forcée (--enable-maintainer-zts). Il y a un oubli de TSRMLS_CC dans ext.cpp mais également un problème d'initialisation de globals dans le MINIT. Un fork patché est disponible sur github ici en attendant que le repo officiel prenne en compte les patches.

Est-ce que ça vaut le coup d'utiliser cette extension? C'est une bonne question simon! Avec HipHop peut être bien? En tout cas Marcel Laverdet, l'auteur de l'extension, précise que facebook lite tourne sous HipHop et XHP. Pour facebook lite, cherchez pas, suis pas inscrit.

Sun Feb 07 2010

PHP

hiphop, php

3 comments

HipHop for PHP, what else?

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

Fri Jan 15 2010

Vrac

blog, extension, php, SplClassLoader, v8

0 comment

Des nouvelles from the front

A tous les abonnés du flux et les intrépides qui utilisent encore leur browser pour se rendre sur des sites, non, je n'ai pas oublié qu'il faut que je fasse la partie 2 après avoir publié la partie 1 sur les extensions php.

En parlant d'extension, SplClassLoader a fait son petit buzz sur twitter... enfin, je me comprends. Moi qui suis un noob de twitter, j'ai pu assister aux razias de bots et autres api sniffers qui déferlent sur ce site dès qu'un tweet est balancé ou RT. On n'arrète pas le progrès. Toujours est-il que j'ai obtenu un accès au PHP Standards Working Group mais j'ai comme l'impression que les protagonistes s'en foutent (et c'est leur droit). C'est juste histoire de clarifier les choses puisque par ailleurs certains me poussent pour que l'extension fasse son entrée sur PECL. Mais en tant qu'outsider, ma philosophie c'est plutôt du style "démerdez-vous" ;)

Ressortir les vieux projets des cartons, d'habitude, je déteste ça. Toujours est-il qu'à mes heures perdues, je suis actuellement en train de réécrire une extension php (encore?) qui embarque V8, le fameux moteur javascript de google. Son api est en C++, l'extension est en C++. J'ai viré une dependance initiale à la libraire boost pour simplifier l'installation (au cas où quelqu'un daigne s'y pencher). J'en reparlerai un de ces 4.

Voilà, maintenant vous savez tout. Non, en fait, vous ne savez rien mais c'est pas grave.

« newer older »