Pēc gada izstrādes publicēts iznākusi jauna stabila Perl programmēšanas valodas versija — 5.44. Sagatavojot jauno izlaidumu, tika mainītas apmēram 270 tūkstoši koda rindiņu (bez dokumentācijas un automātiski ģenerēta koda — 110 tūkstoši), izmaiņas skāra 860 failus, izstrādē piedalījās 71 izstrādātājs. Versija 5.44 tika izlaista saskaņā ar pirms 13 gadiem apstiprināto fiksēto izstrādes grafiku, kas paredz jaunu stabilu versiju izdošanu reizi gadā un labojumu izlaidumus — reizi trijos mēnešos. Aptuveni pēc mēneša plānots izdot pirmo labojumu versiju Perl 5.44.1, kurā tiks novērstas visnopietnākās kļūdas, kas atklātas Perl 5.44.0 ieviešanas procesā. Tajā pašā laikā ar Perl 5.44 izdošanu tiek pārtraukta atbalsta sniegšana versijai 5.40, kurai atjauninājumi var tikt izsniegti nākotnē tikai kritisku drošības problēmu gadījumā.
Sākusies eksperimentālās versijas 5.45 izstrāde, uz kuras bāzes pirmajā pusē 2027. gadā tiks izveidota stabila Perl 5.46 versija, ja netiks pieņemts lēmums pāriet uz numerāciju 7.x. eksperimentālā iespēja izmantot nosauktos parametrus
Galvenie izmaiņas:
- Pievienota funkciju parakstos kas nosaka parametru sarakstu, ko var nodot funkcijai, nevis tās ķermenī, bet tās deklarēšanas brīdī. Jaunā iespēja ļauj nodot parametrus nevis stingrā secībā, bet brīvā secībā, izmantojot atslēgu/vērtību pārus un sintaksi, kā tiek noteikti elementi hash'os:
- vecā sintakse: sub f { my ($x, $y) = @_; …} f(1, 2);
- paraksti: sub f ($x, $y) { … } f(1, 2);
- paraksti ar nosauktajiem parametriem: sub f (:$x, :$y) { … } f(y => 2, x => 1);
- Pievienota eksperimentāla iespēja izmantot aliasus (norādes uz norādēm) foreach ciklos ar vairākām mainīgajām. Ieviestā iespēja ļauj izveidot aliasu foreach ciklā, vienlaikus iegūstot vairākas vērtības vienā cikla iterācijā. Piemēram, var izveidot aliasu elementam hashes ar masīvu, iterējot gan atslēgas, gan vērtības hashes: use v5.44; use feature qw( refaliasing declared_refs ); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, @items ) ( %hash ) { say "Masīvs $key satur: @items"; } # Līdz versijai 5.44 būtu jāveic dereference: foreach my ( $key, $var ) ( %hash ) { say "Masīvs $key satur: @$var"; } # Bez eksperimentālajām iespējām refaliasing un declared_refs: foreach my $key (keys %hash) { say "Masīvs $key satur: @{$hash{$key}}"; }
- Regulārajās izteiksmēs realizēts eksperimentālais režīms ‘enhanced_xx’, kas ļauj izmantot modifikatoru /xx ar simbolu klasēm kvadrātiskajās šķērslīnijās ([a-zA-Z]) to sadalīšanai vairākās rindās vai komentāru ievietošanai. Piemēram, nosacījumu if ($text =~ m/[a-zA-Z]/) var noformēt šādi: if ($text =~ m/[ a-z # mazie burti A-Z # lielie burti ]/xx) {
- Šifrējošo četru skaitļu ģeneratorā izmanto sistēmas izsaukumu getentropy() uz sistēmām, kas to atbalsta (Linux, BSD, macOS). Pārējās sistēmās entropijas iegūšanai tiek veikta lasīšana no ierīces /dev/urandom vai tiek izmantots laika, procesa identifikatora un rādītāja vērtības hash.
- Pievienota atbalsta specifikācija Unicode 17.0.
- Garantēta stingra Unicode noteikumu ievērošana identifikatoru un regulāro izteiksmju grupu nosaukumiem, kuros tagad ir aizliegts izmantot apmēram 160 Unicode simbolu, kas iepriekš piederēja klasei w. Piemēram, no w klases, kas aptver visas burtu, ciparu un apakšsvītru simbolus, tika izņēmti burti lokos, kas atgādina reālos burtus, bet nav tādi. Izmaiņas uzvedībā attiecas tikai uz programmām, kas izmanto režīmu use utf8.
- Novērstas ievainojamības, kas radījušās bufera pārpildes dēļ funkcijās Perl_study_chunk (CVE-2026-8376, kas izpaužas 32-bitu versijās) un S_measure_struct (CVE-2026-57432), kā arī 16-bitu skaitītāja pārpildes dēļ regulāro izteiksmju dzinējā (CVE-2026-13221), kas var novest pie nepareizas regulārās izteiksmes izpildes.
- Lietošanas operatora goto pāreja uz pozīcijām iekšējās ciklos un blokveida struktūrās ir aizliegta. Šī iespēja tika pasludināta par novecojušu 2010. gadā.
- Tika veiktas veiktspējas optimizācijas, kas paātrināja veselo skaitļu saskaitīšanas, atņemšanas un reizināšanas operācijas, funkciju parakstu apstrādi un hash aizpildīšanu no atslēgu/vērtību sarakstiem ar kompilācijas laikā zināmiem virsrakstu atslēgām.
Avots: linux.org.ru
