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_globals
, register_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.
9 réactions
1 De Eric - 21/11/2010, 16:20
S'il vous plait, pas de "guillemet simple" ou "guillemet magique". Ce sont des apostrophes (magiques ou pas), du moins c'est comme ça qu'on les appelle en français. Le terme générique anglais n'a pas de sens en français.
2 De mageekguy - 21/11/2010, 16:21
@Eric : J'ai franchement hésité avant d'écrire cela, mais malheureusement la documentation française emploie ce terme.
3 De MathROBIN - 21/11/2010, 16:30
Merci^^
4 De mageekguy - 21/11/2010, 16:31
@MathROBIN : Fait attention, la dépendance te guette !
5 De MathROBIN - 21/11/2010, 16:35
Ah bah là c'est trop tard, je suis irrécupérable
Plus sérieusement, ton point régulier m'arrange, j'ai vraiment pas le temps de suivre internals@ (et le flemme de tout traduire). Un point comme le tien me permet de me tenir au courant rapidement.
6 De Maxence - 21/11/2010, 17:11
@Eric Je ne suis pas un professionnel de la typographie, mais à mon avis, le terme guillemet (http://fr.wikipedia.org/wiki/Guille...) est plus adapté car les guillemets s'utilisent par paires pour entourer une expression, ce qui correspond à leur usage en informatique où ils servent à délimiter des chaines de caractères alors que l'apostrophe (http://fr.wikipedia.org/wiki/Apostr...)) est utilisé pour marquer l'élision des voyelles finales a et e de certains mots.
7 De Kraken - 22/11/2010, 09:41
Moi aussi je dois bien avouer que je suis accroc à tes points réguliers sur l'évolution du langage (et autres billets non moins intéressants).
Je te remercie donc à mon tour pour tout le boulot abattu et le temps passé à rédiger ces synthèses pour le plus grand bonheur de tes lecteurs
8 De Nicolas Laforêt - 25/11/2010, 08:24
Hello, je suis curieux de savoir quels ont été les choses apprises via la "dream team php" qui t'ai fais changer ta vision des choses sur le "zen" php ?
Je dis ça car un parallèle avec ce qui se passe en ce moment sur @internals, ce serait / sera intéressant ! Entre un Derick et un Zeev qui veulent sortir une version 5.4 sans plus d'organisation et les autres qui veulent "industrialiser" les choses ce serait intéressant ....
A+
9 De mageekguy - 25/11/2010, 14:35
@Nicolas Laforêt : Il n'y a pas eu de changement dans ma vision du de PHP puisque je pensais qu'il n'y en avait pas.
J'ai juste découvert qu'il y en avait un, ou du moins qu'il existait quelque chose, que l'on pourrait appeler une philosophie de développement qui s'en rapproche.
J'ai prévu d'en parler dans le détail dans un prochain billet.
Et il est effectivement possible de voir un lien avec ce qu'il se passe sur internals@ actuellement, mais plus dans le sens ou cela démontre que ce
n'est pas partagé par l'ensemble des contributeurs, ou bien n'est pas connu car non formalisé explicitement.Maintenant, ne t'attend pas à LA révélation.
Tout les éléments pour comprendre ce sont visibles dans la façon dont est développée PHP, mais ils sont implicites, ce qui le rend difficile/délicat à appréhender et surtout à accepter.