Le récapitulatif hebdomadaire des internals du 9 septembre 2026 s'ouvre sur trois corrections : PHP 8.4.25 était une version de correctifs, non de sécurité ; les contributeurs libxml-rs non nommés étaient James Gilliland et David Carlier ; et Tim Düsterhus était en désaccord avec Sjoerd sur le fond, contrairement à ce qui avait été dit.

L'histoire principale est un vote qui a duré 56 heures. Osama Aldemeery a ouvert vendredi le vote sur PREG_THROW_ON_ERROR, un drapeau optionnel transformant les erreurs PCRE en PregException. Tim Düsterhus, auteur de la politique des throwables de PHP, a voté non dans l'heure. Ses raisons : un motif qui ne compile pas conserverait son avertissement tandis que l'exception ne porterait que le maigre texte de preg_last_error_msg, et une exception levée dans un callback preg_replace_callback traverserait sans enveloppe, alors que la politique exige qu'une extension enveloppe ce qu'elle appelle. Osama a répondu qu'envelopper l'exception d'un callback produit une PregException sans erreur preg correspondante, pendant que preg_last_error() ne signale rien. La correction exige une hiérarchie de trois classes. Robert Humphries a estimé qu'un motif invalide ou du UTF-8 défectueux sont des erreurs du programmeur, donc sans doute PregError. Osama a retiré le vote dimanche soir : le drapeau viole la politique des throwables, et cela ne se corrige pas en cours de vote.

Gina P. Banyard veut que PHP cesse de corriger une classe de plantages du moteur que seuls fuzzers et LLM déclenchent : des use-after-free où un gestionnaire d'erreurs libère la variable ayant déclenché l'avertissement. Chaque correctif impose une gymnastique de refcounts payée en performances par tous, et la plupart des déclencheurs sont des dépréciations que PHP 9 supprimera. Elle demande un consensus, idéalement sans RFC, pour que les callbacks modifiant l'état du moteur soient un comportement indéfini. Ilia Alshanetsky préfère des corrections au cas par cas. Ilija Tovilo dit que cette approche a déjà été tentée ; il souligne le coût des faux positifs pour l'équipe sécurité et annonce avec Arnaud un RFC d'atténuation. Tim Düsterhus ajoute que PHP 9 apportera ses propres dépréciations.

Côté PEAR : Chuck Burgess du PEAR Group a enfin répondu et accepte d'étudier la fermeture du site et le retrait de PEAR du source PHP. Nick S. veut retirer la ligne du RFC sur les mainteneurs injoignables ; Larry Garfield et Tim Düsterhus jugent ce changement mineur, permettant un vote après une semaine de refroidissement. Rowan Tommins note que Chuck est l'un des huit membres du PEAR Group : son accord est une voix, pas une autorité. Les comptes utilisateurs PEAR sont perdus, les données de bugs irrécupérables. Derick Rethans veut un site en lecture seule un an, puis une archive sur museum.php.net.

Luca Rodenhäuser a clos le fil strict-identifiers sans RFC, remerciant Claude Pache, Rowan Tommins et Larry Garfield de l'avoir convaincu. La question de savoir si les identifiants non-ASCII sont une fonctionnalité supportée reste ouverte : le manuel dit qu'ils fonctionnent par accident, mais on en compte 1 447 dans les 5 000 paquets les plus populaires. Il enverra une PR de documentation décrivant le comportement actuel, et laisse une offre : un avertissement du compilateur sur les caractères invisibles dans les noms, 68 cas sur un demi-million de fichiers.

Le RFC de Sjoerd Langkemper faisant lever une exception à octdec, hexdec, bindec et base_convert sur entrée invalide n'est pas passé au vote comme prévu. Il demande quelle exception utiliser. Rowan Tommins : Exception plus une sous-classe dédiée, jamais SPL, peut-être BaseConversionException. Tim Düsterhus lancerait une simple Exception, car ces fonctions vivent dans standard et pourraient être redessinées dans un espace de noms int ou number.

Le débat sur les performances continue. Larry Garfield estime que les benchmarks sont un point de données parmi d'autres : 50 % plus rapide en C diffère de 0,5 %. Tim Düsterhus répond que la performance est une propriété de l'implémentation, pas de la fonctionnalité, et propose l'Optimizer, qui réécrit déjà array_map dans PHP 8.6. Le scan de Sepehr Mahmoudi sur les 200 premiers paquets Composer (environ 21 000 fichiers) a trouvé 32 motifs de filtrage par sous-chaîne ; la relecture de Rowan en a écarté au moins 15, le RFC dit désormais jusqu'à 17 sur 32, benchmark promis.

Brèves : Weilin Du prévoit d'ouvrir le vote sur IntlRelativeDateTimeFormatter le 15 septembre et corrigera la remarque de Tim sur le formateur de nombres ICU cloné en interne en le rafraîchissant paresseusement. Timo Poppinga veut que openssl expose le modèle de fournisseurs d'OpenSSL de façon générique, pour que ML-KEM et ML-DSA fonctionnent sans constante par algorithme. Dmytro Kulyk a répondu à la revue de Nicolas Grekas sur l'attribut NoSerialize dix mois plus tard ; le RFC migre désormais 107 classes internes. Florent Morselli veut que le mode strict du RFC data-encoding rejette espaces et bits terminaux non canoniques, car un identifiant WebAuthn a actuellement 16 orthographes valides. Pour la quatrième semaine consécutive, rien n'est en phase de vote.