Después de un año de desarrollo publicado lanzamiento de una nueva rama estable del lenguaje de programación Perl - 5.44. En preparando La nueva versión modificó aproximadamente 270 líneas de código (excluyendo la documentación y el código generado automáticamente: 110), los cambios afectaron a 860 archivos y 71 desarrolladores participaron en su desarrollo.
La rama 5.44 se ha publicado de acuerdo con el calendario de desarrollo establecido hace trece años, que prevé la publicación de nuevas ramas estables una vez al año y versiones menores cada tres meses. La primera versión menor, Perl 5.44.1, está programada para su lanzamiento en aproximadamente un mes y corregirá los errores más importantes detectados durante la implementación de Perl 5.44.0. Con el lanzamiento de Perl 5.44, finaliza el soporte para la rama 5.40; solo se publicarán actualizaciones para esta rama en el futuro si se descubren problemas de seguridad críticos. Ha comenzado el proceso de desarrollo de la rama experimental 5.45, que será la base para el lanzamiento estable de Perl 5.46 en la primera mitad de 2027, a menos que se tome una decisión ir hasta la numeración 7.x.
Llave cambios:
- Añadido por posibilidad experimental de utilizar parámetros nombrados en firmas Funciones que definen la lista de variables que se pasan a la función no en el cuerpo de la función, sino durante su declaración. Esta nueva característica permite pasar parámetros no en un orden estricto, sino en cualquier orden, utilizando pares clave/valor y una sintaxis similar a 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 con nombre: sub f (:$x, :$y) { … } f(y => 2, x => 1);
- Se agregó soporte experimental para usar alias (punteros a punteros) en bucles foreach con múltiples variables. Esta característica permite crear un alias en un bucle foreach al recuperar múltiples valores en una sola iteración del bucle. Por ejemplo, puede crear un alias para un elemento hash con una matriz al iterar sobre las claves y los valores del hash: use v5.44; use feature qw( refaliasing declaration_refs ); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, @items ) ( %hash ) { say "La matriz $key contiene: @items"; } # Antes de la versión 5.44, se requeriría la desreferenciación: foreach my ( $key, $var ) ( %hash ) { say "La matriz $key contiene: @$var"; } # Sin las características experimentales de refaliasing y declaration_refs: foreach my $key (keys %hash) { say "El array $key contiene: @{$hash{$key}}"; }
- En expresiones regulares implementado El modo experimental 'enhanced_xx' permite usar el modificador /xx con clases de caracteres entre corchetes ([a-zA-Z]) para dividirlas en varias líneas o insertar comentarios. Por ejemplo, la condición if ($text =~ m/[a-zA-Z]/){ podría escribirse como: if ($text =~ m/[ a-z # letras minúsculas A-Z # letras mayúsculas ]/xx) {
- El generador de números pseudoaleatorios utiliza la llamada al sistema getentropy() para obtener la entropía en los sistemas que lo admiten (Linux, BSD, macOSEn otros sistemas, la entropía se obtiene leyendo del dispositivo /dev/urandom o utilizando un hash de la hora, el ID del proceso y el valor del puntero.
- Se agregó soporte para especificaciones Unicode 17.0.
- Se ha garantizado el estricto cumplimiento de las reglas Unicode para los nombres de identificadores y los grupos de expresiones regulares, y se han prohibido aproximadamente 160 caracteres Unicode que antes estaban incluidos en la clase w. Por ejemplo, la clase w, que abarca todas las letras, dígitos y el guion bajo, ahora excluye las letras latinas encerradas en un círculo, que se parecen a letras reales pero no lo son. Este cambio de comportamiento solo afecta a los programas que utilizan el modo utf8.
- Se corrigieron las vulnerabilidades causadas por desbordamientos de búfer en las funciones Perl_study_chunk (CVE-2026-8376, aparece en ensamblados de 32 bits) y S_measure_struct (CVE-2026-57432), así como el desbordamiento del contador de 16 bits en el motor de expresiones regulares (CVE-2026-13221), lo que puede provocar que la expresión regular falle.
- Está prohibido saltar a posiciones dentro de bucles y estructuras de bloques utilizando el operador goto. Esta función quedó obsoleta en 2010.
- Se realizaron optimizaciones de rendimiento para acelerar la suma, la resta y la multiplicación de números enteros, el procesamiento de la firma de funciones y la creación de hashes a partir de listas de clave/valor con claves de cadena conocidas en tiempo de compilación.
Fuente: linux.org.ru
