PHP 5.1 est sorti, SAUF QUE...

PHP 5.1 est sorti hier avec pas mal de gros changements :

  • Une ré-écriture complète de la gestion des dates ;
  • Des performances améliorées par rapport aux versions 5.0.x ;
  • Pas moins de 30 nouvelles fonctions ;
  • Plus de 400 bugs corrigés ;
  • Mises à jour des versions de PCRE, SQLite, PEAR, etc.

Tout cela est bel et bien beau SAUF QUE, pour ma part, plusieurs choses me chiffonnent.

La guerre des langages de programmation

Après la guerre des systèmes d'exploitation (tout le monde se prépare à contrer la sortie de Windows Vista), après la guerre des navigateurs (lire à ce propos le billet de Tristan Nitot intitulé Un allié de poids pour Firefox), nous voici à l'ère de la guerre des langages de programmation : il faut encore et toujours être meilleur, plus rapide et plus performant que les autres et les versions se succèdent à un rythme fou. Le but avoué de PHP 5 (et du futur PHP 6) est bien de pouvoir atteindre, voire dépasser les concurrents comme .NET ou Java afin de pouvoir aussi jouer dans la cour des grands et s'imposer en entreprise...

Mais que faire d'une version PHP 5.1 alors que PHP 4 est encore présent à plus de 94% sur les serveurs (source Nexen.net, pour le mois d'octobre 2005) ? Ce qui me fait peur, c'est que PHP 6 est déjà en chantier (lire par exemple Sitepoint : PHP6 Planning ou Minutes PHP Developers Meeting)...

PHP s'alourdit

Dans son annonce de sortie de PHP 5.1, Armel Fauveau de PHPIndex souligne :

A propos des fonctions faisant une première apparition avec cette nouvelle version de PHP, certaines semblent totalement inutiles. Citons le cas de array_product(). On ne peut que déplorer la surcharge permanente de PHP, au fil des versions, par des fonctions built-in d’un intérêt plus que douteux.

En effet, j'ai remarqué que sous Windows, le fichier php5ts.dll qui contient l'ensemble des fonctionnalités de PHP est passé de 3 557 Ko à 4 173 Ko, soit une augmentation d'environ 500 Ko ! J'espère que ça n'est pas au détriment des performances...

Et la compatiblité dans tout ça ?

Un des problèmes classiques dans un changement majeur de version, c'est la compatibilité avec les versions précédentes... J'ai eu la joie d'avoir quelques problèmes lors de tests avec cette version 5.1.

J'ai développé un script en ligne de commande qui fonctionne très bien en PHP 5.0.5 et qui "plante" lamentablement avec la version 5.1, voici la fonction incriminée :

<?php
function wscriptRun( $strCommand, $bWaitOnReturn = FALSE ) {

    $cmdline = "cmd /C $strCommand";
    $WshShell = new COM("WScript.Shell");
    $oExec = $WshShell->Run($cmdline, 0, $bWaitOnReturn);
    
    return $oExec;

} // end of 'wscriptRun()'
?>

Cette fonction permet de lancer un programme externe via le Windows Script Host présent sur Windows en passant par les fonctions COM. Le fait de passer par cette fonction me permet de lancer des applications comme Apache ou MySQL de manière totalement parallèle et de continuer mon script PHP courant. Le fait est qu'en PHP 5.1, le script se termine brutalement, sans autre forme de procès...

Autre exemple, j'ai découvert récemment l'extension WinBinder permettant de créer des applications Windows en PHP et là encore, plantage avec PHP 5.1 ! Il s'agit cette fois d'une erreur au chargement de l'extension indiquant que la fonction _zval_copy_ctor ne peut pas être localisée dans la librarie php5ts.dll alors qu'il n'y avait aucun soucis de ce genre avec les versions précédentes de PHP ; j'ai fait une erreur quelque part ?

Toujours concernant la compatibilité, il faut encore noter - entre autres - un problème avec les sessions ; mais fort heureusement le PHP Group a créé une procédure de mise à jour permettant de voir ce qui fonctionnera ou ne fonctionnera plus lors du passage vers la version 5.1 ; ouf, nous voilà sauvés !

Mise à jour du 29 nov. : la version 5.1.1 est annoncée ! Déjà des corrections de bugs dont la suppression d'une erreur fatale quand un fichier se termine par un commentaire (si, si, tu parles d'une avancée !) et surtout la suppression de la classe Date afin d'éviter un conflit avec la classe PEAR::Date. Mais si on en croit ce commentaire sur Linuxfr.org, il s'agit surtout de retirer une classe Date vide qui a été introduite dans la dernière version RC de PHP 5.1...

Posté le mardi 29 novembre 2005 dans .

Commentaires

Ajouter un commentaire

Il n'est plus possible de réagir à cette entrée directement mais si vous pensez que votre intervention peut être intéressante, envoyez-moi votre commentaire, je l'ajouterai ici en votre nom.