The Daily Commit · Ressort-Ausgabe Titelseite PHP AI Dev EN DE FR ES

The Php Times

RFC-Watch — Ökosystem

Closure-Optimierungs-RFC angenommen – statische Inferenz nach Fund eines Grenzfalls gestrichen


Die PHP-Community stimmte mit 24:0 für Ilija Tovilos RFC zu Closure-Optimierungen.

PHP INTERNALS ([RFC]/[VOTE]), 11. August 2026 kuratiert von Sönke

Ein spät entdeckter Grenzfall zwang den Autor jedoch, die statische Closure-Inferenz zu streichen; nur der Cache für zustandslose Closures wird gemergt – zugunsten von Code, der bereits static nutzt.

Ilija Tovilos RFC zu Closure-Optimierungen für PHP wurde im Internals-Vote mit 24 Ja, 0 Nein und 1 Enthaltung angenommen. Die Abstimmung lief bis zum 13.03.2026, 14:00 UTC; die Umsetzung steckt im php-src-Pull-Request 19941.

Der RFC umfasste zwei Optimierungen: einen Cache für zustandslose Closures, der den Großteil des Performance-Gewinns bringt, sowie eine Inferenz statischer Closures, die Closures ohne $this-Nutzung automatisch als static behandelt hätte. Auf Nachfrage von Kamil Tekiela bestätigte Tovilo, dass auch Projekte profitieren, die bereits alle statischen Closures mit dem Schlüsselwort markieren – und betonte, dass explizites static weiterhin vorzuziehen ist. Die Inferenz war für Codebasen gedacht, die static aus ästhetischen Gründen weglassen oder die Performance-Auswirkungen nicht kennen.

Nach Ende des Votes entdeckte Tovilo einen Grenzfall, der die Inferenz bricht: Eine Closure kann ein Callable wie 'Foo::instanceCall' an array_map übergeben; sie nutzt selbst kein $this und verstößt gegen keine Inferenz-Regel, ruft aber dennoch eine Instanzmethode auf. Da dieser Fall nicht zuverlässig erkennbar ist, strich er die Inferenz komplett und mergt nur den Cache für zustandslose Closures.

Praktisch heißt das: Code, der alle relevanten Closures als static annotiert, erhält den vollen Performance-Vorteil; nicht annotierter Code profitiert nicht. Der RFC wurde um einen Errata-Abschnitt ergänzt, und Tovilo bat um etwaige Einwände gegen die Teilumsetzung.

Originalquelle lesen (Englisch) ↗

Artikel bewerten: 0

Leserforum

Noch keine Beiträge — eröffne die Debatte.

← Ökosystem — Page B1

"All the Code That's Fit to Ship" · The Daily Commit · Bildschirm-Ausgabe · Impressum · Datenschutz