Pas njĂ« vit zhvillimi Ă«shtĂ« publikuar lĂ«shimi i degĂ«s sĂ« re tĂ« qĂ«ndrueshme tĂ« gjuhĂ«s sĂ« programimit Perl â 5.44. GjatĂ« pĂ«rgatitjes nĂ« kĂ«tĂ« lĂ«shim janĂ« ndryshuar rreth 270 mijĂ« rreshta kodi (pa dokumentacionin dhe kodin e gjeneruar automatikisht â 110 mijĂ«), ndryshimet prekin 860 skedarĂ«, ndĂ«rsa nĂ« zhvillim kanĂ« marrĂ« pjesĂ« 71 zhvillues.
Dega 5.44 është lëshuar sipas një plani të miratuar trembëdhjetë vjet më parë, duke parashikuar lëshimin e degëve të reja të qëndrueshme çdo vit dhe të lëshimeve korrigjuese çdo tre muaj. Pjesërisht pas një muaji, pritet të lëshohet lëshimi i parë korrigjues Perl 5.44.1, në të cilin do të rregullohen gabimet më të rëndësishme që janë identifikuar gjatë implementimit të Perl 5.44.0. Në të njëjtën kohë me daljen e Perl 5.44, është ndaluar mbështetja për degën 5.40, për të cilën përditësimet mund të lëshohen në të ardhmen vetëm në rast të identifikimit të problematikave kritike të sigurisë. Ka filluar procesi i zhvillimit të deges eksperimentale 5.45, mbi të cilën në gjysmën e parë të vitit 2027 do të formohet një lëshim stabil i Perl 5.46, nëse nuk do të merret një vendim për të kaluar në numërimin 7.x.
ĂelĂ«sore nĂ«:
- Shtuar mundësia eksperimentale për përdorimin e parametrave me emra në nënshkrimet e funksioneve, që përcaktojnë listën e variablave të kaluar në funksion jo brenda trupit të funksionit, por gjatë shpalljes së tij. Kjo mundësi e re lejon kalimin e parametrave jo në rend strik, por në një rend të çfarëdoshëm duke përdorur çiftet çelës/vlerë dhe sintaksën e ngjashme me caktimin e elementeve në hesh:
- sintaksa e vjetĂ«r: sub f { my ($x, $y) = @_; âŠ} f(1, 2);
- sintaksa: sub f ($x, $y) { ⊠} f(1, 2);
- sintaksa me parametra të emëruar: sub f (:$x, :$y) { ⊠} f(y => 2, x => 1);
- ĂshtĂ« shtuar njĂ« funksionalitet eksperimental qĂ« lejon pĂ«rdorimin e aliasĂ«ve (shĂ«nuesve pĂ«r shĂ«nues) nĂ« ciklet foreach me disa variabla. Funksionaliteti i realizuar lejon krijimin e njĂ« aliasi nĂ« ciklin foreach duke nxjerrĂ« menjĂ«herĂ« disa vlera nĂ« njĂ« iterim tĂ« vetĂ« ciklit. PĂ«r shembull, Ă«shtĂ« e mundur tĂ« formohet njĂ« alias pĂ«r njĂ« element hash me njĂ« array gjatĂ« pĂ«rshkimit tĂ« njĂ«kohshĂ«m tĂ« çelĂ«sve 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 "Array $key pĂ«rmban: @items"; } # Para versionit 5.44, do tĂ« ishte e nevojshme tĂ« kryhej dereferimi: foreach my ( $key, $var ) ( %hash ) { say "Array $key pĂ«rmban: @$var"; } # Pa mundĂ«sitĂ« eksperimentale refaliasing dhe declared_refs: foreach my $key (keys %hash) { say "Array $key pĂ«rmban: @{$hash{$key}}"; }
- NĂ« shprehjet e rregullta i realizuar rezhimi eksperimental âenhanced_xxâ, qĂ« 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 apo 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ë gjenerimin e numrave pseudo-rastësorë për të marrë entropi, përdoret thirrja sistemike getentropy() në sistemet që e mbështesin atë (Linux, BSD, macOS). Në sistemet e tjera, entropia gjenerohet duke lexuar nga pajisja /dev/urandom ose duke përdorur hash-in nga koha, identifikatori i procesit dhe vlerën e treguesit.
- Mbështetje e shtuar për specifikimin Unicode 17.0.
- Sigurohet respektimi i rreptë i rregullave të Unicode për emrat e identifikuesve dhe grupet e shprehjeve të rregullta, të cilat tani ndalojnë përdorimin e rreth 160 simboleve Unicode, të cilat më parë përfshiheshin në klasën w. Për shembull, nga veprimi i klasës w, që përfshin të gjitha shkronjat, numrat dhe simbolin e nënvizimit, janë përjashtuar shkronjat latine të rrethuar, të cilat i ngjajnë shkronjave reale, por nuk janë ato. Ndryshimi i sjelljes ndikon vetëm në programet që përdorin modin use utf8.
- Shtuar lëndimet e shkaktuara nga mbingarkesat e tamponëve në funksionet Perl_study_chunk (CVE-2026-8376, që shfaqet në ndërtimet 32-bitë) dhe S_measure_struct (CVE-2026-57432), si dhe mbingarkesa e numrit 16-bit në motorin Regex (CVE-2026-13221), e cila mund të çojë në ekzekutimin e gabuar të shprehjes së rregullt.
- Përdorimi i operatorit goto për kalimin në pozita brenda cikleve dhe strukturave blloku është i ndaluar. Kjo mundësi u shpall e vjetruar në vitin 2010.
- Janë kryer optimizime në performancë që përshpejtojnë operacionet e shtimit, zbritjes dhe shumëzimit të numrave të plotë, përpunimin e nënshkrimeve të funksioneve dhe mbushjen e hash-eve nga lista në format çelës/vlerë me çelësa string të njohur në fazën e kompilanimit.
Burimi: linux.org.ru
