hiphop

Certains d’entre vous ont peut être entendu parler d’ »Hyper PHP ». Le nom du projet est apparemment « HipHop ». Il s’agit là du compilateur complètement customisé par Facebook, pour ses propres besoins liés à la scalabilité et la montée en charge.

Ce compilateur réécrit le code PHP en C++, puis le  compile avec le bien connu compilateur G++. Chez Facebook, ils nous font part d’un gain de 50% en terme d’utilisation du CPU.

hiphop2Utilisé en production depuis 2 ans mais présenté seulement aujourd’hui à la communauté, le projet HipHop est d’ores et déjà disponible, n’hésitez pas à l’essayer

Diem

Découvrez Diem, un CMS. Ou plutôt, un CMF pour Content Management Framework. Open Source, le projet affiche fièrement sa ligne de conduite : conçu pour les sites – pas si simples. Basé sur le framework symfony 1.4 (au lieu de la 1.1 dans la précédente mouture), Diem va en effet vous permettre de mettre en place vos systèmes de gestion de contenu totalement sur mesure. Un effort a été fait sur l’interface d’administration, le SEO, l’édition inline, les outils pour développeurs, les performances… Bref, un beau projet qui promet.

Si vous êtes à la recherche d’une solution de gestion de contenu parfaitement calquée sur vos besoins spécifiques, vous devriez faire un tour du côté de Diem et des modules fournis.

Site officiel

Encore un framework

Vous étiez prévenu, le forum PHP 2009 fût une excellente occasion de découvrir un certain nombre de projets, apportant chacun leur lot d’innovations. Suite à la première conférence à laquelle j’ai pu assister, « Optimiser PHP avec un préprocesseur« , Nicolas Grekas a présenté – et tenté d’évangéliser – son framework fait maison : Patchwork.

Développé en interne, Patchwork est né comme souvent pour résoudre certaines problématiques. Ici, c’est la portabilité et la « cohérence » des applications qui intéressent son auteur.

Portabilité ?

L’objectif est ici de faciliter le déploiement des applications PHP en fonction du serveur de destination. Une fonction pas disponible ? Une autre qui a un comportement différent selon la version ? À l’instar des autotools de l’univers C/C++, Patchwork permet de se prémunir contre ce genre de situations. Concrètement, voici la manière de spécialiser un appel en fonction du contexte :

/**/if (! function_exists('utf8_decode'))
/**/{
      function utf8_decode($string)
      {
          // ...
      }
/**/}

Cohérence ?

Le mot est peut être mal choisi, mais l’idée est là. L’idée est d’homogénéiser le code en appliquant un certain nombre de règles :

  • Le même encodage (UTF-8) partout
  • CRLF vs CR vs LF
  • ‘@’ (opérateur de silence) ou non ?
  • Fonctions à substituer…

Le dernier point s’avère utile dans bien des cas : utiliser une fonction plus optimisée, rajouter des fonctionnalités… Quelques exemples concrets de substitutions ?

rand => mt_rand
md5  => hash('md5', ...)

Le préprocesseur de Patchwork se charge également de booster le mécanisme d’autoload de PHP5, et bien entendu place tous les résultats de compilation en cache afin de ne pas tout recalculer à chaque appel ; d’où le nom de pré-processeur. Les benchmarks effectués laissent apparaître un gain de performances de l’ordre de 5%.

Mon avis

Patchwork part d’un très bon sentiment et d’une problématique qui existe au sein de nombreux projets. C’est un projet jeune, déjà utilisé en production, et documenté (en français). Patchwork est une opportunité de s’amuser avec toutes les possibilités offertes par PHP5, et peut aisément servir pour « maintenir » une application vieillissante, ou sur laquelle on a peu de contrôle. En revanche, certains points pourraient être un non-sens dans bien des cas. Ainsi, la substitution de fonctions par leurs cousines plus performantes pourrait ne plus avoir de sens dès lors que l’équipe de développement intègre directement ces best-practices.

Liens :