PHP 8 ya está a la vuelta de la esquina!

PHP 8.0 se lanzará el 26 de noviembre de 2020. Como sabrás es el lenguaje de programación que impulsa los sitios de WordPress.

Esta última versión de PHP ofrece nuevas características que los desarrolladores encontrarán útiles y mejoras que prometen mejorar enormemente la seguridad y el rendimiento a largo plazo. También elimina por completo una serie de funciones anteriormente obsoletas. PHP 8 es un cambio masivo con respecto a versiones anteriores.

¿Debería actualizar de inmediato?

NO. La próxima versión principal de WordPress, 5.6, está destinada a ser “beta compatible con PHP 8” según el chat de desarrollo de WordPress del 18 de noviembre. Eso significa que la mayoría de las funciones básicas de WordPress funcionarán, pero pueden ocurrir errores inesperados durante algún tiempo, incluso sin la presencia de plugins o temas adicionales.

WordPress ha pedido pruebas adicionales con PHP 8 para encontrar y corregir la mayor cantidad posible de errores restantes.

Una gran cantidad de plugins y temas de WordPress no serán inmediatamente compatibles con PHP 8.

Aquellos que no muestran errores fatales, pudieran tener un comportamiento inesperado durante algún tiempo.

¿Qué cambios importantes incluye esto?

Algunos desarrolladores han argumentado durante mucho tiempo que PHP es inseguro por defecto. Si bien esto es objeto de debate, es cierto que las versiones de PHP anteriores a PHP 8 son más tolerantes a fallas y se esfuerzan mucho para garantizar que el código se ejecute incluso si hay errores menores.

PHP 8 usa una escritura mucho más estricta que las versiones anteriores. Muchas funciones integradas ahora son más exigentes con la entrada que aceptan, y PHP 8 es más estricto en cuanto a cómo se pasa la entrada a las funciones.

Los problemas que anteriormente generaban avisos ahora generan advertencias, y los problemas que anteriormente generaban advertencias ahora generan errores.

En otras palabras, PHP 8 no es tan indulgente como las versiones anteriores. No se esforzará tanto en hacer que el código funcione pase lo que pase.

Algunas funciones y características que estaban en desuso en PHP 7.x se han eliminado por completo. Éstas incluyen:

  • La variable $php_errormsg
  • La función create_function()
  • La directiva ini mbstring.func_overload
  • El tipo real
  • La directiva ini allow_url_include
  • La función restore_include_path()
  • La Función each()

Si bien la mayoría de estos ya no se usan ampliamente,  create_function todavía se usan en más de 5.500 plugins de WordPress, incluidos plugins extremadamente populares con millones de instalaciones.

En algunos casos, el uso de estas funciones obsoletas puede estar destinado a la compatibilidad con versiones anteriores de PHP. Sin embargo, muchos plugins necesitarán una refactorización extensa a medida que PHP 8 se utilice más.

Muchos plugins y temas también dependen en gran medida de bibliotecas de terceros. Es posible que los desarrolladores de WordPress deban esperar hasta que se actualicen para compatibilidad.

Si estas bibliotecas no se mantienen o actualizan para que sean compatibles con PHP 8, puede ser necesario bifurcar estas bibliotecas, buscar alternativas o incluso reescribir plugins y temas desde cero.

Para obtener información más detallada sobre lo que ha cambiado, nuestros amigos de Yoast han elaborado un excelente informe de compatibilidad destinado a los desarrolladores que buscan asegurarse de que su software sea compatible.

¿Qué problemas de seguridad existen?

PHP permite algo llamado “Malabarismo de tipos” (no se si es la traducción mas adecuada). Esto significa que puede tratar cadenas que contienen números de la misma manera que trata números enteros o flotantes, y puede realizar operaciones matemáticas y hacer comparaciones entre estos diferentes tipos siempre que se use el operador de comparación flexible ==,  en lugar del operador de comparación estricto ===.

En general, esto mejorará la seguridad. 

