El resumen de PHP internals del 8 de octubre de 2026 recoge 13 novedades. La principal afecta a bcrypt. Sjoerd Langkemper ha dejado en pausa la RFC `bcrypt_max_password_length` tras las objeciones de compatibilidad. Jeff Dafoe había localizado el problema en código PHP antiguo y había respondido forzando cambios de contraseña.
Tim Düsterhus propuso tomar bcrypt-sha256 de Passlib, una biblioteca de contraseñas para Python. La nueva RFC de Langkemper añade `PASSWORD_BCRYPT_SHA256`. El algoritmo aplica HMAC-SHA-256 antes de bcrypt, que recibe una clave de 44 bytes sin bytes nulos y sin el límite de 72 bytes. Un ejemplo valida una contraseña de 200 caracteres y rechaza la misma contraseña con un carácter menos. La opción es opt-in, el comportamiento predeterminado no cambia y la RFC no enumera cambios incompatibles. Los hashes son intercambiables con los de Passlib. Su mayor longitud puede exigir columnas más amplias en la base de datos. Convertir este algoritmo en el predeterminado queda para una fase futura.
Hay dos votaciones RFC abiertas. Nick S. abrió el lunes la votación End PEAR Project Endorsement después de no cumplir la fecha prevista. El texto archivaría el sitio de PEAR, dejaría de incluir su instalador en PHP 8.7 y dirigiría php.net a Composer. En el momento de la grabación llevaba 26 votos a favor y ninguno en contra, y termina el 19 de octubre. También volvió a votarse `IntlRelativeDateTimeFormatter`, de Weilin Du. La primera votación, en septiembre, terminó con 4 votos a 1. La versión revisada adopta el diseño de enum de Tim Düsterhus, acumula 7 votos a 0 con el voto de Tim y cierra el 22 de octubre. El formateador genera expresiones como «ayer» o «en 2 semanas».
La propuesta `Time\Instant` sigue sin una representación JSON acordada. `json_encode` produce actualmente un objeto vacío, y sus autores, Tim Düsterhus y Derick Rethans, consideran que la extensión JSON debe resolver el formato. Una revisión de 15 puntos cambió los métodos `getUnixTimestamp` por `toUnixTimestamp`, convirtió `SystemClock` en un singleton y añadió `DateTimeInterface::toInstant` después de detectar su ausencia. La petición de renombrar `now()` para facilitar la implementación de PSR-20 continúa siendo discutida. Larry Garfield ve la propuesta como una posible sucesora de PSR-20.
La versión 0.4 de Io\Terminal, de Pratik Bhujel, elimina las interfaces incorporadas en la revisión anterior. El stream pasa a ser el límite real de entrada y salida, lo que permite probar la lectura del terminal con streams en memoria. Las lecturas de claves y secretos aceptan streams preparados por scripts, un proceso hijo creado mediante fork ya no reinicia el terminal del padre y se añadieron valores para las teclas Insert y Shift-Tab. Pratik quiere acercar la propuesta a una votación después de más revisiones.
La RFC de Matthieu Napoli para una binaria única integraría FPM en la binaria `php`. Se podría iniciar con `--fpm` o mediante un enlace simbólico. Las mediciones con Bref en AWS Lambda mostraron una reducción del 18 % en el tamaño comprimido del paquete. Una aplicación FPM mínima arrancó 70 milisegundos más rápido en frío, una mejora del 25 %. El debate aborda el significado de `-F`, el papel de FPM ante el crecimiento de FrankenPHP y Swoole, y una posible arquitectura que integre la CLI en la binaria de FPM.
Ilia revisó la seguridad de IO Hooks y reprodujo fallos en la rama de Jakub Zelenka. El código C puede asumir que no se ejecuta PHP durante una espera bloqueante. En una prueba, un Fiber liberó un documento DOM mientras otro Fiber todavía lo guardaba. Ilia quiere que las llamadas interceptadas sigan siendo bloqueantes por defecto y que el punto de llamada declare cuándo es segura la suspensión. Jakub describe la rama como una prueba de concepto y considera corregibles los fallos. Un documento de diseño reúne ahora las tres RFC relacionadas. Sebastian Bergmann ve una base para coordinar procesos hijos desde PHPUnit. Edmond Dantes la está probando con su RFC de un planificador intercambiable.
La propuesta de delegation de Karoly Negyesi pasaría los métodos de una interfaz a una propiedad. Larry Garfield la apoya después de que las clases de consultas de Drupal acumularan unas 100 líneas de código de reenvío. James Gilliland citó el trait `ForwardsCalls` de Laravel. Sebastian Bergmann advirtió que los métodos añadidos posteriormente a una interfaz podrían reenviarse de forma silenciosa. Las llamadas fluidas también devolverían el objeto interno. Larry planteó una palabra clave de máscara. Rowan Tommins señaló que las propuestas similares suelen acumular excepciones que complican la abreviatura original.
Las demás novedades son menores. Weilin Du volvió a colocar en dos puntos la sintaxis abreviada de arrays, porque el parser puede distinguirla de una expresión ternaria. Juliette Reinders Folmer no seguirá con la deprecación del prefijo `b` de las cadenas sin más interés. Daniel Scherzer ofreció escribir el código C para la RFC de deprecaciones de PHP 8.7. Muhammed Arshid transformó su propuesta de filtros en backed enums llamados `Filter\Filter` y `Filter\Flag`. Derick Rethans quiere revertir la deprecación del filtrado de entrada predeterminado de la extensión Filter. Máté Kocsis busca una votación sobre la manipulación de parámetros de consulta. David Carlier propuso formatear unidades en `intl` mediante un esqueleto de ICU, con valores como 5 kilómetros por hora. PHP 8.6 RC3 estaba previsto para el 8 de octubre y la disponibilidad general para el 19 de noviembre.




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.