Perl 5.44


3

Na een jaar van ontwikkeling gepubliceerde release van een nieuwe stabiele tak van de programmeertaal Perl - 5.44. Bij voorbereidingen treffen De nieuwe release heeft ongeveer 270 regels code gewijzigd (exclusief documentatie en automatisch gegenereerde code - 110), de wijzigingen hadden betrekking op 860 bestanden en 71 ontwikkelaars hebben aan de ontwikkeling meegewerkt.

De 5.44-branch is uitgebracht volgens het vaste ontwikkelingsschema dat dertien jaar geleden is vastgesteld. Dit schema schrijft voor dat er jaarlijks een nieuwe stabiele branch wordt uitgebracht en om de drie maanden een kleinere release. De eerste kleinere release, Perl 5.44.1, zal naar verwachting over ongeveer een maand verschijnen en verhelpt de belangrijkste bugs die tijdens de implementatie van Perl 5.44.0 zijn ontdekt. ​​Met de release van Perl 5.44 is de ondersteuning voor de 5.40-branch beëindigd; updates hiervoor zullen in de toekomst mogelijk alleen nog worden uitgebracht als er kritieke beveiligingsproblemen worden ontdekt. Begonnen het ontwikkelingsproces van de experimentele 5.45-tak, die de basis zal vormen voor de stabiele release van Perl 5.46 in de eerste helft van 2027, tenzij anders wordt besloten ga over naar nummering 7.x.

Toets veranderingen:

  • Toegevoegd experimentele mogelijkheid om benoemde parameters te gebruiken in handtekeningen Functies die de lijst met variabelen die aan de functie worden doorgegeven definiëren, niet in de functiebody zelf, maar tijdens de declaratie ervan. Deze nieuwe functie maakt het mogelijk om parameters niet in een strikte volgorde, maar in willekeurige volgorde door te geven, met behulp van sleutel/waarde-paren en een syntax die vergelijkbaar is met het toewijzen van elementen aan hashes:
    • oude syntax: sub f { my ($x, $y) = @_; …} f(1, 2);
    • signaturen: sub f ($x, $y) { … } f(1, 2);
    • Handtekeningen met benoemde parameters: sub f (:$x, :$y) { … } f(y => 2, x => 1);
  • Er is experimentele ondersteuning toegevoegd voor het gebruik van aliassen (pointers naar pointers) in foreach-lussen met meerdere variabelen. Met deze functie kunt u een alias aanmaken in een foreach-lus wanneer u meerdere waarden ophaalt in één iteratie. U kunt bijvoorbeeld een alias aanmaken voor een hash-element met een array wanneer u zowel de sleutels als de waarden van de hash doorloopt: use v5.44; use feature qw( refaliasing declared_refs ); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, @items ) ( %hash ) { say "De array $key bevat: @items"; } # Vóór versie 5.44 was dereferencing vereist: foreach my ( $key, $var ) ( %hash ) { say "De array $key bevat: @$var"; } } # Zonder experimentele refaliasing en declared_refs-functies: foreach my $key (keys %hash) { say "De array $key bevat: @{$hash{$key}}"; }
  • In reguliere expressies geïmplementeerd De experimentele 'enhanced_xx'-modus maakt het mogelijk om de /xx-modifier te gebruiken met tekenklassen tussen vierkante haken ([a-zA-Z]) om ze over meerdere regels te verdelen of om commentaar in te voegen. De voorwaarde if ($text =~ m/[a-zA-Z]/){ zou bijvoorbeeld kunnen worden geschreven als: if ($text =~ m/[ a-z # kleine letters A-Z # hoofdletters ]/xx) {
  • De pseudo-willekeurige getallengenerator gebruikt de systeemoproep getentropy() om entropie te verkrijgen op systemen die dit ondersteunen.Linux, BSD, macOSOp andere systemen wordt de entropie verkregen door te lezen van het /dev/urandom-apparaat of door een hash te gebruiken van de tijd, de proces-ID en de pointerwaarde.
  • Ondersteuning voor specificatie toegevoegd Unicode 17.0.
  • Strikte naleving van de Unicode-regels is gewaarborgd voor identificatienamen en reguliere expressiegroepen, waarbij ongeveer 160 Unicode-tekens die voorheen onder de w-klasse vielen, nu zijn verboden. De w-klasse, die alle letters, cijfers en het underscore-teken omvat, sluit bijvoorbeeld nu omcirkelde Latijnse letters uit, die op echte letters lijken maar dat niet zijn. Deze gedragsverandering heeft alleen gevolgen voor programma's die de utf8-modus gebruiken.
  • Kwetsbaarheden veroorzaakt door bufferoverloop in de Perl_study_chunk-functies zijn verholpen (CVE-2026-8376, verschijnt in 32-bits assemblies) en S_measure_struct (CVE-2026-57432), evenals een overloop van de 16-bits teller in de Regex-engine (CVE-2026-13221), wat ertoe kan leiden dat de reguliere expressie mislukt.
  • Het is niet toegestaan ​​om met de goto-operator naar posities binnen lussen en codeblokken te springen. Deze functie is in 2010 afgeschaft.
  • Er zijn prestatieoptimalisaties doorgevoerd om het optellen, aftrekken en vermenigvuldigen van gehele getallen, de verwerking van functiesignaturen en het vullen van hashes vanuit sleutel/waarde-lijsten met tijdens de compilatie bekende tekenreeks-sleutels te versnellen.

Bron: linux.org.ru

Koop betrouwbare hosting voor sites met DDoS-bescherming, VPS VDS-servers 🔥 Koop betrouwbare websitehosting met DDoS-bescherming, VPS- en VDS-servers | ProHoster