PĂ€rast aastat arendust avaldatud uue stabiilse Perl programmikeele versiooni vĂ€ljalaskmine â 5.44. Valmistamise kĂ€igus uue vĂ€ljaande puhul muudeti umbes 270 tuhat koodirea (ilma dokumentatsiooni ja automaatselt genereeritud koodita â 110 tuhat), muudatused puudutasid 860 faili, arenduses osales 71 arendajat.
Haru 5.44 on vĂ€lja antud vastavalt kolmeteistkĂŒmne aasta eest kinnitatud arendusgraafikule, mis nĂ€eb ette uute stabiilsete harude vĂ€ljaandmist kord aastas ja paranduste vĂ€ljaandmist â kord kolme kuu jooksul. Umbes kuu aja pĂ€rast on plaanis vĂ€lja anda esimene parandav versioon Perl 5.44.1, kus parandatakse kĂ”ige olulisemad vead, mis tuvastati Perl 5.44.0 rakendamise kĂ€igus. Samuti lĂ”petatakse Perl 5.44 ilmumisega haru 5.40 toimetamine, millele uuendusi vĂ”ib tulevikus vĂ€lja anda ainult kriitiliste turvaprobleemide tuvastamisel. Alustati katseharu 5.45 arendamise protsessi, mille alusel luuakse esimese poole 2027. aasta jooksul stabiilne Perl 5.46 versioon, kui ei vĂ”eta otsust ĂŒleminekuks numbrile 7.x.
Peamised muudatused:
- Lisatud eksperimentaalne vĂ”imalus kasutada nimetatud parameetreid signatuurides funktsioonide, mis mÀÀratlevad muutujaid, mis edastatakse funktsioonile mitte funktsiooni kehas, vaid selle deklareerimisel. Uus vĂ”imalus vĂ”imaldab edastada parameetreid mitte range jĂ€rjekorra jĂ€rgi, vaid vabalt, kasutades vĂ”tme/vÀÀrtuse paare ja sĂŒntaksit nagu elementide mÀÀratlemisel hash'is:
- vana sĂŒntaks: sub f { my ($x, $y) = @_ ; âŠ} f(1, 2);
- sĂŒntaksid: sub f ($x, $y) { ⊠} f(1, 2);
- nimeliselt parametrite sĂŒntaks: sub f (:$x, :$y) { ⊠} f(y => 2, x => 1);
- Lisatud on eksperimenteerimisvĂ”ime aliaside (nĂ€idikute nĂ€idikute) kasutamiseks foreach-silmustes mitme muutuja puhul. Tehtud funktsioon vĂ”imaldab luua aliasi foreach-silmuses, samal ajal eraldades mitu vÀÀrtust ĂŒhe silmuse iteratsiooni kĂ€igus. NĂ€iteks saab luua aliasi hash-elementi jaoks massiiviga, kui lĂ€bida samaaegselt hash'i vĂ”tmed ja vÀÀrtused: use v5.44; use feature qw(refaliasing declared_refs); my %hash = ( one => [1], two => [2, 2], ); foreach my ($key, @items) (%hash) { say "Massiiv $key sisaldab: @items"; } # Versioonis 5.44 oleks vaja dereferentseerimist: foreach my ($key, $var) (%hash) { say "Massiiv $key sisaldab: @$var"; } # Ilma eksperimenteerimisvĂ”imalusteta refaliasing ja declared_refs: foreach my $key (keys %hash) { say "Massiiv $key sisaldab: @{$hash{$key}}"; }
- Regulaarsed vĂ€ljendid rakendatud EksperimenteerimisreĆŸiim âenhanced_xxâ, mis vĂ”imaldab kasutada modifikaatorit /xx sĂŒmbolite klassidega nurksulgudes ([a-zA-Z]), et neid jagada mitmeks reaks vĂ”i lisada kommentaare. NĂ€iteks saab tingimuse if ($text =~ m/[a-zA-Z]/){ kujundada nii: if ($text =~ m/[ a-z # vĂ€iksed tĂ€hestiku tĂ€hed A-Z # suured tĂ€hed ]/xx) {
- Pseudo-juhtumite generaatoris, et saada entropiat, kasutatakse sĂŒsteemikĂ”net getentropy() sĂŒsteemides, mis seda toetavad (Linux, BSD, macOS). Teistes sĂŒsteemides saadakse entropia lugemisega seadme /dev/urandom vĂ”i kasutades kella, protsessi identifikaatori ja nĂ€itaja vÀÀrtuse hajutust.
- Toetuse lisamine spetsifikatsioonile Unicode 17.0.
- Unicode reeglite ranget jĂ€rgimist on tagatud identifikaatorite ja regulaarsete vĂ€ljendite rĂŒhmade nimedes, milles on nĂŒĂŒd keelatud kasutada umbes 160 Unicode-mĂ€rki, mis varem kuulusid w klassi. NĂ€iteks on w klassist, mis katab kĂ”ik tĂ€hed, numbrid ja _) sĂŒmboli, vĂ€lja jĂ€etud ja ringikujulised ladina tĂ€hed, mis meenutavad reaalseid tĂ€hti, kuid ei ole need. KĂ€itumise muutmine puudutab ainult tarkvara, mis kasutab reĆŸiimi use utf8.
- Parandatud on haavatavused, mis on pĂ”hjustatud puhverĂŒlevooludest funktsioonides Perl_study_chunk (CVE-2026-8376, ilmneb 32-bitistes kogudes) ja S_measure_struct (CVE-2026-57432), samuti 16-bitise loendurite ĂŒlevool Regex-mootoris (CVE-2026-13221), mis vĂ”ivad viia regulaarsete vĂ€ljendite vale kĂ€ivitamiseni.
- Kasutades goto operaatorit, ei ole vĂ”imalik liikuda positsioonide vahel tsĂŒklites ja plokkstruktuurides. See vĂ”imalus kuulutati aegunuks 2010. aastal.
- Tegime jÔudluse optimeerimise, mis kiirendas tÀisarvude liitmise, lahutamise ja korrutamise operatsioone, funktsioonide signatuuride töötlemist ja hashide tÀitmist vÔtme/vÀÀrtuse loenditest, kus stringide vÔtmed on kompilatsiooni ajal teada.
Allikas: linux.org.ru
