Efter ett Ă„rs utveckling publicerades utgĂ„van av den nya stabila grenen av programmeringssprĂ„ket Perl â 5.44. Vid förberedelsen av den nya versionen har cirka 270 000 rader kod Ă€ndrats (utan dokumentation och automatiskt genererad kod â 110 000), Ă€ndringarna berörde 860 filer, och 71 utvecklare deltog i arbetet.
Gren 5.44 har slÀppts i enlighet med den faststÀllda utvecklingsplanen som antogs för tretton Är sedan, vilken innebÀr att nya stabila grenar slÀpps en gÄng per Är och korrigerande utgÄvor - en gÄng vart tredje mÄnad. UngefÀr en mÄnad efter slÀppet planeras den första korrigerande utgÄvan av Perl 5.44.1, dÀr de mest betydande felen som upptÀckts under implementeringen av Perl 5.44.0 kommer att ÄtgÀrdas. Samtidigt som Perl 5.44 slÀpps avbryts stödet för gren 5.40, för vilken uppdateringar endast kan slÀppas i framtiden om kritiska sÀkerhetsproblem upptÀcks. Processen har pÄbörjats för utvecklingen av den experimentella grenen 5.45, pÄ basis av vilken en stabil version av Perl 5.46 kommer att skapas under första halvan av 2027, om inte beslut fattas att övergÄ till numreringen 7.x.
Nyckel för:
- Tillagd den experimentella möjligheten att anvÀnda namngivna parametrar i signaturer av funktioner, som definierar listan över variabler som överförs till funktionen, inte i funktionens kropp, utan vid dess deklaration. Den nya funktionen gör det möjligt att överföra parametrar i en icke-strikt ordning, utan i godtycklig ordning med hjÀlp av nyckel/vÀrde-par och syntaxen som vid tilldelning av element i hashar:
- den gamla syntaksen: sub f { my ($x, $y) = @_; âŠ} f(1, 2);
- signaturer: sub f ($x, $y) { ⊠} f(1, 2);
- signaturer med namngivna parametrar: sub f (:$x, :$y) { ⊠} f(y => 2, x => 1);
- En experimentell funktion har lagts till som möjliggör anvÀndning av alias (pekare pÄ pekare) i foreach-loopar med flera variabler. Den implementerade funktionen gör det möjligt att skapa ett alias i en foreach-loop vid samtidig hÀmtning av flera vÀrden i en iteration av loopen. Till exempel kan ett alias skapas för ett hash-element med en array nÀr man itererar över nycklar och vÀrden i hashen: use v5.44; use feature qw( refaliasing declared_refs ); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, @items ) ( %hash ) { say "Den $key arrayen innehÄller: @items"; } # Före version 5.44 skulle avavlÀsning krÀvas: foreach my ( $key, $var ) ( %hash ) { say "Den $key arrayen innehÄller: @$var"; } # Utan de experimentella funktionerna refaliasing och declared_refs: foreach my $key (keys %hash) { say "Den $key arrayen innehÄller: @{$hash{$key}}"; }
- I reguljÀra uttryck genomförd den experimentella lÀget 'enhanced_xx' som tillÄter anvÀndning av modifieraren /xx med teckenkategorier i hakparenteser ([a-zA-Z]) för att dela upp dem pÄ flera rader eller infoga kommentarer. Till exempel kan villkoret if ($text =~ m/[a-zA-Z]/) skrivas sÄ hÀr: if ($text =~ m/[ a-z # smÄ bokstÀver A-Z # stora bokstÀver ]/xx) {
- I generatorn för pseudotillfÀlliga nummer anvÀnds systemanropet getentropy() för att fÄ entropi pÄ system som stöder detta (Linux, BSD, macOS). PÄ andra system uppnÄs entropi genom att lÀsa frÄn en enhet /dev/urandom eller genom att anvÀnda en hash bestÄende av tid, process-ID och pekarens vÀrde.
- Stöd för specifikationen har lagts till Unicode 17.0.
- Strikta regler för Unicode har införts för identifierarnamn och grupper av reguljĂ€ra uttryck, dĂ€r cirka 160 Unicode-tecken nu Ă€r förbjudna som tidigare fick plats i w-klassen. Till exempel har latinska bokstĂ€ver i cirklar, som liknar faktiska bokstĂ€ver men inte Ă€r det, tagits bort frĂ„n w-klassens Ă„tgĂ€rd som omfattar alla bokstĂ€ver, siffror och understreck. Ăndringen pĂ„verkar endast program som anvĂ€nder lĂ€get use utf8.
- SÄrbarheter orsakade av buffertöverfullningar i funktionerna Perl_study_chunk (CVE-2026-8376, som uppstÄr i 32-bitarsbyggen) och S_measure_struct (CVE-2026-57432), samt överflödet av en 16-bitarsrÀknare i Regex-motorn (CVE-2026-13221), vilket kan leda till felaktig matchning av ett reguljÀrt uttryck.
- AnvÀndning av goto-operatorn för att hoppa till en position inom loopar och blockstrukturer Àr förbjuden. Denna funktionalitet förklarades som förÄldrad Är 2010.
- Prestandaoptimeringar har genomförts som har accelererat addition, subtraktion och multiplikation av heltal, samt hantering av funktionssignaturer och fyllning av hash-tabeller frÄn nyckel/vÀrde-listor med strÀngnycklar som Àr kÀnda vid kompilering.
KĂ€lla: linux.org.ru
