Perl 5.44


3

Despois dun ano de desenvolvemento publicado lanzamento dunha nova rama estable da linguaxe de programación Perl - 5.44... Cando preparándose A nova versión cambiou aproximadamente 270 liñas de código (sen incluír a documentación e o código xerado automaticamente: 110), os cambios afectaron a 860 ficheiros e participaron 71 desenvolvedores no desenvolvemento.

A rama 5.44 foi lanzada de acordo co calendario de desenvolvemento fixo establecido hai trece anos, que require a publicación de novas ramas estables unha vez ao ano e versións menores cada tres meses. A primeira versión menor, Perl 5.44.1, está prevista para dentro dun mes, corrixindo os erros máis significativos descubertos durante a implementación de Perl 5.44.0. Co lanzamento de Perl 5.44, rematou o soporte para a rama 5.40; é posible que as actualizacións para ela se publiquen no futuro só se se descobren problemas de seguridade críticos. Comezou. o proceso de desenvolvemento da rama experimental 5.45, que será a base para a versión estable de Perl 5.46 na primeira metade de 2027, a menos que se tome unha decisión pasar por riba de á numeración 7.x.

Chave cambios:

  • Engadido posibilidade experimental de usar parámetros con nome en sinaturas Funcións que definen a lista de variables pasadas á función non no corpo da función, senón durante a súa declaración. Esta nova funcionalidade permite que os parámetros non se pasen nunha orde estrita, senón en calquera orde, usando pares clave/valor e unha sintaxe similar á asignación de elementos en hashes:
    • sintaxe antiga: sub f { my ($x, $y) = @_; …} f(1, 2);
    • sinaturas: sub f ($x, $y) { … } f(1, 2);
    • sinaturas con parámetros nomeados: sub f (:$x, :$y) { … } f(y => 2, x => 1);
  • Engadiuse compatibilidade experimental para o uso de alias (punteiros a punteiros) en bucles foreach con varias variables. Esta funcionalidade permíteche crear un alias nun bucle foreach ao recuperar varios valores nunha única iteración do bucle. Por exemplo, podes crear un alias para un elemento hash cunha matriz ao iterar sobre as claves e os valores do hash: use v5.44; use feature qw( refaliasing declared_refs ); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, @items ) ( %hash ) { say "A matriz $key contén: @items"; } # Antes da versión 5.44, sería necesario desreferenciar: foreach my ( $key, $var ) ( %hash ) { say "A matriz $key contén: @$var"; } # Sen a refliasización experimental nin as funcionalidades declared_refs: foreach my $key (keys %hash) { say "A matriz $key contén: @{$hash{$key}}"; }
  • En expresións regulares implementado O modo experimental "enhanced_xx" permite usar o modificador /xx con clases de caracteres entre corchetes ([a-zA-Z]) para dividilas en varias liñas ou para inserir comentarios. Por exemplo, a condición if ($text =~ m/[a-zA-Z]/){ podería escribirse como: if ($text =~ m/[ a-z # letras minúsculas A-Z # letras maiúsculas ]/xx) {
  • O xerador de números pseudoaleatorios usa a chamada ao sistema getentropy() para obter entropía en sistemas que o admiten (Linux, BSD, macOS). Noutros sistemas, a entropía obtense lendo desde o dispositivo /dev/urandom ou usando un hash da hora, o ID do proceso e o valor do punteiro.
  • Engadido soporte de especificacións Unicode 17.0.
  • Garantíase o cumprimento estrito das regras de Unicode para os nomes de identificadores e os grupos de expresións regulares, e agora se prohiben aproximadamente 160 caracteres Unicode que antes estaban cubertos pola clase w. Por exemplo, a clase w, que abrangue todas as letras, díxitos e o carácter de subliñado, agora exclúe as letras latinas rodeadas por un círculo, que se asemellan a letras reais pero non o son. Este cambio de comportamento só afecta aos programas que usan o modo USE UTF8.
  • Corrixíronse vulnerabilidades causadas por desbordamentos de búfer nas funcións Perl_study_chunk (CVE-2026-8376, aparece en ensamblaxes de 32 bits) e S_measure_struct (CVE-2026-57432), así como o desbordamento do contador de 16 bits no motor Regex (CVE-2026-13221), o que pode provocar que a expresión regular falle.
  • Está prohibido saltar a posicións dentro de bucles e construcións de bloque usando o operador goto. Esta funcionalidade quedou obsoleta en 2010.
  • Realizáronse optimizacións de rendemento para acelerar a suma, resta e multiplicación de enteiros, o procesamento de sinaturas de funcións e o poboamento de hashes de listas de clave/valor con claves de cadea coñecidas no momento da compilación.

Fonte: linux.org.ru

Compre hospedaxe fiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra aloxamento web fiable con protección DDoS, servidores VPS VDS | ProHoster