Perl 5.44


3

Na een jaar van ontwikkeling gepubliceerd de release van een nieuwe stabiele tak van de programmeertaal Perl — 5.44. Tijdens de voorbereidingen voor de nieuwe release zijn er ongeveer 270.000 regels code gewijzigd (exclusief documentatie en automatisch gegenereerde code — 110.000), en hierbij zijn 860 bestanden aangepast, met de deelname van 71 ontwikkelaars aan de ontwikkeling.

Tak 5.44 is uitgebracht volgens het dertien jaar geleden goedgekeurde vaste ontwikkelingsschema, dat de uitgave van nieuwe stabiele takken één keer per jaar en correcties — elke drie maanden voorziet. Binnen ongeveer een maand wordt de eerste correctie-release Perl 5.44.1 verwacht, waarin de meest significante fouten die tijdens de implementatie van Perl 5.44.0 zijn ontdekt, worden verholpen. Tegelijkertijd met de release van Perl 5.44 is de ondersteuning voor tak 5.40 beëindigd, waarvoor updates in de toekomst alleen zullen worden uitgegeven als er kritieke beveiligingsproblemen worden ontdekt. De ontwikkeling van de experimentele tak 5.45 is begonnen, waarvan in de eerste helft van 2027 een stabiele release van Perl 5.46 zal worden gevormd, tenzij er een beslissing wordt genomen om over te stappen naar nummering 7.x.

Belangrijkste wijzigingen:

  • Toegevoegd de experimentele mogelijkheid om benoemde parameters te gebruiken in signaturen van functies, die de lijst van aan de functie doorgegeven variabelen niet in het lichaam van de functie, maar bij de declaratie definieert. De nieuwe mogelijkheid maakt het mogelijk om parameters niet in een strikte volgorde door te geven, maar in willekeurige volgorde met behulp van sleutel/waarde-paren en de syntaxis zoals bij het toewijzen van elementen in hashes:
    • oude syntaxis: sub f { my ($x, $y) = @_; …} f(1, 2);
    • signaturen: sub f ($x, $y) { … } f(1, 2);
    • signaturen met benoemde parameters: sub f (:$x, :$y) { … } f(y => 2, x => 1);
  • Een experimentele functie toegevoegd voor het gebruik van aliassen (verwijzingen naar verwijzingen) in foreach-lussen met meerdere variabelen. De geïmplementeerde functie maakt het mogelijk om een alias aan te maken in de foreach-lus terwijl tegelijkertijd meerdere waarden in één iteratie van de lus worden opgehaald. Bijvoorbeeld, een alias kan worden gevormd voor een element van een hash met een array tijdens het gelijktijdig doorlopen van de sleutels en waarden van de hash: use v5.44; use feature qw( refaliasing declared_refs ); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, @items ) ( %hash ) { say "De $key array bevat: @items"; } # Voor versie 5.44 zou dereferentiatie nodig zijn: foreach my ( $key, $var ) ( %hash ) { say "De $key array bevat: @$var"; } # Zonder experimentele functies refaliasing en declared_refs: foreach my $key (keys %hash) { say "De $key array bevat: @{$hash{$key}}"; }
  • In reguliere expressies is geïmplementeerd is er een experimentele modus ‘enhanced_xx’ geïntroduceerd, die het gebruik van de modifier /xx met tekenklassen in vierkante haken ([a-zA-Z]) mogelijk maakt voor het splitsen over meerdere regels of het invoegen van commentaar. Bijvoorbeeld, de voorwaarde if ($text =~ m/[a-zA-Z]/){ kan als volgt worden geschreven: if ($text =~ m/[ a-z # kleine letters A-Z # hoofdletters ]/xx) {
  • In de pseudowillekeurige getalgenerator wordt voor het verkrijgen van entropie de systeemaanroep getentropy() gebruikt op systemen die dit ondersteunen (Linux, BSD, macOS). Op andere systemen wordt entropie verkregen door te lezen uit het apparaat /dev/urandom of door een hash van tijd, proces-ID en de waarde van de pointer te gebruiken.
  • Ondersteuning voor de specificatie is toegevoegd Unicode 17.0.
  • Strikte naleving van de Unicode-regels voor identificatienamen en groepen van reguliere expressies is gewaarborgd, waarbij het nu verboden is om ongeveer 160 Unicode-symbolen te gebruiken die voorheen onder de klasse w vielen. Bijvoorbeeld, de klasse w, die alle letters, cijfers en het onderstrepingsteken omvat, sluit nu Latijnse letters in cirkels uit die echte letters lijken, maar het niet zijn. Deze wijziging in gedrag betreft alleen programma's die gebruik maken van de modus use utf8.
  • Kwetsbaarheden veroorzaakt door bufferoverlopen in de functies Perl_study_chunk (CVE-2026-8376, die zich manifesteert in 32-bits builds) en S_measure_struct (CVE-2026-57432), evenals de overflow van de 16-bits teller in de Regex-engine (CVE-2026-13221), wat kan leiden tot een onjuiste werking van de reguliere expressie.
  • Het gebruik van de goto-operator voor overgangen naar posities binnen lussen en blokstructuren is verboden. Deze mogelijkheid werd in 2010 verouderd verklaard.
  • Er zijn prestatie-optimalisaties doorgevoerd die de bewerkingen van optelling, aftrekking en vermenigvuldiging van gehele getallen, de verwerking van functiehandtekeningen en het vullen van hashes uit lijsten in sleutel/waarde-indeling met op compileertijd bekende string-sleutels hebben versneld.

Bron: linux.org.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster