Perl 5.44


3

Po roku rozwoju opublikowany wydanie nowej stabilnej gałęzi języka programowania Perl - 5.44... Gdy przygotowywanie W nowej wersji zmieniono około 270 000 linii kodu (nie wliczając dokumentacji i kodu generowanego automatycznie - 110 000), zmiany dotyczyły 860 plików, a w opracowaniu brało udział 71 programistów.

Gałąź 5.44 została wydana zgodnie ze stałym harmonogramem rozwoju ustanowionym trzynaście lat temu, który zakłada wydawanie nowych stabilnych gałęzi raz w roku, a wydań pobocznych co trzy miesiące. Pierwsze wydanie poboczne, Perl 5.44.1, ma ukazać się za około miesiąc i zawierać poprawki do najpoważniejszych błędów wykrytych podczas wdrażania Perla 5.44.0. Wraz z wydaniem Perla 5.44 zakończyło się wsparcie dla gałęzi 5.40; aktualizacje dla niej mogą zostać wydane w przyszłości tylko w przypadku wykrycia krytycznych luk w zabezpieczeniach. Rozpoczęty proces rozwoju eksperymentalnej gałęzi 5.45, która będzie podstawą stabilnego wydania Perla 5.46 w pierwszej połowie 2027 roku, chyba że zostanie podjęta decyzja podejdź do numeracji 7.x.

Klucz zmiany:

  • Dodany eksperymentalna możliwość wykorzystania nazwanych parametrów w podpisy Funkcje definiujące listę zmiennych przekazywanych do funkcji nie w ciele funkcji, ale podczas jej deklaracji. Ta nowa funkcja pozwala na przekazywanie parametrów nie w ściśle określonej kolejności, ale w dowolnej, za pomocą par klucz/wartość i składni podobnej do przypisywania elementów w haszach:
    • stara składnia: sub f { my ($x, $y) = @_; …} f(1, 2);
    • podpisy: sub f ($x, $y) { … } f(1, 2);
    • podpisy z nazwanymi parametrami: sub f (:$x, :$y) { … } f(y => 2, x => 1);
  • Dodano eksperymentalną obsługę używania aliasów (wskaźników do wskaźników) w pętlach foreach z wieloma zmiennymi. Ta funkcja umożliwia utworzenie aliasu w pętli foreach podczas pobierania wielu wartości w jednej iteracji pętli. Na przykład, można utworzyć alias dla elementu hash z tablicą podczas iteracji zarówno po kluczach, jak i wartościach hash: użyj v5.44; użyj funkcji qw( refaliasing declared_refs ); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, @items ) ( %hash ) { say "Tablica $key zawiera: @items"; } # Przed wersją 5.44 dereferencjonowanie było wymagane: foreach my ( $key, $var ) ( %hash ) { say "Tablica $key zawiera: @$var"; } # Bez eksperymentalnego refaliasingu i funkcji declared_refs: foreach my $key (keys %hash) { say "Tablica $key zawiera: @{$hash{$key}}"; }
  • W wyrażeniach regularnych wdrożone Eksperymentalny tryb „enhanced_xx” pozwala na użycie modyfikatora /xx z klasami znaków w nawiasach kwadratowych ([a-zA-Z]), aby podzielić je na wiele wierszy lub wstawić komentarze. Na przykład warunek if ($text =~ m/[a-zA-Z]/){ można zapisać jako: if ($text =~ m/[ a-z # małe litery A-Z # wielkie litery ]/xx) {
  • Generator liczb pseudolosowych wykorzystuje wywołanie systemowe getentropy() w celu uzyskania entropii w systemach, które go obsługują (Linux, BSD, macOS). W innych systemach entropię uzyskuje się poprzez odczyt z urządzenia /dev/urandom lub przy użyciu skrótu czasu, identyfikatora procesu i wartości wskaźnika.
  • Dodano obsługę specyfikacji Unicode 17.0.
  • Zapewniono ścisłe przestrzeganie reguł Unicode w przypadku nazw identyfikatorów i grup wyrażeń regularnych, a około 160 znaków Unicode, wcześniej objętych klasą „w”, jest teraz zabronionych. Na przykład klasa „w”, obejmująca wszystkie litery, cyfry i znak podkreślenia, wyklucza teraz litery łacińskie w kółkach, które przypominają prawdziwe litery, ale nimi nie są. Ta zmiana w zachowaniu dotyczy tylko programów korzystających z trybu „use utf8”.
  • Naprawiono luki w zabezpieczeniach spowodowane przepełnieniem bufora w funkcjach Perl_study_chunk (CVE-2026-8376, występuje w zestawach 32-bitowych) i S_measure_struct (CVE-2026-57432), a także przepełnienie 16-bitowego licznika w silniku wyrażeń regularnych (CVE-2026-13221), co może spowodować błąd wyrażenia regularnego.
  • Przeskakiwanie do pozycji w pętlach i konstrukcjach bloków za pomocą operatora goto jest zabronione. Ta funkcja została wycofana w 2010 roku.
  • Zoptymalizowano wydajność w celu przyspieszenia dodawania, odejmowania i mnożenia liczb całkowitych, przetwarzania podpisów funkcji i wypełniania skrótów z list kluczy/wartości kluczami łańcuchowymi znanymi w momencie kompilacji.

Źródło: linux.org.ru

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster