El equipo de PHP publicó el 5 de noviembre de 2026 la quinta release candidate de PHP 8.6.0, RC5. Es la última etapa de pruebas antes de la versión estable, anunciada para el 19 de noviembre. Además de la esperada aplicación parcial de funciones, esta versión endurece notablemente los ajustes de seguridad de las sesiones, un cambio que afectará a cualquier aplicación PHP al actualizar.
Una quinta release candidate antes de la versión estable
RC5 llega después de RC4, publicada el 21 de octubre, que ya corregía dos vulnerabilidades críticas de ejecución remota de código. El calendario de PHP 8.6 se ha extendido durante varios meses de pruebas: RC2 abrió el ciclo el 24 de septiembre tras descartar RC1 por un error de empaquetado, seguida de RC3 a principios de octubre y de RC4 a finales de octubre. El equipo de publicación insiste en que RC5 sigue siendo una versión de pruebas, que no debe desplegarse en producción.
Aplicación parcial de funciones y nuevas funciones utilitarias
La novedad más comentada es la aplicación parcial de funciones, basada en una RFC que había sido rechazada en 2021 antes de volver en una nueva forma aprobada por unanimidad. Permite omitir ciertos argumentos mediante un marcador de posición, sin escribir una clausura intermedia. El lenguaje también incorpora una función clamp() para acotar un valor dentro de un rango, y las propiedades readonly ya pueden declarar un valor por defecto, algo que hasta la 8.5 era un error de compilación.
final class Pricing
{
public readonly float $vatRate = 0.20;
public function clampedDiscount(float $requested): float
{
return clamp($requested, 0.0, 0.30);
}
}
$applyVat = fn (float $amount, float $rate) => $amount * (1 + $rate);
$applyDefaultVat = $applyVat(?, 0.20); // aplicación parcial
echo $applyDefaultVat(49.0);
Un nuevo subsistema para entradas y salidas asíncronas
PHP 8.6 introduce Io\Poll, una interfaz de sondeo unificada sobre los mecanismos nativos de cada plataforma (epoll en Linux, kqueue en BSD y macOS, WSAPoll en Windows). Llega acompañada de clases como Io\Poll\Context y Io\Poll\Watcher, y los flujos existentes pueden conectarse a través de StreamPollHandle. Las clausuras también se benefician de una caché para clausuras sin estado, y array_map() usado con un invocable de primera clase se compila ahora en un bucle foreach equivalente, sin asignaciones intermedias.
Valores por defecto de sesión más estrictos
El cambio más estructural para las aplicaciones existentes afecta a tres ajustes INI relacionados con las sesiones, ahora más seguros por defecto.
| Ajuste | Antes de 8.6 | Desde 8.6 | Impacto si no se revisa |
|---|---|---|---|
session.use_strict_mode | 0 | 1 | Un gestor personalizado que acepte identificadores de sesión externos sin entrada almacenada debe implementar validateId() o create_sid() |
session.cookie_httponly | 0 | 1 | La cookie de sesión deja de ser legible desde JavaScript, salvo que se restablezca a 0 |
session.cookie_samesite | sin definir | Lax | Las peticiones POST entre sitios dejan de recibir la cookie, salvo cambio a None junto con cookie_secure=1 |
Tres ajustes de sesión pasan de un comportamiento permisivo a uno restrictivo por defecto, sin que el código de la aplicación tenga que cambiar una sola línea para beneficiarse.
Otros cambios merecen una relectura del archivo UPGRADING antes de migrar: numerosas funciones lanzan ahora un ValueError ante un byte NUL en un argumento de tipo cadena, y preg_grep() devuelve false en lugar de un array parcial en caso de error de PCRE. Los equipos que ya vigilan de cerca sus colas, como Laravel ha reforzado por su parte, harán bien en ejecutar su suite de pruebas sobre RC5 desde ya.
Lo que hay que recordar
PHP 8.6 entra en su recta final con RC5, publicada el 5 de noviembre antes de la versión estable del día 19. La aplicación parcial de funciones y la API Io\Poll son las incorporaciones más visibles, pero el cambio que exige una acción concreta es el endurecimiento de los valores por defecto de sesión. Los equipos que gestionan manejadores de sesión personalizados o flujos entre sitios harán bien en probar ya, en lugar de descubrir el problema en producción.
En los proyectos seguidos este año, el cambio de session.cookie_samesite a Lax es precisamente el tipo de cambio que pasa desapercibido en pruebas y que reaparece tres semanas después como un ticket de soporte incomprensible sobre un webhook o un SSO que ha dejado de funcionar. Mejor tratarlo con antelación, en frío, que de urgencia el día del despliegue — Simon Janvier.
Para profundizar: el anuncio oficial de PHP 8.6.0 RC5 en php.net.
