RFC: Integer Semantics
La RFC Integer Semantics visait à améliorer la cohérence de PHP entre plate-formes différentes, en implémentant les changements suivants :
NaN
etInfinity
seraient toujours égaux à0
lorsque transtypés en entiers,- les décalages bit-à-bit d’un nombre négatif de bits seraient interdits,
- le décalage bit-à-bit vers la gauche d’un nombre de bits supérieur à la taille d’un entier donnerait toujours
0
, - et le décalage bit-à-bit vers la droite d’un nombre de bits supérieur à la taille d’un entier donnerait toujours
0
ou-1
(en fonction du signe)
En effet, aujourd’hui, une partie de ces manipulations a un comportement qui dépend de l’architecture et de la plate-forme sur laquelle tourne PHP.
Cette RFC vise donc à uniformiser les choses, en considérant que c’est le rôle d’un langage de haut-niveau comme PHP.
Les échanges que nous avons eu sur la mailing-list php-internals@afup
montrant assez bien que nous étions globalement d’accord sur le fait qu’uniformiser le langage est une bonne chose et que les développeurs travaillant avec un langage de haut-niveau ne devraient pas avoir à se soucier du type de détails que veut corriger la RFC, j’ai posté en ce sens sur internals@.
Cette RFC a été acceptée quelques jours après et le comportement de PHP 7, pour ce qui concerne quelques cas spécifiques de manipulation d’entiers, devrait donc être moins dépendant de la plate-forme sur laquelle nos applications sont exécutées.