La RFC de optimización de closures de Ilija Tovilo fue aprobada en la votación de internals con 24 votos a favor, 0 en contra y 1 abstención. La votación terminó el 13-03-2026 a las 14:00 UTC; la implementación está en el pull request 19941 de php-src.

La RFC cubría dos optimizaciones: una caché para closures sin estado, que aporta la mayor parte de la mejora de rendimiento, y la inferencia de closures estáticas, que habría tratado automáticamente como static las closures que no usan $this. Ante la pregunta de Kamil Tekiela, Tovilo confirmó que los proyectos que ya marcan sus closures estáticas también se beneficiarían, y subrayó que el marcado explícito sigue siendo preferible. La inferencia estaba pensada para bases de código que omiten static para evitar ruido visual o desconocen las implicaciones de rendimiento.

Tras el cierre de la votación, Tovilo descubrió un caso límite: una closure puede pasar un callable como 'Foo::instanceCall' a array_map; no usa $this ni viola ninguna regla de inferencia, pero invoca un método de instancia. Como este caso no puede detectarse de forma fiable, decidió eliminar la inferencia y fusionar solo la caché de closures sin estado.

En la práctica: el código que anota todas sus closures relevantes como static obtiene el beneficio completo de rendimiento; el código sin anotar no gana nada. La RFC se actualizó con una sección de errata, y Tovilo pidió posibles objeciones a esta implementación parcial.