PHP 5.3 sous Windows, plus de nouveautés qu’on le croit!

    17:49 4 11 2009

J’ai dernièrement eu l’occasion de rencontrer Hank JANSSEN de Microsoft qui a participé, avec Pierre JOYE à la publication de PHP 5.3 sous Windows. On ne s’en rend pas compte car peu de communication a été faite autour mais PHP 5.3 en environnement Windows est un véritable reconstruction du projet. Un travail important de mise à jour et de modification a été accompli et est toujours en cours.

 
La branche PHP 5.3 a introduit un nombre important de nouvelles fonctionnalités. La plupart d’entre nous les connaissent maintenant et si ce n’est toujours pas le cas, vous pouvez les consulter sur le site http://php.net/releases/5_3_0.php.

 
Ce que l’on sait moins, c’est que que cette version a été l’occasion pour les développeurs travaillant sur la version Windows de refondre complétement le projet, reconstruire une plateforme de compilation industrialisée et facile à reproduire et surtout, faire de la version Windows une véritable distribution optimisée pour cet environnement et non plus un simple portage de la version Linux.

 
Commençons par regarder le travail effectué sur le code de PHP en lui-même et ses dépendances. Les distributions de PHP pour Windows jusqu’à PHP 5.2 étaient basées sur un socle monté dans les années 90 et ayant très peu évoluée depuis. On y retrouvait notamment :

  • des librairies n’ayant pas été mise à jour et recompilées depuis très longtemps, les plus vieux binaires identités datant de plus de 12 ans,
  • des binaires dont le code source était tout simplement perdu et donc impossible à recompiler,
  • un code ayant peu profité des mises à jour de sécurité dans les 10 dernières années,
  • l’utilisation de librairies non prévues pour Windows et fonctionnant grâce à de l’émulation ou encore certaines reproduisant des fonctionnalités déjà présentes dans Windows sans en tirer partie,
  • un code optimisé pour Windows 98!

Je ne vais rentrer dans les détails, mais tout cela a été repris, mis à jour, redéveloppé afin de le rendre plus efficace et profiter des particularités de Windows. Un long travail de plusieurs mois dont le résultat est une version optimisée pour cette plateforme, qui peut maintenant passer le PHP test suite (ce qui n’était plus le cas depuis un moment) et être considéré comme une véritable branche de PHP.

Côté plateforme de compilation, le travail effectué a été tout aussi important. La plateforme existante a tout simplement été complétement désassemblée pour être reconstruite à partir de zéro.

Autrefois basée sur un portage de la compilation Linux avec des processus adaptés pour aboutir à quelque chose qui fonctionne, la nouvelle plateforme profite elle d’une véritable industrialisation, facile à reproduire et permettant à chacun de faire des ‘build’ spécifiques à un environnement Windows donné. Les outils utilisés ont tous été actualisés et permettent de profiter de nombreuses optimisation qui n’étaient pas possibles auparavant offrant ainsi de meilleures performances à PHP.

Notons que la compilation est maintenant possible en VC9. Ok, cela ne nous sera pas d’une grande utilité tant que les binaires d’Apache ne seront pas construits également avec ce compilateur, mais il semblerait que ce soit en cours de réalisation.

Seul point noir, la nouvelle plateforme ne compile pas encore les extensions PECL. Mais le travail sur cette partie est en cours et j’espère bientôt voir réapparaître le pecl4win ou un site équivalent.

Enfin, notez qu’un site dédié à Windows existe maintenant dans les « php.net sites » :

http://windows.php.net

Pour conclure PHP 5.3 dispose maintenant d’une véritable version pour Windows avec de bien meilleures performances et des possibilités d’utilisation plus vastes. Bien sûr, je ne m’aventurerais pas à la comparer à la version Linux (je crois que je viens de lancer un troll), que ce soit en terme de qualité ou de performances, mais cette évolution reste quelque chose de très positif. L’ouverture vers toutes les plateformes est un plus pour PHP et ne peut que lui être profitable.

Note : merci à Hank pour les slides qu’il m’a fait parvenir et qui m’ont permis d’écrire ce petite article.