Perl 7 anunciado

En la conferencia virtual de desarrolladores del lenguaje Perl de hoy Anunciado un proyecto de Perl 7 que continuará sin problemas el desarrollo de la rama de Perl 5 sin realizar cambios radicales. Perl 7 será un lanzamiento similar Perl 5.32.0, excepto otras configuraciones predeterminadas que son más consistentes con las prácticas de desarrollo modernas. De lo contrario, Perl 7 seguirá siendo el mismo que Perl 5 y seguirá siendo compatible con aplicaciones desarrolladas anteriormente.

Un cambio significativo en el número de versión actuará como una especie de separador en la transición a un nuevo modelo para aumentar la funcionalidad del lenguaje Perl sin una violación notable de la compatibilidad con versiones anteriores.
Se espera que el lanzamiento de Perl 7 ayude a atraer nuevos desarrolladores a Perl y ayude a agilizar el proceso de agregar nuevas características importantes al lenguaje manteniendo la compatibilidad con el código base de los proyectos existentes. Se eligió el número 7 porque se utilizó Perl 6 para desarrollar el lenguaje que ahora se utiliza. está desarrollando bajo el nombre separado Raku. Se espera el primer lanzamiento de Perl 7 el próximo año. La rama Perl 5.32 será la última de la serie Perl 5 y está previsto que tenga soporte durante 5 a 10 años.

El cambio más notable en Perl 7 es la inclusión de "estricto“, lo que implica una verificación estricta de las declaraciones de variables, el uso de punteros simbólicos y asignaciones de subrutinas. Usar "uso estricto" es una buena forma y lo utilizan la mayoría de los desarrolladores. Del mismo modo, de forma predeterminada planean habilitar el procesamiento de advertencias (“usar advertencias").

Perl 7 también espera estabilizar y habilitar de forma predeterminada algunas características experimentales ya existentes, como firmas de funciones (“usar característica 'firmas'”), que permiten, al definir una función, determinar los argumentos entrantes y automatizar la verificación de su número (puede escribir “sub foo ($left, $right) {” en lugar de “sub foo { mi($izquierda, $derecha) ) = @_;"). Planean incluir por defecto soporte para el operador “isa” para verificar si un objeto es una instancia de una clase específica o una clase derivada de ella (“if( $obj isa Package::Name)”, así como desreferenciación de postfix. operaciones (postderef) “$ sref->$*" en lugar de "${ $sref }", "$aref->@*" en lugar de "@{ $aref }" y "$href->%{ ... }" en lugar de "%$href{... } "

Los contendientes por estar deshabilitados de forma predeterminada en Perl 7 son:

  • Notación de llamada de objeto indirecto ("sin característica qw (indirecta)") es una forma heredada de llamar objetos, usando un espacio en lugar de "->" ("método $objeto @param" en lugar de "$objeto->$método(@param)"). Por ejemplo, en lugar de “mi $cgi = nuevo CGI”, siempre usarías “mi $cgi = CGI->nuevo”.
  • Descriptores de archivos desnudos sin declaraciones de variables ("sin palabra clave::identificador de archivo") - el uso de construcciones como “abrir FH, $archivo” generará un error; debe utilizar “abrir mi $fh, $archivo”. El cambio no afectará a los descriptores de archivos estándar STDIN, STDOUT, STDERR, ARGV, ARGVOUT y DATA.
  • Matrices multidimensionales ficticias y hashes estilo Perl 4 ("no multidimensional").
    Por ejemplo, especificar "$hash{1, 2}" generará un error; es necesario utilizar una matriz intermedia, por ejemplo "$hash{join($;, 1, 2)}".

  • Declarar prototipos en estilo Perl 4 (es necesario utilizar "use :prototype()").

En planes más lejanos, esperan habilitar la compatibilidad con Unicode de forma predeterminada, lo que evitará que los desarrolladores especifiquen "usar utf8" en el código. Para módulos y scripts que tienen problemas con la nueva configuración predeterminada, es posible volver al comportamiento de Perl 5 agregando la línea "use compat::perl5" al código. Las configuraciones individuales también se guardarán y se podrán cambiar individualmente.

Fuente: opennet.ru

Añadir un comentario