Perl 7 continuará sin problemas el desarrollo de Perl 5 sin romper la compatibilidad con versiones anteriores.

El Consejo de Gobierno del Proyecto Perl esbozó planes para un mayor desarrollo de la rama Perl 5 y la creación de una rama de Perl 7. Durante las discusiones, el Consejo de Gobierno acordó que no es aceptable romper la compatibilidad con el código ya escrito para Perl 5, a menos que se rompa La compatibilidad es necesaria para corregir las vulnerabilidades. El Consejo también concluyó que el lenguaje debería evolucionar y las nuevas características deberían promoverse más intensamente, al tiempo que se facilitaría el acceso a las innovaciones emergentes y se fomentaría su adopción.

A diferencia de las intenciones originales de permitir que los cambios que rompen la compatibilidad con versiones anteriores se incluyan de forma predeterminada en la rama Perl 7, el nuevo plan es realizar una transición gradual de la rama Perl 5 a Perl 7 sin romper la compatibilidad con el código existente. La versión Perl 7.0 no será conceptualmente diferente de la próxima rama Perl 5.xx.

El desarrollo de nuevas versiones de Perl 5 continuará como antes: las nuevas funciones agregadas a la rama que sean incompatibles con el código anterior se incluirán, como antes, solo si se especifica explícitamente el pragma "usar versión" o "usar característica característica". en el código. Por ejemplo, Perl 5.010 introdujo una nueva palabra clave "decir", pero dado que el código existente podía usar funciones denominadas "decir", la compatibilidad con la nueva palabra clave se habilitaba solo especificando explícitamente el pragma "usar característica 'decir'".

La nueva sintaxis agregada al lenguaje, que cuando se procesó en versiones anteriores generó un error, pasa a estar disponible inmediatamente sin necesidad de especificar pragmas especiales. Por ejemplo, Perl 5.36 introducirá una sintaxis simplificada para procesar múltiples valores de lista a la vez (“foreach my ($key, $value) (%hash) {”) que estará disponible de inmediato, incluso en código sin el “use pragma v5.36”.

En su forma actual, Perl 5.36 utiliza el pragma "usar v5.36" para habilitar 13 características que rompen la interoperabilidad ('say', 'state', 'current_sub', 'fc', 'lexical_subs', 'signatures', 'isa ', ' bareword_filehandles', 'bitwise', 'evalbytes', 'postderef_qq', 'unicode_eval' y 'unicode_strings'), habilitan los modos "usar estricto" y "usar advertencias" de forma predeterminada y deshabilitan la compatibilidad con la notación indirecta heredada para llamar a objetos (cuando en lugar de “- >" usa un espacio) y matrices y hashes multidimensionales estilo Perl 4 ("$hash{1, 2}").

Cuando se hayan acumulado suficientes cambios, en lugar de la próxima versión de Perl 5.x, se generará una versión de Perl 7.0, que se convertirá en una especie de instantánea de estado, pero seguirá siendo totalmente compatible con Perl 5. Para habilitar cambios y configuraciones que rompen la compatibilidad, necesitarás agregar explícitamente el pragma "usar v7" al código. Aquellos. El código con el pragma "usar v7" se puede tratar como "Perl moderno", en el que están disponibles cambios de lenguaje que rompen la compatibilidad, y sin "Perl conservador", que seguirá siendo totalmente compatible con versiones anteriores.

Fuente: opennet.ru

Añadir un comentario