Perl 5.44


3

Después de un año de desarrollo publicado lanzamiento de la nueva rama estable del lenguaje de programación Perl — 5.44. Durante la preparación de la nueva versión, se cambiaron alrededor de 270,000 líneas de código (sin contar la documentación y el código generado automáticamente — 110,000), los cambios afectaron a 860 archivos, y 71 desarrolladores participaron en el desarrollo.

La rama 5.44 fue lanzada de acuerdo con el cronograma fijo aprobado hace trece años, que prevé la publicación de nuevas ramas estables una vez al año y de versiones corregidas cada tres meses. Se planea lanzar la primera versión corregida Perl 5.44.1 aproximadamente un mes después, que corregirá los errores más significativos identificados durante la implementación de Perl 5.44.0. Simultáneamente con el lanzamiento de Perl 5.44, se ha dejado de dar soporte a la rama 5.40, para la cual las actualizaciones solo podrán lanzarse en el futuro en caso de que se detecten problemas críticos de seguridad. Ha comenzado el proceso de desarrollo de la rama experimental 5.45, sobre la cual se formará una versión estable de Perl 5.46 en la primera mitad de 2027, a menos que se tome la decisión de pasar a la numeración 7.x.

Mejoras clave cambios:

  • Se ha añadido una funcionalidad experimental que permite el uso de parámetros nombrados en las firmas de funciones, que definen la lista de variables pasadas a la función no dentro del cuerpo de la función, sino en su declaración. Esta nueva funcionalidad permite pasar parámetros no en un estricto orden secuencial, sino en un orden arbitrario utilizando pares clave/valor y la sintaxis como en la asignación de elementos en hashes:
    • sintaxis antigua: sub f { my ($x, $y) = @_; …} f(1, 2);
    • firmas: sub f ($x, $y) { … } f(1, 2);
    • firmas con parámetros nombrados: sub f (:$x, :$y) { … } f(y => 2, x => 1);
  • Se ha añadido una función experimental para usar alias (punteros a punteros) en ciclos foreach con múltiples variables. La funcionalidad implementada permite crear un alias dentro del ciclo foreach mientras se extraen simultáneamente varios valores en una sola iteración del ciclo. Por ejemplo, se puede formar un alias para un elemento de un hash con un array al recorrer las claves y valores del hash a la vez: use v5.44; use feature qw( refaliasing declared_refs ); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, @items ) ( %hash ) { say "El array $key contiene: @items"; } # Antes de la versión 5.44, se necesitaría hacer la desreferenciación: foreach my ( $key, $var ) ( %hash ) { say "El array $key contiene: @$var"; } # Sin las funcionalidades experimentales refaliasing y declared_refs: foreach my $key (keys %hash) { say "El array $key contiene: @{$hash{$key}}"; }
  • En expresiones regulares el modo «BACKUP LOCK», que se puede utilizar durante la copia de seguridad de archivos de la base de datos; el modo experimental ‘enhanced_xx’, que permite usar el modificador /xx con clases de símbolos en corchetes ([a-zA-Z]) para dividirlas en varias líneas o insertar comentarios. Por ejemplo, la condición if ($text =~ m/[a-zA-Z]/) se puede expresar así: if ($text =~ m/[ a-z # letras minúsculas A-Z # letras mayúsculas ]/xx) {
  • En el generador de números pseudoaleatorios, se emplea la llamada al sistema getentropy() para obtener entropía en sistemas que lo soportan (Linux, BSD, macOS). En otros sistemas, se obtiene entropía leyendo del dispositivo /dev/urandom o utilizando un hash del tiempo, el identificador de proceso y el valor del puntero.
  • Se ha añadido soporte para la especificación Unicode 17.0.
  • Se asegura el cumplimiento estricto de las reglas de Unicode para nombres de identificadores y grupos de expresiones regulares, en los que ahora se prohíbe el uso de cerca de 160 caracteres Unicode que anteriormente pertenecían a la clase w. Por ejemplo, se han excluido de la acción de la clase w, que abarca todas las letras, los números y el carácter de subrayado, las letras latinas en círculos, que parecen letras reales pero no lo son. Este cambio de comportamiento solo afecta a los programas que utilizan el modo use utf8.
  • Se han eliminado vulnerabilidades causadas por desbordamientos de búfer en las funciones Perl_study_chunk (CVE-2026-8376, que se manifiestan en compilaciones de 32 bits) y S_measure_struct (CVE-2026-57432), así como el desbordamiento de un contador de 16 bits en el motor de Regex (CVE-2026-13221), lo que puede provocar una activación incorrecta de la expresión regular.
  • No se permite el salto mediante el operador goto a posiciones dentro de bucles y estructuras de bloque. Esta posibilidad fue declarada obsoleta en 2010.
  • Se han realizado optimizaciones de rendimiento que aceleran las operaciones de suma, resta y multiplicación de números enteros, el procesamiento de firmas de funciones y la llenado de hashes a partir de listas en formato clave/valor con claves de cadena conocidas en tiempo de compilación.

Fuente: linux.org.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