HHVM et Hack; ce qui les distingue de PHP

Tags

Il y a:

  1. php-ng (PHP Nouvelle Génération) qui est une réécriture par la communaué
  • HHVM (et « Hack», et XHP, des extension du language) celle réécrite par Facebook pour optimiser la performance

PHP, comme Python, stockent en quelque part une version qu’elle seule comprendra (a.k.a. bytecode) et réutilise cette version. En Python tu va voir des fichiers ".pyc" dans le même dossier que l’original ".py". Pour PHP, c’est ailleurs. Parfois ça peut être dans APC ou d’autres composantes.

PHP est comme un noyau Linux. Il y a un core, et des modules à coté. C’est ce que PECL est en fait. Une librairie d’extensions PHP en C.

Donc, ce que Facebook a fait c’est de réécrire pour enlever ce qui ralentit l’exécution et utiliser des concepts différents de ce que PHP fait en ce moment.

Il y a quelques incompatibilités avec PHP, mais c’est pas impossible à utiliser. Pour te dire c’est possible d’utiliser maintenant, pour preuve la Wikimedia Foundation (wikipedia.org) l’utilise déja dans ses datacenters et leur VM de développement «Vagrant» l’utilise aussi.

L’une des différences avec PHP avec Hack (a.k.a. XHP) est la possibilité d’intégrer directement du XML dans le code. Sans fermer les balises

Donc, pas...

<xml><?php /* ... */ ?></xml>

... ni...

<?php   $foo = "<xml attrib="value" />"; echo $foo; ?>

Mais plutôt...

<?hh
$foo = <bootstrap:page-header title={$title} />;

Étrange non?

Note le <?hh et qu’il n’y a besoin de faire une string qui ressemble a du XML.

Ce qui fait ça c’est la partie appelés XHP de Hack, qui fait partie de HHVM. L’exemple que je donne ici provient de XHP Bootstrap qui permet d’utiliser les patterns HTML/CSS provenant de la librairie connue sous le nom de Twitter Bootstrap.

XHP est donc un «layer» qui permet d’abstraire les patterns HTML dans le code backend... mais de préciser quand même où ils sont requis.