Po letu razvoja objavljeno izdaja nove stabilne veje programskega jezika Perl - 5.44... Kdaj pripravljajo Nova izdaja je spremenila približno 270 vrstic kode (brez dokumentacije in samodejno generirane kode - 110), spremembe so vplivale na 860 datotek, pri razvoju pa je sodelovalo 71 razvijalcev.
Veja 5.44 je bila izdana v skladu s fiksnim razvojnim urnikom, določenim pred trinajstimi leti, ki predvideva izdajo novih stabilnih vej enkrat letno in manjših izdaj vsake tri mesece. Prva manjša izdaja, Perl 5.44.1, je predvidena za izdajo čez približno mesec dni in bo odpravila najpomembnejše napake, odkrite med implementacijo Perla 5.44.0. Z izdajo Perla 5.44 se je podpora za vejo 5.40 končala; posodobitve zanjo bodo morda izdane v prihodnosti le, če bodo odkrite kritične varnostne težave. Se je začel proces razvoja eksperimentalne veje 5.45, ki bo osnova za stabilno izdajo Perla 5.46 v prvi polovici leta 2027, razen če bo sprejeta odločitev pojdi čez do oštevilčenja 7.x.
Ključ Spremembe:
- Dodano eksperimentalna možnost uporabe imenovanih parametrov v podpisi Funkcije, ki definirajo seznam spremenljivk, ki se posredujejo funkciji, ne v telesu funkcije, temveč med njeno deklaracijo. Ta nova funkcija omogoča posredovanje parametrov ne v strogem vrstnem redu, temveč v poljubnem vrstnem redu z uporabo parov ključ/vrednost in sintakse, podobne dodeljevanju elementov v zgoščenih vrednostih:
- stara sintaksa: sub f { my ($x, $y) = @_; …} f(1, 2);
- podpisi: pod f ($x, $y) { … } f(1, 2);
- podpisi z imenovanimi parametri: sub f (:$x, :$y) { … } f(y => 2, x => 1);
- Dodana eksperimentalna podpora za uporabo vzdevkov (kazalcev na kazalce) v zankah foreach z več spremenljivkami. Ta funkcija vam omogoča ustvarjanje vzdevka v zanki foreach pri pridobivanju več vrednosti v eni sami iteraciji zanke. Na primer, lahko ustvarite vzdevek za element zgoščene vrednosti z matriko pri iteraciji po ključih in vrednostih zgoščene vrednosti: uporabite v5.44; uporabite funkcijo qw(refaliasing declared_refs); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, @items ) ( %hash ) { say "Matrika $key vsebuje: @items"; } # Pred različico 5.44 je bila potrebna dereferenca: foreach my ( $key, $var ) ( %hash ) { say "Matrika $key vsebuje: @$var"; } # Brez eksperimentalnega ponovnega fazoliranja in funkcij declared_refs: foreach my $key (keys %hash) { say "Niz $key vsebuje: @{$hash{$key}}"; }
- V regularnih izrazih izvajati Eksperimentalni način 'enhanced_xx' omogoča uporabo modifikatorja /xx z razredi znakov v oglatih oklepajih ([a-zA-Z]), da jih razdelimo čez več vrstic ali vstavimo komentarje. Na primer, pogoj if ($text =~ m/[a-zA-Z]/){ bi lahko zapisal kot: if ($text =~ m/[ a-z # male črke A-Z # velike črke ]/xx) {
- Generator psevdonaključnih števil uporablja sistemski klic getentropy() za pridobitev entropije na sistemih, ki jo podpirajo (LinuxBSD, macOS). V drugih sistemih se entropija pridobi z branjem iz naprave /dev/urandom ali z uporabo zgoščene vrednosti časa, ID-ja procesa in vrednosti kazalca.
- Dodana podpora za specifikacije Unicode 17.0.
- Za imena identifikatorjev in skupine regularnih izrazov je bilo zagotovljeno strogo upoštevanje pravil Unicode, pri čemer je približno 160 znakov Unicode, ki jih je prej zajemal razred w, zdaj prepovedanih. Na primer, razred w, ki zajema vse črke, številke in podčrtaj, zdaj izključuje obkrožene latinske črke, ki so podobne dejanskim črkam, vendar niso. Ta sprememba vedenja vpliva samo na programe, ki uporabljajo način utf8.
- Odpravljene ranljivosti, ki jih je povzročilo prelivanje medpomnilnika v funkcijah Perl_study_chunk (CVE-2026-8376, se pojavlja v 32-bitnih sklopih) in S_measure_struct (CVE-2026-57432), kot tudi prekoračitev 16-bitnega števca v mehanizmu Regex (CVE-2026-13221), kar lahko povzroči neuspeh regularnega izraza.
- Skakanje na položaje znotraj zank in blokovnih konstrukcij z uporabo operatorja goto je prepovedano. Ta funkcija je bila leta 2010 opuščena.
- Izvedene so bile optimizacije delovanja za pospešitev seštevanja, odštevanja in množenja celih števil, obdelave podpisov funkcij in vnosa zgoščevalnih vrednosti iz seznamov ključev/vrednosti z nizi ključev, ki so znani ob prevajanju.
Vir: linux.org.ru
