Perl 5.44


3

Nach einem Jahr Entwicklung veröffentlicht Der Release des neuen stabilen Zweigs der Programmiersprache Perl — 5.44. Bei der Vorbereitung der neuen Version wurden etwa 270.000 Codezeilen (ohne Dokumentation und automatisch generierten Code — 110.000) geĂ€ndert, es waren 860 Dateien betroffen, und 71 Entwickler waren an der Entwicklung beteiligt.

Der Zweig 5.44 wurde gemĂ€ĂŸ dem vor 13 Jahren verabschiedeten festen Entwicklungszeitplan veröffentlicht, der die jĂ€hrliche Veröffentlichung neuer stabiler Zweige und vierteljĂ€hrliche Korrekturversionen vorsieht. Etwa einen Monat spĂ€ter wird die erste Korrekturversion Perl 5.44.1 erwartet, in der die bedeutendsten Fehler, die wĂ€hrend der EinfĂŒhrung von Perl 5.44.0 aufgetreten sind, behoben werden. Mit der Veröffentlichung von Perl 5.44 wurde die UnterstĂŒtzung fĂŒr den Zweig 5.40 eingestellt, fĂŒr den in Zukunft nur dann Updates veröffentlicht werden, wenn kritische Sicherheitsprobleme festgestellt werden. Der Entwicklungsprozess des experimentellen Zweigs 5.45 hat begonnen, auf dessen Basis im ersten Halbjahr 2027 ein stabiler Release von Perl 5.46 erstellt wird, es sei denn, es wird beschlossen zur Nummerierung 7.x zu wechseln.

Hauptmerkmale Änderungen:

  • HinzugefĂŒgt Die experimentelle Möglichkeit, benannte Parameter in Signaturen von Funktionen zu verwenden, die eine Liste von Variablen ĂŒbergeben, nicht im Funktionskörper, sondern bei ihrer Deklaration. Diese neue Möglichkeit erlaubt es, Parameter nicht in strikter Reihenfolge, sondern in beliebiger Reihenfolge unter Verwendung von SchlĂŒssel/Wert-Paaren und Syntax, wie sie bei der Zuordnung von Elementen in Hashes vorkommt, zu ĂŒbergeben:
    • alte Syntax: sub f { my ($x, $y) = @_; 
} f(1, 2);
    • Signaturen: sub f ($x, $y) { 
 } f(1, 2);
    • Signaturen mit benannten Parametern: sub f (:$x, :$y) { 
 } f(y => 2, x => 1);
  • Eine experimentelle Möglichkeit zur Verwendung von Aliassen (Zeigern auf Zeiger) in foreach-Schleifen mit mehreren Variablen wurde hinzugefĂŒgt. Die implementierte FunktionalitĂ€t ermöglicht es, in einer foreach-Schleife einen Alias zu erstellen, wĂ€hrend mehrere Werte in einer einzigen Iteration der Schleife extrahiert werden. Zum Beispiel kann ein Alias fĂŒr ein Hash-Element mit einem Array beim gleichzeitigen Durchlaufen der SchlĂŒssel und Werte des Hashes gebildet werden: use v5.44; use feature qw( refaliasing declared_refs ); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, @items ) ( %hash ) { say "Das Array $key enthĂ€lt: @items"; } # Vor Version 5.44 wĂ€re eine Dereferenzierung erforderlich gewesen: foreach my ( $key, $var ) ( %hash ) { say "Das Array $key enthĂ€lt: @$var"; } # Ohne die experimentellen Funktionen refaliasing und declared_refs: foreach my $key (keys %hash) { say "Das Array $key enthĂ€lt: @{$hash{$key}}"; }
  • In regulĂ€ren AusdrĂŒcken wurde implementiert der experimentelle Modus ‘enhanced_xx’, der die Verwendung des Modifikators /xx mit Symbolklassen in eckigen Klammern ([a-zA-Z]) zur Aufteilung in mehrere Zeilen oder zur EinfĂŒgung von Kommentaren ermöglicht. Zum Beispiel kann die Bedingung if ($text =~ m/[a-zA-Z]/) so gestaltet werden: if ($text =~ m/[ a-z # Kleinbuchstaben A-Z # Großbuchstaben ]/xx) {
  • Im Pseudo-Zufallszahlengenerator wird systemaufruf getentropy() zur Entropiegewinnung auf Systemen verwendet, die ihn unterstĂŒtzen (Linux, BSD, macOS). Auf anderen Systemen wird zur Entropiegewinnung entweder aus dem GerĂ€t /dev/urandom gelesen oder ein Hash aus der Zeit, der Prozess-ID und dem Wert des Zeigers verwendet.
  • UnterstĂŒtzung fĂŒr die Spezifikation hinzugefĂŒgt Unicode 17.0.
  • Eine strikte Einhaltung der Unicode-Regeln fĂŒr die Benennung von Identifikatoren und Gruppen von regulĂ€ren AusdrĂŒcken wurde gewĂ€hrleistet, wobei jetzt etwa 160 Unicode-Zeichen verboten sind, die zuvor in die Klasse w fielen. Beispielsweise wurden lateinische Buchstaben in Kreisen, die echte Buchstaben imitieren, jedoch keine sind, aus der Klasse w, die alle Buchstaben, Ziffern und das Unterstrichzeichen umfasst, ausgeschlossen. Diese Änderung des Verhaltens betrifft nur Programme, die den Modus use utf8 verwenden.
  • SicherheitsanfĂ€lligkeiten, die durch PufferĂŒberlĂ€ufe in den Funktionen Perl_study_chunk (CVE-2026-8376, die in 32-Bit-Bauten auftreten), und S_measure_struct (CVE-2026-57432), sowie ein Überlauf des 16-Bit-ZĂ€hlers im Regex-Engine (CVE-2026-13221), die zu einem falschen Auslösen regulĂ€rer AusdrĂŒcke fĂŒhren können, wurden behoben.
  • Der Übergang mit dem Operator goto zu Positionen innerhalb von Schleifen und Blockkonstruktionen ist untersagt. Diese Möglichkeit wurde im Jahr 2010 als veraltet erklĂ€rt.
  • Leistungsoptimierungen wurden durchgefĂŒhrt, die die Operationen fĂŒr Addition, Subtraktion und Multiplikation von Ganzzahlen, die Verarbeitung von Funktionssignaturen und das FĂŒllen von Hashes aus Listen im SchlĂŒssel/Wert-Format mit zur Kompilierzeit bekannten String-SchlĂŒsseln beschleunigt haben.

Quelle: linux.org.ru

60GB SSD 8Gb DDR4