PHP 7 Características y Fecha de Lanzamiento
El PHP 7 Nombre: votos y los resultados
En los últimos días hubo un intenso debate sobre el nombre de la próxima versión mayor.
No era realmente importante decidir ahora lo que el nombre será porque tardará un tiempo hasta que salga la próxima versión mayor. Sin embargo, esta discusión necesitaba ocurrir tarde o temprano para tomar una decisión.
La discusión era acerca de llamarlo PHP 6 o PHP 7. Los argumentos para cada una de las propuestas fueron presentados en un documento RFC llamado Nombre de la Próxima Versión de PHP.
La votación se inició una vez pero fue cancelada después de introducir más discusiones antes de que se reiniciara. Los resultados fueron anunciados una semana después de reiniciar el voto. La propuesta de PHP 7 ganó con 58 votos contra 24 votos para PHP 6.
Hubo una discusión sobre si los votos debían hacerse visibles o no antes de que finalizara el periodo de votación. La idea era evitar el efecto bandwagon. El argumento defiende que algunas personas van a votar sólo para jugar junto con otros, en lugar de votar sobre los méritos de las propuestas. La discusión no fue a ningún lado.
PHP 6 versus PHP 7
La discusión sobre el nombre de la siguiente versión major de PHP terminó. Se tomó la decisión de PHP 7, pero si no sigues los argumentos, puedes estar curioso por entender lo que estaba en juego.
PHP se mantiene evolucionando. Cada versión mayor tiene nuevas características. La mayoría versiones menores son correcciones de errores.
La mayoría de usuarios entusiastas tienden a volverse muy ansiosos con nuevas versiones mayores porque están ansiosos de aprovechar nuevas características tan pronto como sea posible.
También las nuevas versiones mayores ofrecen grandes signos de vitalidad del lenguaje, reforzando la creencia de los fans de PHP de que ellos hicieron la elección correcta en un lenguaje que está liderando el mercado.
Otros usuarios están más preocupados con las versiones mayores porque nuevas características a menudo vienen con incompatibilidades con versiones anteriores, lo que significa que esto puede conllevas más trabajo y dolores de cabeza arreglando código que se rompió debido a esos cambios.
Así que el nombre de la próxima versión principal no era tan importante siempre y cuando todos los usuarios entienden que es una nueva versión con todas las implicaciones.
Aquellos que estaban a favor de mantenerlo PHP 6 afirmaron que sería el siguiente número lógico después de la versión mayor actual de PHP, que obviamente es 5.
Los que estaban a favor de PHP 7 afirmaron que PHP 6 era el nombre de una rama PHP que fue descartada en 2010. Que fue un desarrollo muy ambicioso que pretendía traer soporte Unicode como estándar a todo el manejo de texto en PHP.
Puesto que PHP 6 fue abortada, los proponentes de PHP 7 no querían que la próxima versión mayor de PHP se confundiera con esa rama que fue descartada hace mucho tiempo en el pasado.
La mayoría de los desarrolladores votantes preferieron evitar esa confusión, así que la próxima versión mayor de PHP será PHP 7.
La Maldición de la Versión 6
Aquellos que son más supersticiosos pueden decir hay algo malo con las versiones número 6 de los lenguajes de programación.
Mucho antes del fallido PHP 6, el lenguaje Perl también tocó con la versión 6. Perl 6 iba a ser un motor del lenguaje totalmente nuevo después de la versión 5, pero con una mayor ambición.
Perl 6 comenzó con un debate en el año 2000 de las características del lenguaje. También se produjo una especificación para permitir que los desarrolladores implementaran el lenguaje sin tener que leer las fuentes de una implementación de referencia.
Todas esas discusiones hicieron que la implementación de Perl 6 tomara años en desarrollarse, hasta el punto que muchos fans de Perl lo olvidaran y se movieran a otros lenguajes.
Obviamente fue una coincidencia que estas cosas sucedieron en la versión 6. Los asuntos con la versión 6 de PHP eran diferentes y eso no detuvo a nadie de seguir trabajando con PHP.
PHPNG se convertirá en PHP 7
En paralelo a la discusión del siguiente nombre de la versión mayor de PHP, se presentó otra propuesta para convertir la rama PHPNG como la rama base de PHP 7.
Mientras que las discusiones están todavía en curso y la votación sobre esta propuesta aún no se inició en el momento de escribir este artículo (nota del traductor: la propuesta ya se encuentra en votación), es muy probable que esto suceda.
Sin embargo, es posible que todavía haya un release para la versión PHP 5.7 antes de PHP 7.
Características Principales de PHP 7
1. Enormes Mejoras de Rendimiento
El objetivo principal de PHPNG fue a traer mejoras en el rendimiento que al menos coincidan con lo que ofrece Facebook HHVM.
Zeev Suraski de Zend ha escrito un artículo en el que admitió abiertamente que toman HHVM como un competidor de (el motor basado en Zend) PHP. Esto confirma que la liberación de HHVM y luego el lenguaje Hack de Facebook desencadenó este gran interés de Zend en continuar liderando la implementación principal de PHP.
En ese artículo también demuestra cuánto ha evolucionado la rama PHPNG en términos de mejoras en el rendimiento.
2. Motor JIT
Según Dmitry Stogov de Zend, el inició del desarrollo de PHPNG se inicio con la motivación de investigar la implementación de un motor de JIT para el PHP basado en el Motor Zend.
Un motor JIT puede compilar dinámicamente Zend opcodes en código máquina nativo que finalmente haría que el código corriera más rápido la próxima vez que se ejecutara.
Mientras que la aplicación de un motor JIT aún no se ha incorporado a la rama PHPNG, Dmitry mencionó en mayo que él "invirtió una cantidad significativa de tiempo experimentando con JIT e incluso creó un PoC (nota del traductor: Proof of Concept, Prueba de Concepto) de un complilador JIT de LLVM transparente embebido dentro de OPCache".
Así que está sin duda en los planes de Zend para permitir traer un motor JIT a PHP 7, así según Zeev Suraski esto puede "impulsar el rendimiento a través del techo para una ya ultra rápida implementación".
3. AST: Abstract Syntax Tree
Recientemente Nikita Popov propuso la implementación de la generación de un árbol de sintaxis abstracta (AST) como un paso intermedio para el proceso de compilación de PHP.
No es la primera vez Nikita propone la implementación de un AST como paso de compilación. Ya lo había propuesto en el 2012.
Un AST ofrecería varias ventajas que son descritas en sus propuestas, incluyendo la posibilidad de más optimizaciones que harían que PHP se ejecutara aún más rápido.
En la última propuesta describe la posibilidad de exponer el AST a las extensiones de PHP y a las aplicaciones de usuarios. Eso podría abrir espacio para herramientas más interesantes como analizadores de código estático que a menudo son útiles para detectar errores o posibles optimizaciones a nivel de código fuente de nuestro código PHP.
Nikita ya proporcionó un parche para implementar el soporte AST sobre la rama PHPNG.
4. Programación Asincrónica
Esto puede no ser obvio para todos, pero últimamente, Julien Pauli, uno de los responsables de las últimas versiones de PHP, ha estado comentando sobre refactorizar la capa de multiplexación de entrada-salida de PHP.
Esto parece ser un paso necesario para implementar un loop del eventos. Un loop de eventos es parte del código que se encarga de controlar los eventos relacionados con las operaciones de E/S y otras tareas asincrónicas que pueden estar pasando en paralelo, como accesos a archivos, redes, bases de datos, temporizadores, etc...
En términos más sencillos, esto permitiría a futuras versiones de PHP implementar fácilmente el soporte para la ejecución de tareas paralelas dentro de la misma petición, impulsando el rendimiento de PHP potencialmente a un nivel totalmente diferente.
Esto es algo que comenté varias veces antiormente. Una de las últimas veces fue en el artículo sobre las mejoras de Facebook Hack.
Por supuesto, no consigues mejoras de rendimiento automáticamente con sólo habilitar el soporte para la programación asincrónica. El nuevo código PHP debe escribirse de forma tal que aproveche el potencial de la programación asincrónica.
A pesar del esfuerzo inicial de Jean Pauli, esto no significa que el soporte nativo para programación asincrónico se habilitará en PHP 7.
Sin embargo, puesto que Facebook Hack ya proporciona soporte para programación asincrónica en una forma muy elegante, no me sorprendería si los desarrolladores del núcleo de PHP se movieran más rápidamente para hacer que la programación asincrónica en PHP estuviera disponible muy pronto.
5. Servidor Web Standalone Multi-threading
Esto es algo que no parece estar en los planes para PHP 7 pero es algo que haría más escalable a PHP.
Ya se puede ejecutar PHP desde servidores Web multi-threaded como ngynx, lighttpd o incluso Apache en el modo worker, sin embargo esto no es lo mismo que tener a PHP corriendo en su propio servidor Web multi-threading.
Un servidor Web multi-threading puede manejar muchas peticiones simultáneas utilizando un mismo pool de memoria, evitando así la pérdida de memoria que ocurre cuando se ejecuta PHP como FastCGI o en Apache en modo pre-fork.
También permitiría a PHP usar una único pool de conexiones de base de datos, minimizando así el número de conexiones simultáneas de base de datos abiertas durante picos de acceso.
HHVM ya puede funcionar como servidor Web multi-threading independiente desde los días cuando el proyecto fue llamado compilador HipHop PHP.
Esto permitió a Facebook reducir un poco los servidores necesarios para manejar la alta carga de accesos que tienen.
A pesar de que ejecutar PHP como un servidor Web multi-threading independiente no está todavía en los planes para PHP 7, ciertamente es algo que sería bueno tener, al menos para PHP 8.
¿Cuando Será la Fecha de Lanzamiento de PHP 7?
Es demasiado pronto para tener una buena estimación de la fecha de lanzamiento de PHP 7. Diferentes personas estiman tardará entre 1 a 3 años. Una suposición razonable es esperar una versión final de PHP 7 en algún momento de 2016, aunque no es imposible ver las primeras versiones alfa en el año 2015.
Así, por ahora puedes cuentar con al menos 1 año de espera hasta que puedas empezar a probar PHP 7.
Conclusiones
Las últimas novedades del lenguaje PHP sin duda han sido muy emocionantes.
Si es justo admitir que la mayoría de estos desarrollos fueron una consecuencia de Facebook empujando hacia adelante con HHVM yt el lenguaje Hack, creo que debemos agradecer a Facebook para ese empuje.
Sospecho que lo hicieron intencionalmente, es decir, empujaron a HHVM y Hack para hacer que los desarrolladores del núcleo de PHP despertaran y se movieran más rápido. En ese caso, ¡funcionó!. Sin embargo fue algo bueno para la comunidad PHP en general, así que nadie debe quejarse.
¿Qué te parece? ¿Te gustaron estas novedades en el lenguaje PHP? ¿Hay algo más que te gustaría ver pasando en el lenguaje PHP para que avanzara algo más? Enviar un comentario para decir lo que piensas.
comments powered by Disqus