Pas një viti zhvillimi u publikua lëshimi i degës së re të programimit Perl - 5.44. Gjatë përgatitjes për lëshimin e ri u ndryshuan rreth 270 mijë rreshta kodi (pa dokumentacionin dhe kodin e gjeneruar automatikisht - 110 mijë), ndryshimet prekun 860 skedarë, dhe në zhvillim morën pjesë 71 zhvillues.
Dega 5.44 u lëshua sipas një kalendari të miratuar 13 vjet më parë, i cili parashikon lëshimin e degëve të reja të qëndrueshme çdo vit dhe lëshime korrigjues çdo tre muaj. Rreth një muaj pas këtij lëshimi, planifikohet që të lëshohet lëshimi korrigjues i parë Perl 5.44.1, në të cilin do të rregullohen gabimet më të mëdha të zbuluara gjatë implementimit të Perl 5.44.0. Po ashtu, me daljen e Perl 5.44 mbështetja për degën 5.40 ka mbaruar, për të cilën përditësime mund të lëshohen në të ardhmen vetëm në rast se zbulohen probleme kritike me sigurinë. Ka filluar procesi i zhvillimit të degës eksperimentale 5.45, mbi të cilën në gjysmën e parë të vitit 2027 do të formohet një lëshim i stabilizuar i Perl 5.46, nëse nuk merret vendim për t'u kaluar në numerimin 7.x.
Karakteristikat kryesore ndryshime:
- Shtuar mundësia eksperimentale për të përdorur parametra të emëruar në nënshkrimet e funksioneve, që përcaktojnë listën e variablave të kaluara në funksion jo në trupin e funksionit, por gjatë shpalljes së tij. Kjo mundësi e re lejon kalimin e parametra jo në rend të rreptë, por në një rend të lirë duke përdorur çiftet çelës/vlerë dhe sintaksën siç është caktimi i elementeve në hash:
- sintaksa e vjeter: sub f { my ($x, $y) = @_; âŠ} f(1, 2);
- nënshkrimet: sub f ($x, $y) { ⊠} f(1, 2);
- nënshkrimet me parametra të emëruar: sub f (:$x, :$y) { ⊠} f(y => 2, x => 1);
- ĂshtĂ« shtuar njĂ« mundĂ«si eksperimantale pĂ«r tĂ« pĂ«rdorur aliase (shenjat e treguesit) nĂ« ciklet foreach me disa ŰȘŰșÙ۱ۧۚ. MundĂ«sia e implementuar lejon krijimin e njĂ« aliasi nĂ« ciklin foreach gjatĂ« marrjes sĂ« menjĂ«hershme tĂ« disa vlerave nĂ« njĂ« iteracion tĂ« vetĂ«m tĂ« ciklit. PĂ«r shembull, mund tĂ« formohet njĂ« alias pĂ«r njĂ« element hash me njĂ« array gjatĂ« kalimit tĂ« njĂ«kohshĂ«m tĂ« çelĂ«save dhe vlerave tĂ« hash-it: use v5.44; use feature qw( refaliasing declared_refs ); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, @items ) ( %hash ) { say "Arrayi $key pĂ«rmban: @items"; } # Para versionit 5.44 duhet tĂ« ekzekutohej derefencing: foreach my ( $key, $var ) ( %hash ) { say "Arrayi $key pĂ«rmban: @$var"; } # Pa mundĂ«sitĂ« eksperimantale refaliasing dhe declared_refs: foreach my $key (keys %hash) { say "Arrayi $key pĂ«rmban: @{$hash{$key}}"; }
- Në shprehjet e rregullta është implementuar modi eksperimantal 'enhanced_xx', i cili lejon përdorimin e modifikuesit /xx me klasat e simboleve në kllapa katrore ([a-zA-Z]) për t'i ndarë ato në disa rreshta ose për të vendosur komente. Për shembull, kushti if ($text =~ m/[a-zA-Z]/) mund të formohet kështu: if ($text =~ m/[ a-z # shkronjat e vogla A-Z # shkronjat e mëdha ]/xx) {
- Në gjeneratorin e numrave pseudo-të rastit, për të fituar entropi përdoret thirrja sistemike getentropy() në sistemet që e mbështesin (Linux, BSD, macOS). Në sistemet e tjera, për të fituar entropi, bëhet lexim nga paisja /dev/urandom ose përdorimi i hashes nga koha, identifikatori i procesit dhe vlera e treguesit.
- Shtuar përkrahja për specifikimin Unicode 17.0.
- Shtrohet një zbatim i rreptë i rregullave të Unicode për emrat e identifikatorëve dhe grupet e shprehjeve të rregullta, ku tani ndalohet përdorimi i rreth 160 simboleve Unicode, të cilat më parë përfshiheshin në klasën w. Për shembull, nga veprimi i klasës w, që mbulon të gjitha shkronjat, numrat dhe simbolet e nënvizimit, janë përjashtuar shkronjat latine në forma rrethore, që i ngjajnë shkronjave të vërteta, por nuk janë ato. Ndryshimi i sjelljes ndikon vetëm programet që përdorin modalitetin use utf8.
- Janë eliminuar dobësitë e shkaktuara nga mbushjet e tamponëve në funksionet Perl_study_chunk (CVE-2026-8376, që manifestohet në ndërtimet 32-bit) dhe S_measure_struct (CVE-2026-57432), si dhe mbushja e shpejtësisë 16-bit në motorin Regex (CVE-2026-13221), e cila mund të çojë në shfaqjen e gabuar të shprehjes së rregullt.
- Kalimi i përdorimit të operatorit goto për kalimin në pozita brenda cikleve dhe strukturave bllok është ndaluar. Kjo mundësi u shpall e vjetruar në vitin 2010.
- Janë kryer optimizime të performancës që kanë përshpejtuar operacionet e shtrimit, zbritjes dhe shumzimit të numrave të plotë, përpunimin e nënshkrimeve të funksioneve dhe mbushjen e hash-eve nga lista në formatin çelës/vlerë me çelësa stringut të njohur në fazën e kompilimit.
Burimi: linux.org.ru
