The Daily Commit · Édition de rubrique La une PHP AI Dev EN DE FR ES

The Php Times

RFC Watch — Écosystème

RFC d'optimisation des closures acceptée, mais l'inférence statique abandonnée


La communauté PHP a voté 24-0 en faveur de la RFC d'Ilija Tovilo sur l'optimisation des closures.

PHP INTERNALS ([RFC]/[VOTE]), 11 août 2026 sélectionné par Sönke

Un cas limite découvert tardivement a toutefois forcé l'abandon de l'inférence de closures statiques ; seul le cache de closures sans état sera fusionné, au profit du code utilisant déjà static.

La RFC d'Ilija Tovilo sur l'optimisation des closures a été adoptée par le vote internals avec 24 voix pour, 0 contre et 1 abstention. Le vote s'est clos le 13-03-2026 à 14h00 UTC ; l'implémentation se trouve dans la pull request 19941 de php-src.

La RFC couvrait deux optimisations : un cache pour les closures sans état, qui apporte l'essentiel du gain de performance, et l'inférence de closures statiques, qui aurait traité automatiquement comme static les closures n'utilisant pas $this. Interrogé par Kamil Tekiela, Tovilo a confirmé que les projets marquant déjà leurs closures statiques en bénéficieraient, tout en soulignant que le marquage explicite reste préférable. L'inférence visait les codebases qui omettent static pour éviter l'encombrement visuel ou ignorent les implications de performance.

Après la clôture du vote, Tovilo a découvert un cas limite : une closure peut passer un callable comme 'Foo::instanceCall' à array_map ; elle n'utilise pas $this et ne viole aucune règle d'inférence, pourtant une méthode d'instance est invoquée. Ce cas n'étant pas détectable de manière fiable, il a retiré l'inférence et ne fusionnera que le cache de closures sans état.

En pratique : le code annotant toutes ses closures pertinentes en static obtient le plein bénéfice de performance, le code non annoté n'en tire rien. La RFC a été mise à jour avec une section errata, et Tovilo a invité d'éventuelles objections à cette implémentation partielle.

Lire la source originale (en anglais) ↗

Évaluer cet article : 0

Tribune des lecteurs

Pas encore de contributions — lance le débat.

← Écosystème — Page B1

"All the Code That's Fit to Ship" · The Daily Commit · Édition écran · Mentions légales · Politique de confidentialité