PÀrast aastast arengut avaldatud Perli programmeerimiskeele uue stabiilse haru vÀljalase - 5.44... Millal valmistub Uus versioon muutis ligikaudu 270 000 koodirida (vÀlja arvatud dokumentatsioon ja automaatselt genereeritud kood - 110 000), muudatused mÔjutasid 860 faili ja arenduses osales 71 arendajat.
Haru 5.44 on avaldatud vastavalt kolmteist aastat tagasi kehtestatud fikseeritud arendusgraafikule, mis nĂ€eb ette uute stabiilsete harude avaldamist kord aastas ja vĂ€iksemate vĂ€ljalasete avaldamist iga kolme kuu tagant. Esimene vĂ€iksem vĂ€ljalase, Perl 5.44.1, on kavas avaldada umbes kuu aja pĂ€rast, parandades Perl 5.44.0 juurutamise kĂ€igus avastatud kĂ”ige olulisemad vead. Perl 5.44 vĂ€ljaandmisega on 5.40 haru tugi lĂ”ppenud; selle vĂ€rskendusi vĂ”idakse tulevikus avaldada ainult kriitiliste turvaprobleemide avastamisel. On alanud eksperimentaalse haru 5.45 arendusprotsess, mis on aluseks Perli 5.46 stabiilsele vĂ€ljalaskele 2027. aasta esimesel poolel, kui otsust ei tehta mine ĂŒle numeratsioonini 7.x.
VÔti muutused:
- Lisatud nimetatud parameetrite kasutamise eksperimentaalne vĂ”imalus allkirjad Funktsioonid, mis defineerivad funktsioonile edastatavate muutujate loendi mitte funktsiooni kehas, vaid selle deklareerimise ajal. See uus funktsioon vĂ”imaldab parameetreid edastada mitte ranges jĂ€rjekorras, vaid suvalises jĂ€rjekorras, kasutades vĂ”tme/vÀÀrtuse paare ja sĂŒntaksit, mis sarnaneb elementide mÀÀramisega rĂ€sivÀÀrtustes:
- vana sĂŒntaks: sub f { my ($x, $y) = @_; âŠ} f(1, 2);
- signatuurid: sub f ($x, $y) { ⊠} f(1, 2);
- signatuurid nimega parameetritega: sub f (:$x, :$y) { ⊠} f(y => 2, x => 1);
- Lisatud eksperimentaalne tugi aliaste (pointerid pointeritele) kasutamiseks foreach-tsĂŒklites mitme muutujaga. See funktsioon vĂ”imaldab teil luua aliase foreach-tsĂŒklis mitme vÀÀrtuse hankimisel ĂŒhe tsĂŒkli iteratsioonis. NĂ€iteks saate luua aliase rĂ€sielemendile massiiviga, kui itereeritakse nii rĂ€si vĂ”tmete kui ka vÀÀrtuste ĂŒle: kasutage versiooni 5.44; kasutage funktsiooni qw( realiasing declared_refs ); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, @items ) ( %hash ) { say "$key massiiv sisaldab: @items"; } # Enne versiooni 5.44 oleks viidete eemaldamine vajalik: foreach my ( $key, $var ) ( %hash ) { say "$key massiiv sisaldab: @$var"; } # Ilma eksperimentaalse ĂŒmbervalimise ja declared_refs funktsioonideta: foreach my $key (keys %hash) { say "$key massiiv sisaldab: @{$hash{$key}}"; }
- Regulaaravaldistes rakendatud Eksperimentaalne reĆŸiim âenhanced_xxâ lubab /xx modifikaatorit kasutada nurksulgudes ([a-zA-Z]) olevate mĂ€rgiklassidega, et jagada need mitmele reale vĂ”i lisada kommentaare. NĂ€iteks tingimus if ($text =~ m/[a-zA-Z]/){ vĂ”iks olla kirjutatud jĂ€rgmiselt: if ($text =~ m/[ a-z # vĂ€iketĂ€hed A-Z # suurtĂ€hed ]/xx) {
- Pseudojuhuslike arvude generaator kasutab getentropy() sĂŒsteemikĂ”net entroopia saamiseks sĂŒsteemides, mis seda toetavad (Linux, BSD, macOS). Teistes sĂŒsteemides saadakse entroopia /dev/urandom seadmest lugemise vĂ”i aja, protsessi ID ja pointeri vÀÀrtuse rĂ€si abil.
- Lisatud spetsifikatsiooni tugi Unicode 17.0.
- Identifikaatorite nimede ja regulaaravaldiste rĂŒhmade puhul on tagatud Unicode'i reeglite range jĂ€rgimine, kusjuures ligikaudu 160 Unicode'i tĂ€hemĂ€rki, mis varem kuulusid w-klassi alla, on nĂŒĂŒd keelatud. NĂ€iteks w-klass, mis hĂ”lmab kĂ”iki tĂ€hti, numbreid ja alakriipsu, vĂ€listab nĂŒĂŒd ringiga ĂŒmbritsetud ladina tĂ€hed, mis kĂŒll meenutavad pĂ€ris tĂ€hti, aga ei ole. See kĂ€itumise muutus mĂ”jutab ainult programme, mis kasutavad use utf8 reĆŸiimi.
- Parandatud Perl_study_chunk funktsioonide puhvri ĂŒletĂ€itumisest tingitud haavatavused (CVE-2026-8376, ilmub 32-bitistes assemblerites) ja S_measure_struct (CVE-2026-57432), samuti 16-bitise loenduri ĂŒletĂ€itumine Regexi mootoris (CVE-2026-13221), mis vĂ”ib pĂ”hjustada regulaaravaldise ebaĂ”nnestumise.
- TsĂŒklites ja plokkkonstruktsioonides positsioonidele hĂŒppamine goto operaatori abil on keelatud. See funktsioon aegus 2010. aastal.
- TÀisarvude liitmise, lahutamise ja korrutamise, funktsioonide signatuuride töötlemise ning vÔtme-/vÀÀrtusloenditest pÀrit rÀsivÀÀrtuste tÀitmise kiirendamiseks kompileerimise ajal teadaolevate stringvÔtmetega tehti jÔudluse optimeerimisi.
Allikas: linux.org.ru
