Na 'n jaar van ontwikkeling gepubliseer vrystelling van 'n nuwe stabiele tak van die Perl-programmeertaal - 5.44... Wanneer voorberei Die nuwe weergawe het ongeveer 270 000 reëls kode verander (uitgesluit dokumentasie en outomaties gegenereerde kode - 110 000), die veranderinge het 860 lêers geraak, en 71 ontwikkelaars het aan die ontwikkeling deelgeneem.
Die 5.44-tak is vrygestel in ooreenstemming met die vaste ontwikkelingskedule wat dertien jaar gelede vasgestel is, wat die vrystelling van nuwe stabiele takke een keer per jaar en kleiner vrystellings elke drie maande vereis. Die eerste kleiner vrystelling, Perl 5.44.1, is geskeduleer vir vrystelling oor ongeveer 'n maand, wat die belangrikste foute wat tydens die implementering van Perl 5.44.0 ontdek is, sal regstel. Met die vrystelling van Perl 5.44 is ondersteuning vir die 5.40-tak beëindig; opdaterings daarvoor mag dalk slegs in die toekoms vrygestel word indien kritieke sekuriteitsprobleme ontdek word. Het begin die ontwikkelingsproses van die eksperimentele 5.45-tak, wat die basis sal wees vir die stabiele vrystelling van Perl 5.46 in die eerste helfte van 2027, tensy 'n besluit geneem word gaan oor tot nommering 7.x.
Sleutel veranderinge:
- Bygevoeg eksperimentele moontlikheid om benoemde parameters te gebruik in handtekeninge Funksies wat die lys van veranderlikes definieer wat nie in die funksie se liggaam deurgegee word nie, maar tydens die deklarasie daarvan. Hierdie nuwe kenmerk laat toe dat parameters nie in 'n streng volgorde deurgegee word nie, maar in enige volgorde, deur sleutel/waarde-pare en 'n sintaksis soortgelyk aan die toewysing van elemente in hashes te gebruik:
- ou sintaksis: sub f { my ($x, $y) = @_; …} f(1, 2);
- handtekeninge: sub f ($x, $y) { … } f(1, 2);
- handtekeninge met benoemde parameters: sub f (:$x, :$y) { … } f(y => 2, x => 1);
- Eksperimentele ondersteuning vir die gebruik van aliasse (wysers na wysers) in foreach-lusse met veelvuldige veranderlikes is bygevoeg. Hierdie funksie laat jou toe om 'n alias in 'n foreach-lus te skep wanneer veelvuldige waardes in 'n enkele lus-iterasie herwin word. Byvoorbeeld, jy kan 'n alias vir 'n hash-element met 'n skikking skep wanneer jy oor beide die sleutels en waardes van die hash itereer: gebruik v5.44; gebruik funksie qw(refaliasing declared_refs); my %hash = ( een => [1], twee => [2, 2],); foreach my ( $key, @items ) ( %hash ) { sê "Die $key-skikking bevat: @items"; } # Voor weergawe 5.44 sou dereferencing vereis word: foreach my ( $key, $var ) ( %hash ) { sê "Die $key-skikking bevat: @$var"; } # Sonder eksperimentele herfalisering en declared_refs-kenmerke: vir elke my $key (keys %hash) { sê "Die $key-skikking bevat: @{$hash{$key}}"; }
- In gereelde uitdrukkings geïmplementeer Die eksperimentele 'enhanced_xx'-modus laat toe dat die /xx-wysiger gebruik word met karakterklasse tussen vierkantige hakies ([a-zA-Z]) om hulle oor verskeie reëls te verdeel of om kommentaar in te voeg. Byvoorbeeld, die voorwaarde if ($text =~ m/[a-zA-Z]/){ kan geskryf word as: if ($text =~ m/[ a-z # kleinletters A-Z # hoofletters ]/xx) {
- Die pseudo-ewekansige getalgenerator gebruik die getentropy() stelseloproep om entropie te verkry op stelsels wat dit ondersteun (Linux, BSD, macOSOp ander stelsels word entropie verkry deur vanaf die /dev/urandom-toestel te lees of 'n hash van die tyd, proses-ID en wyserwaarde te gebruik.
- Bygevoeg spesifikasie ondersteuning Unicode 17.0.
- Streng nakoming van Unicode-reëls is verseker vir identifiseerdername en gereelde uitdrukkingsgroepe, met ongeveer 160 Unicode-karakters wat voorheen deur die w-klas gedek is, nou verbode. Byvoorbeeld, die w-klas, wat alle letters, syfers en die onderstreepkarakter dek, sluit nou omkringde Latynse letters uit, wat soos werklike letters lyk, maar nie is nie. Hierdie gedragsverandering raak slegs programme wat die utf8-modus gebruik.
- Het kwesbaarhede wat veroorsaak is deur bufferoorloop in die Perl_study_chunk-funksies reggestel (CVE-2026-8376, verskyn in 32-bis samestellings) en S_measure_struct (CVE-2026-57432), sowel as oorloop van die 16-bis-teller in die Regex-enjin (CVE-2026-13221), wat kan veroorsaak dat die gereelde uitdrukking misluk.
- Dit is verbode om na posisies binne lusse en blokkonstrukte te spring met behulp van die goto-operator. Hierdie funksie is in 2010 afgeskaf.
- Prestasie-optimalisering is aangebring om heelgetaloptelling, aftrekking en vermenigvuldiging, funksiehandtekeningverwerking en die invul van hashes vanaf sleutel/waarde-lyste met stringsleutels wat tydens samestellingstyd bekend is, te versnel.
Bron: linux.org.ru
