Nakon godine razvoja objavljeno izdanje nove stabilne verzije programskog jezika Perl — 5.44. Tijekom pripreme novog izdanja promijenjeno je oko 270 tisuća linija koda (bez dokumentacije i automatski generiranog koda — 110 tisuća), promjene su obuhvatile 860 datoteka, a u razvoju je sudjelovalo 71 programer.
Verzija 5.44 objavljena je u skladu s odobrenim rasporedom razvoja koji je usvojen prije trinaest godina, a predviđa izdavanje novih stabilnih verzija jednom godišnje i ispravnih izdanja — svaka tri mjeseca. Oko mjesec dana planira se izdavanje prvog ispravnog izdanja Perl 5.44.1, u kojem će biti ispravljene najvažnije greške otkrivene tijekom implementacije Perl 5.44.0. Istodobno s izlaskom Perl 5.44 prestaje podrška za verziju 5.40, za koju se ažuriranja mogu objaviti u budućnosti samo u slučaju otkrivanja kritičnih problema s sigurnošću. Započeo je proces razvoja eksperimentalne verzije 5.45, na temelju koje će se u prvoj polovini 2027. godine formirati stabilno izdanje Perl 5.46, osim ako ne bude donesena odluka preći o numeraciji 7.x.
Ključne promjene:
- Dodana eksperimentalna mogućnost korištenja imenovanih parametara u potpisima funkcija, koje definiraju popis varijabli koje se predaju funkciji ne unutar tijela funkcije, nego pri njezinu deklariranju. Nova mogućnost omogućuje prijenos parametara ne u strogo definiranim redoslijedom, već u proizvoljnom redoslijedu koristeći parove ključ/vrijednost i sintaksu kao kod dodjeljivanja elemenata u hešovima:
- stara sintaksa: sub f { my ($x, $y) = @_; …} f(1, 2);
- potpisi: sub f ($x, $y) { … } f(1, 2);
- potpisi s 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. Implementirana mogućnost omogućava kreiranje aliasa u foreach petlji prilikom istovremenog dohvaćanja više vrijednosti u jednoj iteraciji petlje. Na primjer, može se stvoriti alias za element hash-a s poljem prilikom prolaska kroz ključeve i vrijednosti hash-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"; } # Do verzije 5.44 bilo bi potrebno izvesti 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 implementiran eksperimentalni način ‘enhanced_xx’, koji omogućava korištenje modifikatora /xx s klasama simbola unutar kvadratnih zagrada ([a-zA-Z]) za njihovo razdvajanje na više redaka ili dodavanje komentara. Na primjer, uvjet if ($text =~ m/[a-zA-Z]/) može se prikazati ovako: if ($text =~ m/[ a-z # mala slova A-Z # velika slova ]/xx) {
- U generatoru pseudonarandom brojeva, za dobivanje entropije koristi se sistemski poziv getentropy() na sustavima koji ga podržavaju (Linux, BSD, macOS). Na ostalim sustavima, entropija se dobiva čitanjem iz uređaja /dev/urandom ili korištenjem hash-a od vremena, identifikatora procesa i vrijednosti pokazivača.
- Dodana je podrška za specifikaciju Unicode 17.0.
- Osigurano je strogo poštivanje Unicode pravila za imena identifikatora i grupa regularnih izraza, gdje je sada zabranjeno korištenje oko 160 Unicode simbola koji su prethodno pripadali klasi w. Na primjer, iz djelovanja klase w, koja obuhvaća sve slova, brojeve i znak podcrtavanje, isključena su latinska slova u krugovima, koja nalikuju stvarnim slovima, ali to nisu. Promjena ponašanja utječe samo na programe koji koriste način use utf8.
- Ispravljene su ranjivosti uzrokovane prelivanjem bafera u funkcijama Perl_study_chunk (CVE-2026-8376, koji se manifestira u 32-bitnim izdanjima) i S_measure_struct (CVE-2026-57432), kao i prelivanje 16-bitnog brojila u Regex motoru (CVE-2026-13221), što može dovesti do neispravnog aktiviranja regularnog izraza.
- Korištenje operatera goto za prijelaz na pozicije unutar petlji i blok struktura je zabranjeno. Ova mogućnost je proglašena zastarjelom 2010. godine.
- Provode se optimizacije performansi koje su ubrzale operacije zbrajanja, oduzimanja i množenja cijelih brojeva, obradu funkcijskih potpisa i popunjavanje hešova iz lista u formatu ključ/vrijednost sa poznatim strukturnim ključevima tijekom faze kompilacije.
Izvor: linux.org.ru
