Infobidouille

Facebook ouvre son langage dérivé de PHP

Depuis quelques années déjà, Facebook développe pour ses besoins internes le langage Hack, qui est dérivé du très populaire PHP, utilisé initialement par le réseau social. Ce langage est désormais ouvert à tous, Facebook l’ayant publié sous licence open source (licence BSD).

Très facile à utiliser pour un habitué du PHP, Hack en reste un langage très proche, puisqu’il vise principalement à corriger certains défauts de PHP, sans pour autant réinventer la roue, dans le but d’obtenir un code plus « industriel », plus facile à maintenir et plus stable, alors que PHP est d’habitude plutôt du genre « quick & dirty », avec un développement rapide mais propice aux erreurs et une maintenance difficile, surtout sur les gros projets…

Les principales modifications sont l’ajout d’un typage explicite des variables et fonctions, le support des classes et méthodes paramétrables avec un type, une meilleure gestion des « null », de nouveaux types de collections paramétrés qui viennent compléter les grosses lacunes de PHP à ce niveau (PHP ne gère qu’un seul type de collection, l’array, qui est un fourre-tout…), des fonctions lambda… Bref, pas mal de choses qui manquaient à PHP pour en faire un langage moderne.

Facebook a également fait un grand ménage en supprimant bon nombre de fonctions obsolètes et toutes les fonctions incompatibles avec le typage explicite. La plupart des fichiers PHP resteraient toutefois valides pour un interpréteur Hack.

Pour faciliter la migration, Facebook met à disposition des outils de conversion qui permettent de faire les adaptations nécessaires sur le code pour tirer parti de Hack, tandis que les développeurs de l’interpréteur Hack, la HHVM (Hip Hop Virtual Machine), visent une rétrocompatibilité totale avec PHP 5.

La HHVM est d’ores et déjà disponible pour Linux (avec des paquets pour les distributions les plus populaires) et sous Mac OS X (sans support officiel toutefois), et une version Windows est sur les rails. L’intégration avec le serveur HTTP se fait via FastCGI, et est donc compatible avec tous les serveurs supportant ce protocole.