Hay una serie de exploits que pueden aprovechar el comportamiento de malabarismo de tipos de PHP para evitar las comprobaciones de cookies, nonce o contraseñas no estándar. No obstante, una gran cantidad de plugins utilizan estas comparaciones flexibles, a veces para funciones críticas.

En la mayoría de los casos, estos seguirán funcionando correctamente al usar PHP 8, pero algunos de ellos pueden depender de un comportamiento incorrecto para funcionar correctamente. En algunas raras circunstancias, esto podría abrir nuevos agujeros de seguridad.

La responsabilidad de actualizar el código para que sea compatible con PHP 8 podría resultar demasiado para algunos desarrolladores, y muchos plugins y temas pueden terminar abandonados. Aunque es menos probable que esto suceda con plugins y temas con muchas instalaciones, cualquier problema de seguridad en estos plugins y temas abandonados quedaría sin parche, lo que podría resultar desastroso.

Muchos sitios web pueden permanecer en una versión insegura de PHP para mantener en ejecución sus plugins heredados.

Aunque, ciertas variedades de malware se basan en funciones obsoletas, estas cepas dejarán de funcionar o se harán más notorias en un entorno PHP 8, pero los autores de malware se adaptarán con el tiempo.

¿Qué cambios de rendimiento se avecinan?

Una característica potencialmente interesante que viene a PHP 8 es JIT, o compilación “Just In Time”. PHP es un lenguaje interpretado, lo que significa que se traduce a código de máquina mientras se ejecuta.

JIT realiza un seguimiento del código que se usa con frecuencia e intenta optimizar la traducción del código de máquina para que pueda reutilizarse. Esto puede resultar en una mejora masiva del rendimiento para una funcionalidad específica.

La incorporación de JIT a otros lenguajes, como JavaScript, ha llevado históricamente a una explosión de nuevas aplicaciones. Por ejemplo, las máquinas virtuales que se ejecutan en JavaScript hubieran sido inimaginables en los primeros días de la web. Ciertas tareas que hubieran requerido la instalación de un módulo en el servidor en el pasado serán prácticas usando bibliotecas PHP puras.

Por el momento, la mejora del rendimiento real para aplicaciones web como WordPress es mínima, y ​​pasará mucho tiempo antes de que el usuario o desarrollador medio de WordPress obtenga los beneficios de esta nueva función.

Hay muchas otras características nuevas para facilitar la vida de los desarrolladores, pero es poco probable que se utilicen en plugins y temas de WordPress en el futuro inmediato, ya que la mayoría rompería la compatibilidad con versiones anteriores de PHP que todavía se utilizan en muchos sitios de WordPress.

¿Cuánto tiempo hay para actualizar?

Cada versión de PHP tiene un ciclo de vida de 2 años durante el cual se corrigen los errores y un año adicional durante el cual se corrigen los problemas de seguridad.

PHP 7.4 salió a la luz en noviembre de 2019. Como la versión final de PHP 7, esto significa que los errores en PHP 7.4 se solucionarán hasta noviembre de 2021, y los problemas de seguridad se corregirán hasta noviembre de 2022, momento en el que llegarán a su ” Fin de la vida”.

Esto significa que noviembre de 2022 puede considerarse una fecha límite estricta: todo el código PHP debería ser compatible con PHP 8.0 como mínimo en este momento, o corre el riesgo de quedarse atascado en una versión potencialmente vulnerable de PHP.

La transición a versión 8 es uno de los cambios más importantes de PHP

Si bien valdrá la pena a largo plazo, los propietarios y desarrolladores de sitios de WordPress pueden tener un viaje difícil a corto plazo.

  • Si eres propietario de un sitio web, comienza a vigilar atentamente cuáles de tus plugins y temas se están actualizando o probando para ser compatibles con PHP 8 y haz un plan B para reemplazar los que no.
  • Si es un desarrollador, comienza a probar tu código y cualquier dependencia en PHP 8. Y ve pensando en un un plan para bifurcar o reemplazar cualquier biblioteca que no se vaya a actualizar.

El ecosistema de WordPress ha pasado por transiciones difíciles en el pasado, pero la comunidad de código abierto siempre ha crecido y se ha adaptado.

 

Loading...