Po letu razvoja objavljen izdaja nove stabilne verzije programskog jezika Perl — 5.44. U pripremi novog izdanja promenjeno je oko 270 hiljada linija koda (bez dokumentacije i automatski generisanog koda — 110 hiljada), a izmenjeni su 860 fajlova, u razvoju je učestvovalo 71 programer.
Verzija 5.44 je objavljena prema odobrenom fiksnom rasporedu razvoja usvojenom pre trinaest godina, koji podrazumeva izdavanje novih stabilnih verzija jednom godišnje i korektivnih izdanja — svakih tri meseca. Oko mesec dana kasnije planira se izdavanje prvog korektivnog izdanja Perl 5.44.1, u kojem će biti ispravljene najznačajnije greške otkrivene tokom implementacije Perl 5.44.0. Istovremeno sa izlaskom Perl 5.44 prestaje podrška za verziju 5.40, za koju će ažuriranja možda biti objavljena u budućnosti samo u slučaju otkrivanja kritičnih bezbednosnih problema. Započeo je proces razvoja eksperimentalne verzije 5.45, na bazi koje će u prvoj polovini 2027. godine biti formirana stabilna verzija Perl 5.46, osim ako ne bude doneta odluka preiti o numeraciji 7.x.
Ključne spremembe:
- Dodana eksperimentalna mogućnost korišćenja imenovanih parametara u potpisima funkcija, koje definišu spisak promenljivih koje se prenose u funkciju ne u telu funkcije, već prilikom njene deklaracije. Nova mogućnost omogućava prenos parametara ne u strogom redosledu, već po slobodno izabranom redosledu uz korišćenje parova ključ/vrednost i sintaksu kao pri dodeljivanju elemenata u hešovima:
- stari sintaks: sub f { my ($x, $y) = @_; …} f(1, 2);
- potpisi: sub f ($x, $y) { … } f(1, 2);
- potpisi sa imenovanim parametrima: sub f (:$x, :$y) { … } f(y => 2, x => 1);
- Dodana je eksperimentalna mogućnost korištenja aliasa (pokazivača na pokazivače) u foreach petljama s više varijabli. Ova implementirana mogućnost omogućuje stvaranje aliasa unutar foreach petlje dok se istovremeno izvlače nekoliko vrijednosti u jednoj iteraciji petlje. Na primjer, može se kreirati alias za element haša s nizom prilikom zajedničkog prolaska kroz ključeve i vrijednosti haša: use v5.44; use feature qw( refaliasing declared_refs ); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, @items ) ( %hash ) { say "Niz $key sadrži: @items"; } # Prije verzije 5.44 potrebno je bilo izvršiti dereferenciranje: foreach my ( $key, $var ) ( %hash ) { say "Niz $key sadrži: @$var"; } # Bez eksperimentalnih mogućnosti refaliasing i declared_refs: foreach my $key (keys %hash) { say "Niz $key sadrži: @{$hash{$key}}"; }
- U regularnim izrazima je realiziran eksperimentalni način 'enhanced_xx', koji omogućava korištenje modifikatora /xx s klasama simbola u uglatim zagradama ([a-zA-Z]) za njihovo razdvajanje na nekoliko redova ili umetanje komentara. Na primjer, uvjet if ($text =~ m/[a-zA-Z]/) može se oblikovati ovako: if ($text =~ m/[ a-z # mala slova A-Z # velika slova ]/xx) {
- U generatoru pseudonasumičnih brojeva, za prikupljanje entropije koristi se sistemski poziv getentropy() na sustavima koji ga podržavaju (Linux, BSD, macOS). Na ostalim sustavima za prikupljanje entropije koristi se čitanje iz uređaja /dev/urandom ili upotreba hash-a na osnovu vremena, identifikatora procesa i vrijednosti pokazivača.
- Dodana je podpora specifikaciji Unicode 17.0.
- Osigurano je strogo poštivanje pravila Unicode za imena identifikatora i skupina regularnih izraza, pri čemu je sada zabranjeno korištenje oko 160 Unicode simbola koji su ranije bili obuhvaćeni klasom w. Na primjer, iz djelovanja klase w, koja obuhvaća sve slova, brojeve i simbol donje crte, isključena su latinična slova u krugovima koja podsećaju na prava slova, ali to nisu. Promjena ponašanja dotiče se samo programa koji koriste režim use utf8.
- Ispravljene su ranjivosti izazvane prelivanjem bafera u funkcijama Perl_study_chunk (CVE-2026-8376), što se manifestira u 32-bitnim izradama i S_measure_struct (CVE-2026-57432), kao i prelivanje 16-bitnog brojača u Regex motoru (CVE-2026-13221), što može dovesti do neispravnog okidanja regularnog izraza.
- Uporaba operatorja goto za prehod na točke znotraj zank in blokov konstrukcij je prepovedana. Ta možnost je bila razglašena za zastarelo v letu 2010.
- Izvedene so bile optimizacije zmogljivosti, ki so pospešile operacije seštevanja, odštevanja in množenja celih števil, obdelavo funkcijskih podpisov ter izpolnjevanje hashev iz seznamov v formatu ključ/vrednost z znanimi nizovnimi ključi v času prevajanja.
Izvor: linux.org.ru
