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

Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server 🔥 Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster