La saison des RFC de PHP 8.6 s'est conclue cette semaine après un cycle de vote portant sur 35 propositions. Résultat final : 31 acceptées, 4 rejetées.

Quatre propositions n'ont pas atteint le seuil. La dépréciation de list() s'est terminée par un match nul 23–23 avec une abstention—exactement 50 pour cent—bien en deçà des deux tiers requis. La réservation des mots-clés in, out et inout a échoué à 8 contre 21. L'alias gettext _() a survécu avec 10 contre 22. Le filtre dechunk, contesté tout au long du vote, s'est terminé à 18 contre 15 avec 12 abstentions (54,5 pour cent) et reste dans le langage.

Plusieurs votes critiques se sont résolvus à partir de positions incertaines. La réservation de let a passé à 24 contre 11 avec 9 abstentions (68,6 pour cent). La réservation de is a passé nettement à 29 contre 10, malgré les préoccupations concernant la bibliothèque de test Hamcrest avec 500 millions d'installations. La suppression du flag de sensibilité à la casse dans define() a passé 41 contre 0 sans votes contraires.

Les trois derniers votes de la saison 8.6 se sont divisés 2–1. L'opérateur d'assignation pipe de Caleb White (|>=) a été rejeté à 14 oui, 12 non, 7 abstentions (53,8 pour cent), ne atteignant pas les deux tiers. Les valeurs par défaut des propriétés readonly de Nick Sdot ont passé à l'unanimité à 24 contre 0 avec 5 abstentions. Les écritures de propriétés const d'objet de Khaled Alam ont passé à 17 contre 2 avec 6 abstentions (89,5 pour cent).

Un changement d'implémentation a émergé tardivement. Ilija Tovilo a affiché une mise à jour du RFC d'optimisations de fermetures (passé 24–0 en mars). La proposition originale incluait deux fonctionnalités : un cache pour les fermetures sans état et l'inférence automatique pour marquer les fermetures comme statiques. La portion inférence a été supprimée après la découverte d'un cas limite : une fermeture peut respecter toutes les règles du RFC et néanmoins effectuer des appels d'instance via des chaînes callable comme "Foo::instanceCall" dans array_map. Tovilo a reconnu l'omission et a décidé de fusionner uniquement le cache de fermeture sans état, qui offre la plupart des gains de performance. Les développeurs doivent marquer manuellement les fermetures comme statiques pour bénéficier de l'optimisation complète.

Le premier RFC ciblant PHP 8.7 a déjà été déposé. Weilin Du a proposé IntlRelativeDateTimeFormatter—un wrapper pour le formatage de temps relatif d'ICU sensible à la locale (par exemple, "dans 3 jours", "dimanche dernier"). La discussion s'est concentrée sur la question de savoir s'il devrait accepter la nouvelle classe Duration; Du a argumenté que Duration représente du temps chronomètre tandis que le formateur a besoin d'unités (90 minutes vs. 1,5 heure, mois, trimestres), les rendant incompatibles. Le constructeur a reçu un paramètre NumberFormatter optionnel d'ici samedi.

Le développement des génériques se poursuit en dehors du processus RFC. Carlos Granados a partagé un pre-RFC basé sur la branche reified expérimentale de Rob Landers, arguant qu'elle méritait une exploration plus approfondie. Rob a suggéré de rejoindre le Discord communautaire à phpc.chat plutôt que de travailler en isolation. Alexander Lisachenko a indépendamment affiché une preuve de concept userland où les classes génériques spécialisées partagent des corps de méthodes compilées, réduisant le surcharge mémoire par spécialisation.

Le RFC d'expressions de balise natives de Liam Hammett (HTML de style JSX en PHP) a reçu la validation de T.J. L, le mainteneur de l'extension XHP, dans son premier message aux internals. Il a confirmé que les outils d'analyse statique ne peuvent pas analyser la syntaxe personnalisée—le point de friction principal avec XHP—renforçant le cas pour le support natif. Il a demandé trois ajouts : passage de contexte sans threading d'attributs, support SVG en ligne, et a noté que l'abandon des objets par balise supprime la validation à l'exécution que JSX contourne principalement via TypeScript.

Éléments mineurs : Juris Evertovskis a relevé que les expressions isset() entre crochets déclenchent toujours des avertissements malgré isset supprimant tout le reste. Le RFC des suggestions d'erreur did-you-mean n'est pas précipité—Jorg Sowa l'achèvera après le gel des fonctionnalités. Sepehr Mahmoudi a rejoint la liste des internals avec une proposition array_search_range.

PHP 8.6 bêta 1 sort cette semaine, marquant le gel logiciel. La saison des RFC est terminée.