Le plus gros bénéficiaire de ce travail a été mysqlnd sur lequel Andrei Zmievsky ayant effectué un bon nombre d'améliorations.

Le pilote natif pour mysql de PHP devrait donc se révéler plus fiable et plus efficace dans la prochaine version du langage.

Petit détail qui peut avoir son importance pour les utilisateurs de token_get_all() comme moi, la version du trunk de cette fonction renvoit maintenant FALSE en cas d'erreur, et non plus une chaîne vide.

Cela n'a strictement aucune conséquence si vous utilisez l'opérateur == pour détecter l'erreur éventuelle, mais si vous préférez l'opérateur ===, une mise à jour de votre code sera certainement nécéssaire.

En terme d'ajout, le plus intéressant sur ces dix derniers jours a été celui de la nouvelle interface de bufferisation de sortie (sic), décrite dans la RFC correspondante.

Cette nouvelle interface, qui a pour but de rationnaliser la gestion de la bufferisation de sortie au niveau du Zend Engine, le moteur de PHP, a d'ailleurs fait une bonne surprise à son créateur, Mickael Wallner.

En effet, ce dernier pensait que sa modification allait nuire au performance du langage, mais il semble que ce soit plutôt le contraire.

Un rapide test a en effet montré que la nouvelle interface est 40% plus rapide que l'ancienne, et consomme pratiquement 60% moins de mémoire.

Ces chiffres sont évidement à prendre avec précaution, car il ne s'agit que d'un test brut qui n'est pas représentatif d'un contexte d'éxécution réel, mais même s'ils ne sont vérifié qu'à 50% avec du code de production, le différentiel est tout de même très significatif.

Cette modification, couplée au travail d'optimisation déjà effectué, va donc encore doper les performances de PHP.

Dans un autre registre, l'implémentation des traits se poursuit, avec l'ajout de leur support au niveau de l'interface de réflection, qui supporte de plus maintenant la méthode reflectionClass::isCloneable().

Dernière amélioration, le support de Berkeley DB 5 a été ajouté à la couche d'abstration de base de données dba.

Par ailleurs, le nettoyage du trunk se poursuit, avec la suppression de fichiers d'information obsolètes ou leur mise à jours s'il y a lieu.

Enfin, les bugs #36424, #51911, #51905, #51899, #50762, #50976, #50755, #51847 et #51847 ont été corrigés.

Je ne peux d'ailleurs m'empêcher de relever ce magnifique commentaire tout en finesse et délicatesse fait par Dieu Rasmus au sujet du bug #51847 :

Someone in libintl world decided it was a good idea to do:

#undef setlocale
#define setlocale libintl_setlocale

That means, of course, that any use of "setlocale" by the
preprocessor now becomes libintl_setlocale which means we
no longer have a _zif_setlocale symbol in string.o, but we
magically have a _zif_libintl_setlocale symbol. The linker
is obviously not very happy about this when basic_functions.o
tries to find _zif_setlocale.

So, let's not do that again.

J'aimerais avoir autant de diplomatie...

Et comme prévu, entre le moment ou j'ai écris l'introduction de ce billet et maintenant, c'est reparti de plus belle à propos du type (hint|chek|weak|jiggl)ing sur internals@.

Heureusement, pour pimenter/varier un peu les choses, il y a également un débat (moins virulent) au sujet de PHP Data Object aka PDO, pour définir si ce dernier doit supporter (ou non) au niveau de ses pilotes les spécificités des bases de données sous-jacentes.

Lequel des deux combats débats sera terminé clos le premier, difficile de le dire, et encore plus difficile de prédire les issues solutions qui seront retenues.

À contrario, il se confirme que les jours des expressions régulières POSIX sont comptés, puisqu'elles avaient été marquées comme étant dépréciées pour PHP6 et qu'elles le resteront dans le trunk, du moins pour le moment.

Il va donc falloir cesser d'utiliser les fonctions ereg_* si ce n'est pas déjà fait.