Perl 5.44


3

Efter et års udvikling udgivet udgivelsen af den nye stabile version af programsproget Perl — 5.44. Ved forberedelsen af den nye udgave blev omkring 270.000 linjer kode ændret (uden dokumentation og automatisk genereret kode — 110.000), ændringerne påvirkede 860 filer, og 71 udviklere deltog i udviklingen.

Version 5.44 er blevet udgivet i overensstemmelse med den fastlagte udviklingsplan, der blev godkendt for tretten år siden, og som indebærer udgivelse af nye stabile versioner en gang om året og rettelsesudgivelser hver tredje måned. Omkring en måned efter vil den første rettelsesudgivelse Perl 5.44.1 blive udgivet, hvor de mest betydningsfulde fejl, der er opdaget under implementeringen af Perl 5.44.0, vil blive rettet. Samtidig med udgivelsen af Perl 5.44 blev understøttelsen af version 5.40 stoppet, for hvilken opdateringer kun vil blive udgivet i fremtiden, hvis der opdages kritiske sikkerhedsproblemer. Udviklingsprocessen for den eksperimentelle version 5.45 er startet, på basis af hvilken der i første halvdel af 2027 vil blive dannet en stabil udgave af Perl 5.46, medmindre der træffes beslutning om at gå til nummereringen 7.x.

Nøglepunkter Optimeringer:

  • Tilføjet en eksperimentel mulighed for brug af navngivne parametre i signaturer af funktioner, der definerer listen over variabler, der sendes til funktionen, ikke i funktionens krop, men ved dens erklæring. Den nye mulighed tillader overførsel af parametre i en vilkårlig rækkefølge ved hjælp af nøgle/værdi-par og syntaks som ved 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);
  • En eksperimentel mulighed for brug af aliaser (pegepinde til pegepinde) i foreach-løkker med flere variabler er blevet tilføjet. Den implementerede mulighed giver mulighed for at oprette et alias i en foreach-løkke, mens der samtidig hentes flere værdier i én iteration af løkken. For eksempel kan man danne et alias for et hash-element med en array, mens man samtidig gennemgår nøgler og værdier i hashen: use v5.44; use feature qw( refaliasing declared_refs ); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, @items ) ( %hash ) { say "Arrayet $key indeholder: @items"; } # Før version 5.44 skulle man udføre dereferencen: foreach my ( $key, $var ) ( %hash ) { say "Arrayet $key indeholder: @$var"; } # Uden de eksperimentelle muligheder refaliasing og declared_refs: foreach my $key (keys %hash) { say "Arrayet $key indeholder: @{$hash{$key}}"; }
  • I regulære udtryk implementeret den eksperimentelle tilstand ‘enhanced_xx’, der gør det muligt at anvende modifikatoren /xx med tegnklasser i firkantede parenteser ([a-zA-Z]) for at opdele dem på flere linjer eller indsætte kommentarer. For eksempel kan betingelsen if ($text =~ m/[a-zA-Z]/) formuleres som: if ($text =~ m/[ a-z # små bogstaver A-Z # store bogstaver ]/xx) {
  • I generatoren af pseudorandom tal benyttes systemopkaldet getentropy() til at hente entropi på systemer, der understøtter det (Linux, BSD, macOS). På andre systemer opnås entropi ved at læse fra enheden /dev/urandom eller ved at anvende en hash baseret på tiden, proces-ID og pointerværdi.
  • Understøttelse af specifikationen Unicode 17.0.
  • Sikret streng overholdelse af Unicode-regler for identifikatornavne og grupper af regulære udtryk, hvor omkring 160 Unicode-tegn nu er forbudt, tidligere faldt under klassen w. For eksempel er de latinske bogstaver i cirkler, som ligner rigtige bogstaver, blevet udgået fra klasse w, der dækker alle bogstaver, cifre og underscore-tegnet. Ændringen påvirker kun programmer, der bruger tilstanden use utf8.
  • Sårbarheder, der er forårsaget af buffer-overløb i funktionerne Perl_study_chunk (CVE-2026-8376, forekommer i 32-bit builds) og S_measure_struct (CVE-2026-57432), samt overløb af 16-bit tælleren i Regex-motoren (CVE-2026-13221), hvilket kan føre til forkert udløsning af et regulært udtryk.
  • Overgang ved hjælp af goto-operatoren til positioner inde i løkker og blok-konstruktioner er forbudt. Denne mulighed blev erklæret forældet i 2010.
  • Der er udført ydeevneoptimeringer, som har fremskyndet operationerne for addition, subtraktion og multiplikation af heltal, funktioners signaturbehandling og udfyldning af hasher fra lister i nøgle/værdi-format med kendte strenge, der er kendt ved kompileringstidspunktet.

Kilde: linux.org.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster