Po metų plėtros paskelbti naujos stabilios Perl programavimo kalbos šakos išleidimas - 5.44... Kada rengia Naujoje versijoje buvo pakeista maždaug 270 000 kodo eilučių (neskaitant dokumentacijos ir automatiškai generuojamo kodo – 110 000), pakeitimai paveikė 860 failų, o kūrime dalyvavo 71 kūrėjas.
5.44 šaka buvo išleista pagal prieš trylika metų nustatytą fiksuotą kūrimo grafiką, pagal kurį naujos stabilios šakos turi būti išleidžiamos kartą per metus, o nedidelės versijos – kas tris mėnesius. Pirmoji mažesnė versija, „Perl 5.44.1“, planuojama išleisti maždaug po mėnesio, joje bus ištaisytos svarbiausios klaidos, aptiktos diegiant „Perl 5.44.0“. Išleidus „Perl 5.44“, 5.40 šakos palaikymas baigėsi; jos atnaujinimai ateityje gali būti išleisti tik tuo atveju, jei bus aptikta kritinių saugumo problemų. Prasidėjo eksperimentinės 5.45 šakos kūrimo procesas, kuris bus pagrindas stabiliam „Perl 5.46“ išleidimui 2027 m. pirmoje pusėje, nebent bus priimtas sprendimas pereiti iki numeracijos 7.x.
Raktas pokyčiai:
- Pridėta eksperimentinė galimybė naudoti įvardytus parametrus parašai Funkcijos, kurios apibrėžia funkcijai perduodamų kintamųjų sąrašą ne funkcijos tekste, o jos deklaravimo metu. Ši nauja funkcija leidžia perduoti parametrus ne griežta tvarka, o bet kokia tvarka, naudojant raktų/reikšmių poras ir sintaksę, panašią į elementų priskyrimą maišos koduose:
- sena sintaksė: sub f { my ($x, $y) = @_; …} f(1, 2);
- parašai: sub f ($x, $y) { … } f(1, 2);
- parašai su pavadintais parametrais: sub f (:$x, :$y) { … } f(y => 2, x => 1);
- Pridėta eksperimentinė pseudonimų (rodyklių į rodykles) naudojimo foreach cikluose su keliais kintamaisiais palaikymo funkcija. Ši funkcija leidžia sukurti pseudonimą foreach cikle, kai vieno ciklo iteracijoje gaunamos kelios reikšmės. Pavyzdžiui, galite sukurti pseudonimą maišos elementui su masyvu, kai iteracijoje peržiūrite ir maišos raktus, ir reikšmes: naudokite v5.44; naudokite funkciją qw( realiasing declared_refs); my %hash = ( one => [1], two => [2, 2],); foreach my ( $key, @items ) ( %hash ) { say "$key masyve yra: @items"; } # Iki 5.44 versijos būtų reikėjęs nuorodų pašalinimas: foreach my ( $key, $var ) ( %hash ) { say "$key masyve yra: @$var"; } # Be eksperimentinio pakartotinio atvaizdavimo ir „declared_refs“ funkcijų: foreach my $key (keys %hash) { say "$key masyve yra: @{$hash{$key}}"; }
- Reguliariosiose išraiškose įgyvendinta Eksperimentinis „enhanced_xx“ režimas leidžia naudoti /xx modifikatorių su simbolių klasėmis laužtiniuose skliaustuose ([a-zA-Z]), kad būtų galima jas padalinti į kelias eilutes arba įterpti komentarus. Pavyzdžiui, sąlyga if ($text =~ m/[a-zA-Z]/){ galėtų būti parašyta taip: if ($text =~ m/[ a-z # mažosios raidės A-Z # didžiosios raidės ]/xx) {
- Pseudoatsitiktinių skaičių generatorius naudoja sistemos iškvietimą getentropy(), kad gautų entropiją sistemose, kurios jį palaiko (Linux, BSD, macOSKitose sistemose entropija gaunama nuskaitant duomenis iš /dev/urandom įrenginio arba naudojant laiko, proceso ID ir rodyklės reikšmės maišą.
- Pridėtas specifikacijų palaikymas Unicode 17.0.
- Griežtas Unicode taisyklių laikymasis buvo užtikrintas identifikatorių pavadinimams ir reguliariųjų išraiškų grupėms, o maždaug 160 Unicode simbolių, kuriuos anksčiau apėmė „w“ klasė, dabar yra draudžiami. Pavyzdžiui, „w“ klasė, apimanti visas raides, skaitmenis ir pabraukimo simbolį, dabar neapima apibrauktų lotyniškų raidžių, kurios primena tikras raides, bet nėra tokios. Šis elgesio pakeitimas veikia tik programas, kurios naudoja „use utf8“ režimą.
- Ištaisytos „Perl_study_chunk“ funkcijų buferio perpildymo sukeltos spragos (CVE-2026-8376, pasirodo 32 bitų surinkimuose) ir S_measure_struct (CVE-2026-57432), taip pat 16 bitų skaitiklio perpildymas „Regex“ variklyje (CVE-2026-13221), dėl ko reguliarioji išraiška gali neveikti.
- Draudžiama peršokti į pozicijas cikluose ir blokų konstrukcijose naudojant operatorių „goto“. Ši funkcija buvo nebenaudojama 2010 m.
- Buvo atlikti našumo optimizavimai, siekiant pagreitinti sveikųjų skaičių sudėties, atimties ir daugybos operacijas, funkcijų parašų apdorojimą ir maišos kodų užpildymą iš raktų/reikšmių sąrašų su kompiliavimo metu žinomais eilučių raktais.
Šaltinis: linux.org.ru
