El resumen semanal de los internals del 9 de septiembre de 2026 abre con tres correcciones: PHP 8.4.25 fue una versión de corrección de errores, no de seguridad; los contribuidores de libxml-rs sin nombrar eran James Gilliland y David Carlier; y Tim Düsterhus discrepó con Sjoerd en el fondo, al contrario de lo dicho la semana pasada.
La historia principal es una votación que duró 56 horas. Osama Aldemeery abrió el viernes la votación de PREG_THROW_ON_ERROR, una bandera opcional que convierte los errores de PCRE en PregException. Tim Düsterhus, autor de la política de throwables de PHP, votó no en la primera hora. Sus razones: un patrón que no compila mantendría su warning mientras la excepción solo llevaría el escueto texto de preg_last_error_msg, y una excepción lanzada dentro de un callback de preg_replace_callback pasaría sin envolver, cuando la política exige que una extensión envuelva lo que invoca. Osama replicó que envolver la excepción de un callback produce una PregException sin error preg asociado, mientras preg_last_error() no reporta nada. Arreglarlo exige una jerarquía de tres clases. Robert Humphries argumentó que un patrón inválido o UTF-8 defectuoso son errores del programador, posiblemente PregError. Osama retiró la votación el domingo por la noche: la bandera viola la política de throwables y eso no se corrige con la votación abierta.
Gina P. Banyard quiere que PHP deje de corregir una clase de fallos del motor que solo activan fuzzers y LLM: reportes de use-after-free donde un manejador de errores libera la variable que provocó el warning. Cada arreglo exige un malabarismo de refcounts que todos pagan en rendimiento, y la mayoría de los disparadores son deprecations que PHP 9 eliminará. Pide consenso, idealmente sin RFC, de que los callbacks que alteran el estado del motor son comportamiento indefinido. Ilia Alshanetsky prefiere correcciones caso por caso. Ilija Tovilo dice que ese enfoque ya se probó; señaló el coste de los falsos positivos para el equipo de seguridad y anunció con Arnaud un RFC de mitigación. Tim Düsterhus añadió que PHP 9 traerá sus propias deprecations.
Sobre PEAR: Chuck Burgess del PEAR Group por fin respondió y está de acuerdo con estudiar el cierre del sitio y la retirada de PEAR del código fuente de PHP. Nick S. quiere eliminar la línea del RFC sobre mantenedores que no responden; Larry Garfield y Tim Düsterhus lo consideran un cambio menor, lo que permite votar tras una semana de enfriamiento. Rowan Tommins señaló que Chuck es uno de los ocho miembros del PEAR Group: su acuerdo es un voto, no una autoridad. Las cuentas de usuario de PEAR se perdieron y los datos de errores son irrecuperables. Derick Rethans quiere el sitio en solo lectura un año y luego un tarball en museum.php.net.
Luca Rodenhäuser cerró el hilo strict-identifiers sin RFC, agradeciendo a Claude Pache, Rowan Tommins y Larry Garfield haberle hecho cambiar de opinión. La cuestión de si los identificadores no ASCII son una característica soportada queda abierta: el manual dice que funcionan por accidente, pero hay 1.447 en los 5.000 paquetes principales. Enviará una PR de documentación que describa el comportamiento actual y deja una oferta: un aviso del compilador sobre caracteres invisibles en nombres, 68 casos en medio millón de archivos.
El RFC de Sjoerd Langkemper que hace que octdec, hexdec, bindec y base_convert lancen excepciones ante entrada inválida no abrió votación como estaba previsto. Preguntó qué excepción usar. Rowan Tommins: Exception más una subclase propia, nunca SPL, quizá BaseConversionException. Tim Düsterhus lanzaría una simple Exception, porque estas funciones viven en standard y podrían rediseñarse en un espacio de nombres int o number.
El debate sobre rendimiento continúa. Larry Garfield sostiene que los benchmarks son un dato entre muchos: un 50 % más rápido en C difiere de un 0,5 %. Tim Düsterhus responde que el rendimiento es propiedad de la implementación, no de la característica, y propone el Optimizer, que ya reescribe array_map en PHP 8.6. El escaneo de Sepehr Mahmoudi de los 200 principales paquetes de Composer (unos 21.000 archivos) halló 32 patrones de filtrado por subcadena; la revisión de Rowan descartó al menos 15, y el RFC dice ahora hasta 17 de 32, con benchmark prometido.
Breves: Weilin Du planea abrir la votación de IntlRelativeDateTimeFormatter el 15 de septiembre y corregirá la observación de Tim sobre el formateador de números ICU clonado internamente refrescándolo de forma perezosa. Timo Poppinga quiere que openssl exponga el modelo de proveedores de OpenSSL de forma genérica, para que ML-KEM y ML-DSA funcionen sin una constante por algoritmo. Dmytro Kulyk respondió a la revisión de Nicolas Grekas sobre el atributo NoSerialize diez meses después; el RFC migra ahora 107 clases internas. Florent Morselli pide que el modo estricto del RFC de data-encoding rechace espacios y bits finales no canónicos, porque una credencial WebAuthn tiene hoy 16 escrituras válidas. Por cuarta semana consecutiva, nada está en fase de votación.




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.