Esta semana hay dos votaciones RFC activas en la lista de internos de PHP. Tim Düsterhus abrió el viernes la votación sobre la clase Time\Duration: la votación principal (requiere mayoría de dos tercios) va 23 a 1, y una votación secundaria sobre nomenclatura favorece nombres completos como multiplyBy/divideBy frente a abreviaturas como mul/divBy, 18 a 1. Pierre Joye, que inicialmente se inclinaba por el no debido al argumento de nanosegundos de fromSeconds(), cambió su voto a favor tras comprobar que ya existían constructores por unidad que resolvían su objeción. Ambas votaciones cierran el 31 de julio.

Por separado, Holly Schilling anunció que está redactando un RFC de Value Structs para después de la ventana de 8.6, argumentando que Duration funcionaría mejor como struct que como clase, idóneamente lanzándose junto con los structs en PHP 9. Ilija Tovilo señaló su propio borrador structs-v2 ya existente; Schilling explicó que se apartó deliberadamente de él para separar el comportamiento mutable del no mutable. Düsterhus argumentó que las mejoras a la biblioteca estándar no deberían esperar a una idea todavía en fase de borrador.

Eric Norris abrió el jueves una segunda votación sobre las versiones mínimas soportadas para PHP 8.6. La exigencia de autoconf 2.71 para compilaciones desde git va 20 a 3 con 4 abstenciones; la exigencia de COM_RESET_CONNECTION, que fija un mínimo de MySQL 5.7.3 o MariaDB 10.2.4 para que las conexiones persistentes realmente se reinicien, va 21 a 0 con 3 abstenciones. Alexander Kurilo pidió que fuera opcional en lugar de obligatorio, advirtiendo que las bases de datos más antiguas perderían la persistencia silenciosamente; Norris respondió que MySQL 5.7.3 data de diciembre de 2013. Jakub Zelenka votó en contra por preocupaciones sobre la compilación en Red Hat Enterprise Linux 8/9; Düsterhus se ofreció a posponer ese cambio concreto a los inicios de 8.7. Ambas votaciones cierran el 30 de julio.

Pierre Joye abrió el sábado por la noche un extenso RFC para gd 2.4, con tres ejes: sincronizar la extensión gd incluida con el libgd de origen (nuevos códecs QOI, JPEG XL y UltraHDR, GIF/WebP animados, TIFF multipágina, gestión real de metadatos), una API orientada a objetos Gd\ adicional, y un nuevo lienzo vectorial 2D construido sobre el rasterizador de FreeType con un sistema de composición al estilo Cairo. Sin embargo, su periodo de discusión de 14 días, hasta el 1 de agosto, cae después del plazo límite de PHP 9: la alpha 1 salió el 2 de julio y la fecha límite para el estado final de un RFC era el 14 de julio, cuatro días antes de que se abriera siquiera el hilo. El gestor de versiones Matteo Beccati y Jakub Zelenka confirmaron que no cabe ninguna excepción sin cambiar la propia política. Joye aseguró que la implementación, incluida una auditoría de seguridad, estaba prácticamente terminada, pero su pull request quedó atascada porque la aprobación se había asignado a un revisor automático que nunca podría aprobarla, así que terminó fusionándola él mismo. gd 2.4 apunta ahora a la versión que siga a 8.6. Por su parte, Larry Garfield pidió a la lista posponer nuevas propuestas hasta el 1 de septiembre para que los revisores se centren en cerrar 8.6.

El operador de asignación por tubería |>= de Caleb White se enfrenta a una propuesta competidora: Vadim Dvorovenko publicó un RFC de asignación de izquierda a derecha que usa el mismo token con semántica opuesta y mutable, argumentando que socavaría el concepto funcional de las tuberías. Larry Garfield cambió su voto a no sobre la propuesta de White, pero Düsterhus rebatió su afirmación de que ningún RFC de tubería podía entrar en 8.6, señalando que una votación todavía podría abrirse el 27 de julio y cerrarse el 10 de agosto, antes del freeze.

El RFC strict-namespace de Paul M. Jones pasó la semana debatiendo sobre su nombre más que sobre su contenido: Rowan Tommins, Ilija Tovilo y Düsterhus (que prefiere global_fallback=0) se opusieron todos al término «strict». Theodore Brown recordó haber propuesto una redacción similar ya en 2019. Benjamin Außenhofer sugirió separar la votación del concepto y la del nombre; Tommins advirtió que esto dejaría a quienes apoyan la idea pero no el nombre en una posición incómoda.

Nicolas Grekas defendió su RFC de closures serializables tras el voto en contra de Ilija Tovilo, argumentando que la verdadera ventaja está en evitar que los frameworks repitan todo el proceso de metadatos en cada petición, no en cachear un solo atributo. Se negó a relajar el diseño de seguridad frente a riesgos de gadgets, y el sábado publicó la versión 0.3, eliminando por completo la API de reflexión y conservando únicamente el soporte de serialize(), que según él sustenta a la mayoría de los sistemas de caché de PHP.

La propuesta de Wendell Adriel sobre declaraciones de arrays tipados (sintaxis array<int, string> con tres niveles de aplicación) recibió críticas rápidas por problemas de subtipado en arrays mutables, solapamiento con el trabajo en pausa sobre genéricos reificados, y un hueco en tiempo de ejecución en funciones como parse_str(). Larry Garfield calificó el tipo array como «ya peligrosamente sobrecargado» y pidió en su lugar objetos list, set y dictionary realmente tipados; Wendell puso él mismo el RFC en pausa y se ofreció a ayudar a construir esas alternativas.

Juliette Reinders Folmer analizó unos 450.000 archivos de los 4.000 paquetes más populares de Packagist para medir el uso real antes de la votación sobre la lista congelada de deprecaciones de PHP 8.6. list() aparece más de 12.000 veces, lo que la lleva ahora a oponerse a su deprecación, frente a 625 usos de spl_object_hash() y 303 de is_integer(), con varias otras propuestas en cero. Gina P. Banyard confirmó que las votaciones de deprecación se abrirán el lunes 27 de julio y durarán dos semanas, para cerrarse a tiempo antes de 8.6.

Otras novedades: Go Kudo retomó una extensión user_cache independiente, desacoplada de OPcache, redirigida hacia PHP 8.7 (o «9»); una mejora de rendimiento que cuadruplica la velocidad de los setters asimétricos no públicos solo necesita revisión de pull request, no un RFC; surgió una propuesta de autoloading PSR-4 nativo del motor mediante spl_autoload_psr4_register(); el proyecto TrueAsync publicó un pre-RFC para una interfaz de planificador asíncrono sin ningún cambio visible para el usuario; y Osama Aldemeery recibió karma de RFC para formalizar PREG_THROW_ON_ERROR.

En cuanto a lanzamientos, esta semana se publicaron PHP 8.6.0alpha2, 8.5.9RC1 y 8.4.24RC1, con la alpha 3 y las versiones GA de 8.5 y 8.4 convergiendo el 30 de julio. El calendario de 8.6 fija el congelamiento de funcionalidades el 11 de agosto y la beta 1 el 13 de agosto, con todas las votaciones debiendo cerrarse antes de esa fecha.