Linguagem de programação Perl 5.44 disponível

Após um ano de desenvolvimento, a nova versão estável da linguagem de programação Perl, versão 5.44, foi lançada. Na preparação desta nova versão, aproximadamente 270 linhas de código foram alteradas (excluindo documentação e código gerado automaticamente – 110 linhas), afetando 860 arquivos, e 71 desenvolvedores contribuíram para o seu desenvolvimento.

A versão 5.44 foi lançada de acordo com o cronograma de desenvolvimento fixo estabelecido há treze anos, que prevê o lançamento de novas versões estáveis ​​uma vez por ano e versões secundárias a cada três meses. A primeira versão secundária, Perl 5.44.1, está prevista para ser lançada em cerca de um mês, corrigindo os bugs mais significativos descobertos durante a implementação do Perl 5.44.0. Juntamente com o lançamento do Perl 5.44, o suporte para a versão 5.40 foi encerrado; atualizações para ela poderão ser lançadas no futuro apenas se forem descobertos problemas críticos de segurança. O desenvolvimento da versão experimental 5.45 foi iniciado e servirá de base para o lançamento da versão estável Perl 5.46 no primeiro semestre de 2027, a menos que seja tomada a decisão de adotar a numeração de versão 7.x.

Principais mudanças:

  • Adicionada a capacidade experimental de usar parâmetros nomeados em assinaturas de funções. Esses parâmetros definem a lista de variáveis ​​passadas para a função não no corpo da função, mas durante sua declaração. A nova capacidade permite passar parâmetros não em ordem estrita, mas em qualquer ordem, usando pares chave/valor e sintaxe semelhante à atribuição de elementos em hashes: Sintaxe antiga: sub f { my ($x, $y) = @_; …} f(1, 2); Assinaturas: sub f ($x, $y) { … } f(1, 2); Assinaturas com parâmetros nomeados: sub f (:$x, :$y) { … } f(y => 2, x => 1);
  • Adicionado suporte experimental para o uso de aliases (ponteiros para ponteiros) em loops foreach com múltiplas variáveis. Este recurso permite criar um alias em um loop foreach ao recuperar múltiplos valores em uma única iteração do loop. Por exemplo, você pode criar um alias para um elemento de um hash com um array ao iterar sobre as chaves 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 "O array $key contém: @items"; } # Antes da versão 5.44, a desreferenciação seria necessária: foreach my ( $key, $var ) ( %hash ) { say "O array $key contém: @$var"; } # Sem os recursos experimentais de refaliasing e declared_refs: foreach my $key (keys %hash) { say "O array $key contém: @{$hash{$key}}"; }
  • As expressões regulares agora possuem um modo experimental 'enhanced_xx', que permite o uso do modificador "/xx" com classes de caracteres entre colchetes ([a-zA-Z]) para dividi-las em várias linhas ou inserir comentários. Por exemplo, a condição "if ($text =~ m/[a-zA-Z]/){" poderia ser escrita como: if ($text =~ m/[ a-z # letras minúsculas A-Z # letras maiúsculas ]/xx) {
  • O gerador de números pseudoaleatórios usa a chamada de sistema getentropy() para obter entropia em sistemas que a suportam (Linux, BSD, macOSEm outros sistemas, a entropia é obtida lendo do dispositivo /dev/urandom ou usando um hash do tempo, ID do processo e valor do ponteiro.
  • Adicionado suporte para especificação Unicode 17.0.
  • A estrita conformidade com as regras Unicode foi garantida para nomes de identificadores e grupos de expressões regulares, com aproximadamente 160 caracteres Unicode anteriormente cobertos pela classe "\w" agora proibidos. Por exemplo, a classe "\w", que abrange todas as letras, dígitos e o caractere de sublinhado, agora exclui letras latinas circundadas, que se assemelham a letras reais, mas não o são. Essa mudança de comportamento afeta apenas programas que utilizam o modo "use utf8".
  • Foram corrigidas vulnerabilidades de estouro de buffer nas funções Perl_study_chunk (CVE-2026-8376, que afeta compilações de 32 bits) e S_measure_struct (CVE-2026-57432), bem como um estouro de contador de 16 bits no mecanismo Regex (CVE-2026-13221), que poderia levar à execução incorreta de uma expressão regular.
  • Saltar para posições dentro de laços e estruturas de bloco usando o operador goto é proibido. Este recurso foi descontinuado em 2010.
  • Foram feitas otimizações de desempenho para acelerar a adição, subtração e multiplicação de números inteiros, o processamento de assinaturas de funções e o preenchimento de hashes a partir de listas de chave/valor com chaves de string conhecidas em tempo de compilação.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção DDoS, servidores VPS VDS 🔥 Compre hospedagem de sites confiável com proteção contra DDoS, servidores VPS/VDS | ProHoster