Efter et års udvikling offentliggjort frigivelse af en ny stabil gren af programmeringssproget Perl - 5.44. På forberedelse Den nye udgivelse ændrede cirka 270 linjer kode (eksklusive dokumentation og automatisk genereret kode - 110), ændringerne påvirkede 860 filer, og 71 udviklere deltog i udviklingen.
5.44-grenen er blevet udgivet i overensstemmelse med den faste udviklingsplan, der blev etableret for tretten år siden, som kræver udgivelsen af nye stabile grene én gang om året og mindre udgivelser hver tredje måned. Den første mindre udgivelse, Perl 5.44.1, er planlagt til udgivelse om cirka en måned og retter de væsentligste fejl, der blev opdaget under implementeringen af Perl 5.44.0. Med udgivelsen af Perl 5.44 er supporten til 5.40-grenen ophørt; opdateringer til den kan muligvis kun blive udgivet i fremtiden, hvis kritiske sikkerhedsproblemer opdages. Er begyndt udviklingsprocessen for den eksperimentelle 5.45-gren, som vil danne grundlag for den stabile udgivelse af Perl 5.46 i første halvdel af 2027, medmindre der træffes en beslutning gå over til nummerering 7.x.
Nøgle ændringer:
- Tilføjet eksperimentel mulighed for at bruge navngivne parametre i underskrifter Funktioner, der definerer listen over variabler, der sendes til funktionen, ikke i funktionens brødtekst, men under dens deklaration. Denne nye funktion tillader, at parametre sendes ikke i en streng rækkefølge, men i en hvilken som helst rækkefølge, ved hjælp af nøgle/værdi-par og en syntaks, der ligner tildeling af elementer i hashes:
- gammel syntaks: sub f { my ($x, $y) = @_; …} f(1, 2);
- signaturer: sub f ($x, $y) { … } f(1, 2);
- signaturer med navngivne parametre: sub f (:$x, :$y) { … } f(y => 2, x => 1);
- Tilføjet eksperimentel understøttelse af brug af aliasser (pointere til pointere) i foreach-løkker med flere variabler. Denne funktion giver dig mulighed for at oprette et alias i et foreach-løkke, når du henter flere værdier i en enkelt løkkeiteration. For eksempel kan du oprette et alias for et hash-element med et array, når du itererer over både nøglerne og værdierne i hashen: use v5.44; use feature qw(refaliasing declared_refs); my %hash = (one => [1], two => [2, 2],); foreach my ($key, @items) (%hash) { say "$key-arrayet indeholder: @items"; } # Før version 5.44 ville dereferencing være påkrævet: foreach my ($key, $var) (%hash) { say "$key-arrayet indeholder: @$var"; } # Uden eksperimentel refaliasing og declared_refs-funktioner: foreach my $key (keys %hash) { say "$key-arrayet indeholder: @{$hash{$key}}"; }
- I regulære udtryk implementeret Den eksperimentelle 'enhanced_xx'-tilstand tillader, at /xx-modifikatoren bruges med tegnklasser i firkantede parenteser ([a-zA-Z]) for at opdele dem over flere linjer eller for at indsætte kommentarer. For eksempel kan betingelsen if ($text =~ m/[a-zA-Z]/){ skrives som: if ($text =~ m/[ a-z # små bogstaver A-Z # store bogstaver ]/xx) {
- Pseudo-tilfældige talgeneratoren bruger systemkaldet getentropy() til at finde entropi på systemer, der understøtter det (Linux, BSD, macOSPå andre systemer opnås entropi ved at læse fra /dev/urandom-enheden eller ved at bruge en hash af tidspunktet, proces-ID'et og pointerværdien.
- Tilføjet specifikationsunderstøttelse Unicode 17.0.
- Streng overholdelse af Unicode-regler er sikret for identifikatornavne og regulære udtryksgrupper, hvor cirka 160 Unicode-tegn, der tidligere var dækket af w-klassen, nu er forbudt. For eksempel ekskluderer w-klassen, som dækker alle bogstaver, cifre og understregningstegnet, nu cirklede latinske bogstaver, som ligner faktiske bogstaver, men ikke er det. Denne ændring i adfærd påvirker kun programmer, der bruger utf8-tilstanden.
- Rettede sårbarheder forårsaget af bufferoverløb i Perl_study_chunk-funktionerne (CVE-2026-8376, vises i 32-bit assembleringer) og S_measure_struct (CVE-2026-57432), samt overflow af 16-bit tælleren i Regex-motoren (CVE-2026-13221), hvilket kan forårsage, at det regulære udtryk fejler.
- Det er forbudt at hoppe til positioner inden for løkker og blokkonstruktioner ved hjælp af goto-operatoren. Denne funktion blev udfaset i 2010.
- Der blev foretaget ydeevneoptimeringer for at fremskynde heltalsaddition, subtraktion og multiplikation, behandling af funktionssignaturer og udfyldning af hashes fra nøgle-/værdilister med strengnøgler, der er kendt på kompileringstidspunktet.
Kilde: linux.org.ru
