La synthèse de PHP internals publiée le 8 octobre 2026 couvre 13 sujets. La principale nouveauté concerne bcrypt. Sjoerd Langkemper met pour l’instant en pause la RFC `bcrypt_max_password_length` après les objections liées à la compatibilité. Jeff Dafoe avait repéré le problème dans du code PHP ancien et avait réagi en imposant une réinitialisation des mots de passe.
Tim Düsterhus a proposé de reprendre bcrypt-sha256 de Passlib, une bibliothèque Python dédiée aux mots de passe. La nouvelle RFC de Langkemper ajoute `PASSWORD_BCRYPT_SHA256`. Le mot de passe passe d’abord par HMAC-SHA-256, puis bcrypt reçoit une clé de 44 octets qui ne contient aucun octet nul et n’est plus limitée à 72 octets. L’exemple fourni valide un mot de passe de 200 caractères et refuse le même mot de passe raccourci d’un caractère. L’algorithme est optionnel, le comportement par défaut reste inchangé et la RFC ne prévoit aucune rupture de compatibilité. Les hachages sont compatibles avec Passlib. Ils sont plus longs, ce qui peut imposer des colonnes de base de données plus larges. Un changement du comportement par défaut relève d’un travail ultérieur.
Deux votes RFC sont ouverts. Nick S. a lancé lundi le vote End PEAR Project Endorsement après avoir dépassé la date prévue. Le texte prévoit l’archivage du site PEAR, la suppression de son installateur du paquet PHP 8.7 et une redirection de php.net vers Composer. Le vote affichait 26 voix contre 0 au moment de l’enregistrement et se termine le 19 octobre. Le vote sur `IntlRelativeDateTimeFormatter`, porté par Weilin Du, a également été relancé. Le premier vote, en septembre, s’était terminé sur 4 voix contre 1. La nouvelle version reprend la conception d’enum de Tim Düsterhus, affiche 7 voix contre 0 avec le vote de Tim et se termine le 22 octobre. Le formateur produit des expressions comme « hier » ou « dans 2 semaines ».
Le projet `Time\Instant` ne fixe toujours pas de représentation JSON. `json_encode` produit actuellement un objet vide, et les auteurs, Tim Düsterhus et Derick Rethans, estiment que l’extension JSON doit porter la solution. Une revue en 15 points a renommé les méthodes `getUnixTimestamp` en `toUnixTimestamp`, transformé `SystemClock` en singleton et ajouté `DateTimeInterface::toInstant` après l’oubli de cette méthode. La demande de renommer `now()` pour faciliter une implémentation de PSR-20 reste contestée. Larry Garfield voit dans la proposition un possible successeur de PSR-20.
La version 0.4 de Io\Terminal, développée par Pratik Bhujel, retire les interfaces ajoutées dans la révision précédente. Le flux devient la véritable frontière d’entrée et de sortie, ce qui permet d’utiliser des flux en mémoire pour tester les lectures du terminal. Les lectures de clés et de secrets acceptent désormais des flux scriptés, un processus enfant créé par fork ne réinitialise plus le terminal du parent, et de nouvelles valeurs représentent les touches Insert et Shift-Tab. Pratik veut préparer un vote après une nouvelle phase de revue.
La RFC de Matthieu Napoli sur une binaire unique intégrerait FPM dans la binaire `php`. Le démarrage passerait par `--fpm` ou par un lien symbolique. Avec Bref sur AWS Lambda, ses mesures montrent une réduction de 18 % du paquet compressé. Une application FPM minimale gagne 70 millisecondes au démarrage à froid, soit une baisse de 25 %. Les échanges portent sur la signification de `-F`, la place de FPM face à FrankenPHP et Swoole, ainsi que sur une conception qui intégrerait la CLI dans la binaire FPM.
Ilia a soumis IO Hooks à une revue de sécurité et a reproduit des plantages dans la branche de Jakub Zelenka. Du code C peut supposer qu’aucun code PHP ne s’exécute pendant une attente bloquante. Un test libérait un document DOM dans un Fiber pendant qu’un autre Fiber l’enregistrait encore. Ilia veut que les appels interceptés restent bloquants par défaut. Le site d’appel devrait signaler explicitement les points où une suspension est sûre. Jakub considère sa branche comme une preuve de concept et juge les problèmes corrigeables. Un document de conception couvre désormais les trois RFC liées. Sebastian Bergmann y voit une base pour piloter des processus enfants depuis PHPUnit. Edmond Dantes la teste avec sa RFC de planificateur interchangeable.
La proposition de délégation de Karoly Negyesi transmettrait les méthodes d’une interface à une propriété. Larry Garfield la soutient après l’accumulation d’environ 100 lignes de code relais dans des classes de requêtes Drupal. James Gilliland a cité le trait `ForwardsCalls` de Laravel. Sebastian Bergmann redoute qu’une méthode ajoutée plus tard à une interface soit transmise silencieusement. Les appels fluides renverraient aussi l’objet interne. Larry a évoqué un mot-clé de masquage. Rowan Tommins estime que les cas particuliers finissent par alourdir les propositions de ce type.
Les autres nouvelles sont plus limitées. Weilin Du a replacé la syntaxe abrégée des tableaux derrière deux-points, le parseur pouvant la distinguer d’une expression ternaire. Juliette Reinders Folmer ne veut pas poursuivre la dépréciation du préfixe `b` des chaînes sans intérêt plus large. Daniel Scherzer a proposé d’écrire le code C pour la RFC des dépréciations de PHP 8.7. Muhammed Arshid a transformé sa RFC sur les filtres en enums backed nommés `Filter\Filter` et `Filter\Flag`. Derick Rethans demande l’annulation de la dépréciation du filtrage d’entrée par défaut de l’extension Filter. Máté Kocsis souhaite un vote sur la manipulation des paramètres de requête. David Carlier a proposé un formatage des unités dans `intl` fondé sur un squelette ICU, avec des valeurs comme 5 kilomètres par heure. PHP 8.6 RC3 était prévu le 8 octobre et la disponibilité générale le 19 novembre.




Commentaires
Pas encore de commentaire — écris le premier.
Lance la discussion
Pas de compte ni de mot de passe — saisis simplement ton adresse e-mail et nous t’envoyons un lien de connexion à usage unique. Première visite ? Tout se met en place automatiquement.
Ton évaluation sera appliquée automatiquement après ta connexion.
Vérifie ta boîte mail
Nous avons envoyé un lien de connexion à …. Ouvre-le sur cet appareil — cet onglet te connectera automatiquement.
Rien reçu ? Vérifiez le dossier spam — et marquez le message « Non spam » pour qu'il arrive directement la prochaine fois.