Perl 7 continuará el desarrollo de Perl 5 sin romper la compatibilidad hacia atrás

El consejo de administración del proyecto Perl resumió los planes para el desarrollo futuro de la rama Perl 5 y la creación de la rama Perl 7. En las discusiones, el consejo acordó que no se puede romper la compatibilidad con el código ya escrito para Perl 5, excepto en aquellos casos donde la ruptura de la compatibilidad sea necesaria para eliminar vulnerabilidades. El consejo también concluyó que el lenguaje debe evolucionar y que se deben promover más intensamente las nuevas características, simplificando al mismo tiempo el acceso a las innovaciones emergentes y estimulando su implementación.

A diferencia de las intenciones iniciales, que permitían la inclusión por defecto en la rama Perl 7 de cambios que rompen la compatibilidad hacia atrás, el nuevo plan implica una transición gradual de la rama Perl 5 a Perl 7 sin romper la compatibilidad hacia atrás con el código existente. El lanzamiento de Perl 7.0 no diferirá conceptualmente de una nueva versión de Perl 5.xx.

El desarrollo de nuevas versiones de Perl 5 continuará de la misma manera: las nuevas características añadidas a la rama que son incompatibles con el código antiguo solo se incluirán mediante la indicación explícita en el código de las pragmas "use version" o "use feature feature_name". Por ejemplo, en la versión Perl 5.010 se introdujo una nueva palabra clave "say", pero dado que en el código existente se podían usar funciones con el nombre "say", el soporte para la nueva palabra clave se activaba solamente con la indicación explícita de la pragma "use feature 'say'".

La nueva sintaxis añadida al lenguaje, que en versiones anteriores generaba un error de procesamiento, ahora estará disponible sin necesidad de especificar pragmas especiales. Por ejemplo, en Perl 5.36 se presentará una sintaxis simplificada para el procesamiento simultáneo de múltiples valores de una lista ("foreach my ( ext{key}, ext{value}) ( ext{hash}) {") que estará disponible de inmediato, incluso en el código sin la pragma "use v5.36".

En su forma actual, en Perl 5.36, al usar la pragma "use v5.36" se activan 13 características que rompen la compatibilidad ('say', 'state', 'current_sub', 'fc', 'lexical_subs', 'signatures', 'isa', 'bareword_filehandles', 'bitwise', 'evalbytes', 'postderef_qq', 'unicode_eval' y 'unicode_strings'), se activan por defecto los modos "use strict" y "use warnings" y se desactiva el soporte para la obsoleta notación indirecta de llamada de objetos (donde en lugar de "->" se usa un espacio) y para arreglos y hashes multidimensionales al estilo Perl 4 ("$hash{1, 2}").

Cuando se acumulen suficientes cambios, en lugar de una nueva versión de Perl 5.x, se formará la versión Perl 7.0, que representará un corte del estado actual, pero seguirá siendo completamente compatible hacia atrás con Perl 5. Para incluir cambios y configuraciones que rompen la compatibilidad, será necesario añadir explícitamente en el código la pragma «use v7». Es decir, el código con la pragma «use v7» puede interpretarse como «Perl moderno», en el que están disponibles cambios en el lenguaje que rompen la compatibilidad, mientras que sin ella será «Perl conservador», que seguirá siendo completamente compatible hacia atrás con versiones anteriores.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster