Au revoir PHPNg, bonjour PHP7

Au cours des derniers mois Zend a buzzé grâce à différents benchmarks autour de leur refacto du php engine nommée PHP NG (pour PHP Next Generation).

Ce qui a conduit à PHP Ng

Le but initial de Zend était d’implémenter dans le moteur de compilation de php un système JIT. Cependant après plusieurs essais concluants en gain de perf sur des benchmarks simplistes, ils se sont rendus compte qu’actuellement la compilation JIT n’apportait aucun gain de performance aux applications réelles.

Après recherches Zeev – qui a conduit les travaux sur phpng – a pu constater que le problème venait de typages internes utilisés dans le moteur de PHP. Avant donc de passer à la compilation JIT il a été défini chez Zend qu’il fallait déjà résoudre ce problème de typage interne.

Après plusieurs mois de travail en interne, PHP Ng est né avec les benchs qu’on a pu découvrir.

Les inconvénients de PHP Ng

PHP Ng nécessite une reprise de la plupart des extensions du coeur. L’ensemble des extensions PECL est également à reprendre. Certains tests unitaires du coeur sont encore en échec et Zend travaille à résoudre ce point.

PHP Ng regroupe également pas mal d’autres modifications qui auraient pu être découpées et proposées autrement. Le travail a également fait alors qu’en parallèle de nombreuses modifications ont été réalisées pour améliorer le support des systèmes 64 bits, rendant le code difficile à merger.

Au revoir PHP Ng, Bonjour PHP7 !

Il y a quelques jours une RFC a été ouverte par Zeev pour le merge de PHP Ng dans la master de la prochaine version majeure de PHP (nommée donc PHP 7). Si la manière de faire a suscité une levée de boucliers – le fait que le travail ait été fait en « closed-source » avant de proposer un merge massif du type tout ou rien notamment – le vote a été clos le 14/08/2014 avec pour résultat 47 pour et seulement 2 contres.

Une partie importante de la communauté a d’ailleurs soulevé le fait que si on doit vivre pendant 10 ans avec PHP 7, il était important que PHP 7 démarre avec un critère de performances dans ses gènes, a fortiori si ce merge permet d’intégrer de manière efficace de la compilation JIT.

Les liens :

Vous aimerez aussi...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *