Dostępny język programowania Perl 5.36.0

Po roku rozwoju opublikowano nową, stabilną gałąź języka programowania Perl, 5.36. Podczas przygotowywania nowej wersji zmieniono około 250 tysięcy linii kodu, zmiany dotyczyły 2000 plików, w rozwoju wzięło udział 82 programistów.

Branch 5.36 jest wydawany zgodnie ze stałym harmonogramem rozwoju zatwierdzonym dziewięć lat temu, który zakłada wydawanie nowych stabilnych gałęzi raz w roku i wydania korygujące co trzy miesiące. Pierwsza wersja korygująca Perla 5.36.1 ma zostać wydana za około miesiąc i naprawiać najważniejsze błędy zidentyfikowane podczas wdrażania Perla 5.36.0. Wraz z wydaniem Perla 5.36 zarzucono obsługę gałęzi 5.32, którą można zaktualizować w przyszłości tylko w przypadku zidentyfikowania krytycznych problemów związanych z bezpieczeństwem. Rozpoczął się także proces rozwoju gałęzi eksperymentalnej 5.37, z której w maju lub czerwcu 2023 r. powstanie stabilna wersja Perla 5.38, chyba że zostanie podjęta decyzja o przejściu na numerację 7.x.

Kluczowe zmiany:

  • Ustabilizowano obsługę sygnatur funkcji i jest ona teraz dostępna po podaniu pragmy „use v5.36”, która pozwala jawnie zdefiniować listę zmiennych używanych w funkcji oraz zautomatyzować operacje sprawdzania i przypisywania wartości z tablicy parametrów wejściowych. Na przykład poprzednio użyty kod: sub foo { die "Zbyt wiele argumentów dla podprogramu" chyba że @_ >= 2; die „Zbyt mało argumentów dla podprogramu”, chyba że @_ <= 2; my($w lewo, $w prawo) = @_; zwróć $w lewo + $w prawo; }

    w przypadku stosowania podpisów można go zastąpić:

    sub foo ($w lewo, $w prawo) { return $w lewo + $w prawo; }

    Wywołanie foo z więcej niż dwoma argumentami spowoduje, że interpreter zgłosi błąd. Lista obsługuje także specjalną zmienną „$”, która pozwala zignorować część argumentów, np. „sub foo ($left, $, $right)” pozwoli skopiować do listy tylko pierwszy i trzeci argument zmiennych, podczas gdy dokładnie trzy argumenty.

    Składnia podpisu pozwala również określić opcjonalne argumenty i ustawić wartości domyślne w przypadku braku argumentu. Na przykład, podając „sub foo ($left, $right = 0)”, drugi argument staje się opcjonalny, a w przypadku jego braku przekazywana jest wartość 0. W operacji przypisania można określić dowolne wyrażenie, m.in. inne zmienne z listy lub zmienne globalne. Określenie skrótu lub tablicy zamiast zmiennej (na przykład „sub foo ($left, @right)”) spowoduje możliwość przekazania jednego lub więcej argumentów.

  • W funkcjach zadeklarowanych przy użyciu sygnatur obsługa dodatkowego przypisania parametrów z tablicy „@_” jest uznawana za eksperymentalną i skutkuje ostrzeżeniem (ostrzeżenie pojawia się tylko w przypadku użycia @_ w funkcjach zadeklarowanych przy użyciu nowej składni). Na przykład zostanie wyświetlone ostrzeżenie dla funkcji: użyj wersji 5.36; sub f ($x, $y = 123) { powiedz „Pierwszy argument to $_[0]”; }
  • Stabilizowany i dostępny po określeniu pragmy „use v5.36”, operatora wrostka „isa” służącego do sprawdzania, czy obiekt jest instancją określonej klasy lub klasą pochodną od niej. Na przykład: if( $obj isa Package::Name ) { … }
  • Po podaniu pragmy „użyj v5.36” włączone zostanie przetwarzanie ostrzeżeń (włączony zostanie tryb „użyj ostrzeżeń”).
  • Przy podaniu pragmy „use v5.36” wyłączona jest obsługa pośredniej notacji wywołującej obiekty („feature indirect”) – przestarzały sposób wywoływania obiektów, w którym zamiast „->” używana jest spacja („metoda $ obiekt @param” zamiast „$object-> $method(@param)”). Na przykład zamiast „moje $cgi = nowe CGI” możesz użyć „moje $cgi = CGI->nowe”.
  • Podczas określania pragmy „use v5.36” wyłączona została obsługa emulacji tablic wielowymiarowych i skrótów w stylu Perla 4 („funkcja wielowymiarowa”), co umożliwiło tłumaczenie wielu kluczy na tablicę pośrednią (na przykład „$hash{1 , 2}”) zostało przekonwertowane na „$hash{join($;, 1, 2)}”).
  • Pragma „use v5.36” wyłącza obsługę eksperymentalnego mechanizmu rozgałęziania („przełącznik funkcji”) podobnego do instrukcji switch i case (Perl używa słów kluczowych podany i kiedy). Od wersji Perl 5.36 musisz jawnie określić „użyj funkcji „przełącznik”, aby użyć tej funkcji, a określenie „użyj wersji” nie będzie już automatycznie włączać tej funkcji.
  • Stabilizowana i dostępna domyślnie obsługa dodatkowych klas znaków w nawiasach kwadratowych wewnątrz wyrażeń regularnych. Ta funkcja umożliwia dopasowywanie przy użyciu rozszerzonych reguł przecinania, wykluczania i łączenia wielu znaków. Na przykład „[AZ - W]” to znaki od A do Z z wyłączeniem W.
  • Obsługa operacji „(?”, „( )”, „{ }” i „[ ]” jest częściowo ustabilizowana i domyślnie dostępna. Można używać znaków „„ ””, „„ ”” itp. Na przykład „qr” „”.
  • Zabronione jest wywoływanie funkcji sortowania bez argumentów, co spowoduje teraz wyświetlenie błędu. @a = sortowanie @puste; # kontynuuj @a = sortuj; # zgłosi błąd @a = sort (); # zostanie zgłoszony błąd
  • Zaproponowano nową flagę wiersza poleceń „-g”, umożliwiającą pobieranie całego pliku zamiast wiersza po wierszu. Flaga ma taki sam efekt jak „-0777”.
  • Obsługa specyfikacji Unicode została zaktualizowana do wersji 14.0.
  • Zapewniona jest natychmiastowa obsługa wyjątków zmiennoprzecinkowych (SIGFPE), podobna do innych alarmów, takich jak SIGSEGV, umożliwiając dołączenie niestandardowych procedur obsługi do sygnału SIGFPE za pośrednictwem $SIG{FPE}, na przykład wyświetlenie numeru linii, w której wystąpił problem.
  • Zaktualizowane wersje modułów zawartych w podstawowej dystrybucji.
  • Dodano optymalizacje wydajności. Zapewniona jest możliwość wydajniejszego przechowywania dużych kluczy skrótu, bez użycia współdzielonych tabel ciągów. Wydajność tworzenia nowych wartości skalarnych została znacznie poprawiona, przykładowo następujący kod jest teraz o 30% szybszy: $str = "A" x 64; for (0..1_000_000) { @svs = split //, $str }
  • Kod interpretera zaczął wykorzystywać niektóre konstrukcje zdefiniowane w standardzie C99. Budowanie Perla wymaga teraz kompilatora obsługującego C99. Obsługa montażu została usunięta w starszych wersjach MSVC++ (przed VC12). Dodano obsługę montażu w Microsoft Visual Studio 2022 (MSVC++ 14.3).
  • Usunięto obsługę platform AT&T UWIN, DOS/DJGPP i Novell NetWare.

Źródło: opennet.ru

Dodaj komentarz