Donc pour ceux qui ne le saurait pas encore, Derick Rethans a proposé sur internals@, la liste de diffusion des développeurs de PHP, qu'une version alpha de la prochaine version du langage soit disponible pour le 24 novembre 2010, et cela semble avoir été accepté par la communauté.

Derick ayant initié le mouvement, il semble qu'il soit devenu de fait le release master de la prochaine version de PHP.

Il sera donc chargé à l'avenir de gérer cette version du langage, autant au niveau technique que fonctionnel, en prenant les décisions qui s'imposent au niveau du code et en décidant des nouvelles fonctionnalités qui y seront intégrées.

Sur ce dernier point, il semble que l'ensemble des nouvelles fonctionnalités présentes dans le trunk, la version de développement de PHP, fera parti de la prochaine version.

Elle disposera donc entre autre des traits, du support de DTrace, de l'interface jsonSerializable, et il sera possible d'utiliser $this dans les fonctions anonymes ainsi que d'accéder directement à un élément d'un tableau renvoyé par une fonction ou une méthode.

PHP autorisera de plus la définition d'un type numérique pour les arguments des fonctions et des méthodes, mais il n'effectuera aucun contrôle à ce niveau, et ce sera donc au développeur d'en tenir compte s'il le désire via la réflection.

La prochaine version profitera également des améliorations apportées sur les entrées/sorties et la gestion de la mémoire, ainsi que sur des points spécifiques, comme par exemple une optimisation d'unserialize().

Elle apportera donc une amélioration très significative des performances, confirmée par les tests que j'ai pu effectuer.

Quelques boulets historiques vont également disparaître, même s'il y a encore une discussion en cours sur le sujet pour définir si le code correspondant est supprimé totalement des sources du langage ou ces boulets sont simplement désactivés par défaut, comme vous le constaterez dans les lignes qui suivent.

Les principaux boulets concernées sont les guillemets magiques, le safe mode, les directives register_globalsregister_long_arrays et allow_call_time_pass_reference  ainsi que la fonction import_request_variables().

D'autres modifications et évolutions plus ou moins intéressantes viennent compléter ce tableau, et une liste exhaustive est disponible dans le trunk via le fichier NEWS.

La prochaine version apportera donc un certain nombre de nouveautés et de changements dans le fonctionnement du langage.

Pour autant, les contributeurs la considère comme une version mineure car elle n'apporte aucune grosse nouveauté selon eux.

En conséquence, elle est pour le moment nommée PHP 5.4 en interne, et si cela est confirmé, nous devrions voir apparaître dans quelques temps une branche 5.4 dans le dépôt subversion de PHP.

La sortie de la version finale est pour le moment prévu avant la mi-2011, ce qui est très flou et laisse pas mal de temps à la communauté pour fignoler les derniers détails.

Évidemment, tout cela a donné lieu à quelques discussions sur internals@, notamment au sujet de la suppression des guillemets magiques, notamment sur la façon d'informer l'utilisateur que cette fonctionnalité est dépréciée ou supprimée.

Il y a également eu un bug concernant la gestion des traits dans un cas particulier qui a été remonté et corrigé dans la foulée, signe qu'il y a encore un peu de travail à fournir avant d'avoir une intégration parfaite du concept dans le langage.

La même chose s'est produite pour le support de DTrace, qui ne fonctionnait plus depuis un moment, et qui a également été corrigé.

Il y a également eu un débat au sujet de l'utilisation de la notation <?=, suite à cette demande.

En effet, cette notation n'est plus utilisable depuis que la directive short_open_tags est dépréciée.

À l'issue de la discussion, il a été décidé que cette notation sera dorénavant disponible même si le support des short_open_tags n'est pas activé.

Par ailleurs, une nouvelle RFC a été proposée afin que PHP supporte la notation binaire pour les entiers, en complément de la notation décimale, octale et hexadécimale.

Elle a reçu un accueil très favorable et cette fonctionnalité devrait être ajoutée rapidement dans le trunk, et sera peut être même disponible dans PHP 5.4.

Suite à la proposition de sortir une version alpha de la prochaine version du langage, la question des annotations est revenue sur le tapis, à l'initiative de Guilherme Blanco, l'un des deux créateurs de l'implémentation qui a fait polémique il n'y pas si longtemps.

Cependant, malgré que Guilherme ait pris des pincettes pour amener le sujet, il est maintenant avéré que les annotations ne seront pas disponibles dans PHP 5.4, et pour l'instant, il n'est même pas possible de dire si elles seront un jour intégrées au langage, car certain développeurs historiques comme Zeev Suraski y sont opposés.

Zeev pense en effet que le le coût technique et fonctionnel des annotations est bien trop élevé par rapport à ce qu'elles apportent.

Au niveau du trunk, la volonté de Derick Rethans de sortir une version alpha de la prochaine version a été un électrochoc.

En effet, en vingts jours, il y a eu environs 130 modifications effectuées sur la version de développement.

Très logiquement, la majorité de ces modifications sont des corrections ou des optimisations afin de consolider le code et améliorer la fiabilité du langage.

Ainsi, les bugs #47168, #47199, #47643, #50117, #50579, #50987, #52045, #52173, #52410, #52512, #52660, #52691, #52692, #52693, #52732, #52784, #52820, #53136, #53141, #53153, #53226, #53236, #53241, #53248, #53260, #53271, #53273, #53279, #53284, #53297, #53305, #53306, #53310, #53319, #53323, #53335, #53338, #53362 et #53366 ont été corrigés.

Il y a donc eu pas loin de quarante corrections au cours des vingts derniers jours.

Par ailleurs, les demandes de fonctionnalités #53213, #53238, #53264 et #53271 ont été implémentées, la plus intéressante étant à mon sens le support de la méthode fputcsv() par la classe \splFileObject.

Certain seront de plus intéressé d'apprendre que $_SERVER['REQUEST_TIME'] est maintenant précis à la micro-seconde.

FPM a de plus été consolidé, via la correction de quelques problèmes plus ou moins mineurs et diverses optimisations et les flux ont également subit le même traitement.

Le reste des modifications sont des optimisations et des corrections diverses en divers point du Zend Engine ou bien liées à la compilation des sources ou à suppression des boulets historiques du langage dans le cadre de la version alpha de PHP 5.4.

Le rythme a donc été élevé, surtout comparativement aux périodes précédentes.

Cependant, je pense qu'il va retomber quelques peu dans les semaines qui viennent car les développeurs vont devoir se concentrer sur les versions RC de PHP 5.2.15 et de PHP 5.3.4.

Cette rétrospective est maintenant terminée, vous pouvez reprendre une activité normale.