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.
Comentarios
Aún no hay comentarios — escribe el primero.
Inicia la conversación
Sin cuenta ni contraseña — introduce tu correo y te enviamos un enlace de acceso de un solo uso. ¿Primera vez? Todo se configura automáticamente.
Tu valoración se aplicará automáticamente al iniciar sesión.
Revisa tu bandeja de entrada
Hemos enviado un enlace de acceso a …. Ábrelo en este dispositivo — esta pestaña te conectará automáticamente.
¿No llega nada? Mira en la carpeta de spam — y marca el correo como «No es spam» para que la próxima vez llegue directo.