Programmiersprache Perl 5.36.0 verfügbar

Nach einem Jahr der Entwicklung wurde die Veröffentlichung eines neuen stabilen Zweigs der Programmiersprache Perl – 5.36 – veröffentlicht. Bei der Vorbereitung der neuen Version wurden etwa 250 Codezeilen geändert, die Änderungen betrafen 2000 Dateien und 82 Entwickler waren an der Entwicklung beteiligt.

Zweig 5.36 wurde gemäß dem vor neun Jahren genehmigten festen Entwicklungsplan veröffentlicht, der die Veröffentlichung neuer stabiler Zweige einmal im Jahr und Korrekturversionen alle drei Monate vorsieht. In etwa einem Monat ist die Veröffentlichung der ersten Korrekturversion von Perl 5.36.1 geplant, die die wichtigsten Fehler beheben wird, die bei der Implementierung von Perl 5.36.0 festgestellt wurden. Mit der Veröffentlichung von Perl 5.36 wurde die Unterstützung für den 5.32-Zweig eingestellt, für den künftige Updates möglicherweise nur dann veröffentlicht werden, wenn kritische Sicherheitsprobleme festgestellt werden. Der Prozess der Entwicklung des experimentellen Zweigs 5.37 hat ebenfalls begonnen, auf dessen Grundlage im Mai oder Juni 2023 eine stabile Version von Perl 5.38 erstellt wird, sofern nicht beschlossen wird, auf die Nummerierung 7.x umzusteigen.

Wichtige Änderungen:

  • Die Unterstützung für Funktionssignaturen wurde stabilisiert und ist jetzt verfügbar, wenn das Pragma „v5.36 verwenden“ angegeben wird, sodass Sie die Liste der in der Funktion verwendeten Variablen explizit definieren und die Vorgänge zum Überprüfen und Zuweisen von Werten aus einem Array von automatisieren können eingehende Parameter. Beispiel: zuvor verwendeter Code: sub foo { die "Zu viele Argumente für Unterroutine", sofern @_ >= 2; die „Zu wenige Argumente für Unterroutine“, es sei denn @_ <= 2; my($left, $right) = @_; return $left + $right; }

    bei der Verwendung von Signaturen kann es ersetzt werden durch:

    sub foo ($left, $right) { return $left + $right; }

    Wenn Sie foo mit mehr als zwei Argumenten aufrufen, gibt der Interpreter einen Fehler aus. Die Liste unterstützt auch eine spezielle Variable „$“, mit der Sie einige der Argumente ignorieren können. Mit „sub foo ($left, $, $right)“ können Sie beispielsweise nur das erste und dritte Argument in Variablen kopieren , während genau drei an das Funktionsargument übergeben werden müssen.

    Die Signatursyntax ermöglicht Ihnen außerdem die Angabe optionaler Argumente und die Angabe von Standardwerten, wenn ein Argument fehlt. Durch die Angabe von „sub foo ($left, $right = 0)“ wird das zweite Argument beispielsweise optional und wenn es fehlt, wird der Wert 0 übergeben. In der Zuweisungsoperation können Sie beliebige Ausdrücke angeben, auch die Verwendung anderer Variablen aus der Liste oder globalen Variablen. Durch die Angabe eines Hashs oder Arrays anstelle einer Variablen (z. B. „sub foo ($left, @right)“) können ein oder mehrere Argumente übergeben werden.

  • In mit Signaturen deklarierten Funktionen wird die Unterstützung der optionalen Parameterzuweisung aus dem Array „@_“ als experimentell erklärt und führt zu einer Warnung (die Warnung wird nur ausgegeben, wenn @_ in Funktionen verwendet wird, die mit der neuen Syntax deklariert wurden). Beispielsweise wird eine Warnung für die Funktion angezeigt: use v5.36; sub f ($x, $y = 123) { say „Das erste Argument ist $_[0]“; }
  • Der Infix-Operator „isa“ ist stabilisiert und verfügbar, wenn das Pragma „use v5.36“ angegeben wird, um zu überprüfen, ob ein Objekt eine Instanz der angegebenen Klasse oder eine davon abgeleitete Klasse ist. Zum Beispiel: if( $obj isa Package::Name ) { … }
  • Bei Angabe des Pragmas „v5.36 verwenden“ wird die Warnungsverarbeitung aktiviert (der Modus „Warnungen verwenden“ wird aktiviert).
  • Bei Angabe des Pragmas „use v5.36“ ist die Unterstützung der indirekten Notation zum Aufrufen von Objekten („feature indirect“) deaktiviert – eine veraltete Art des Aufrufs von Objekten, bei der ein Leerzeichen anstelle von „->“ („method $ object @param“ anstelle von „$object-> $method(@param)“). Anstelle von „my $cgi = new CGI“ müssen Sie beispielsweise „my $cgi = CGI->new“ verwenden.
  • Bei Angabe des Pragmas „use v5.36“ wird die Unterstützung für die Emulation mehrdimensionaler Arrays und Hashes im Perl 4-Stil („feature multidimensional“) deaktiviert, sodass die Angabe mehrerer Schlüssel in ein Zwischenarray übersetzt werden kann (z. B. „ $hash{1, 2}“) wurde in „$hash{join($;, 1, 2)}“) konvertiert.
  • Wenn Sie das Pragma „use v5.36“ angeben, ist die Unterstützung für den experimentellen Verzweigungsmechanismus („Feature Switch“), ähnlich den Anweisungen „switch“ und „case“, deaktiviert (Perl verwendet die angegebenen und when-Schlüsselwörter). Um diese Funktion zu nutzen, müssen Sie ab Perl 5.36 explizit „use feature „switch““ angeben. Wenn Sie „use version“ angeben, wird sie nicht mehr automatisch aktiviert.
  • Die Unterstützung für zusätzliche Zeichenklassen in eckigen Klammern innerhalb regulärer Ausdrücke wurde stabilisiert und ist standardmäßig verfügbar. Mit dieser Funktion können Sie Übereinstimmungen mithilfe erweiterter Regeln für die Schnittmenge, den Ausschluss und die Vereinigung von Zeichensätzen durchführen. Beispiel: „[AZ – W]“ – Zeichen von A bis Z ohne W.
  • Die Unterstützung für die Operationen „(?“, „( )“, „{ }“ und „[ ]“ ist teilweise stabilisiert und standardmäßig verfügbar; Sie können beispielsweise die Symbole „“ „“, „“ „“ usw. verwenden , „qr“pat „“.
  • Der Aufruf der Sortierfunktion ohne Argumente ist verboten, was nun zu einem Fehler führt. @a = @empty sortieren; # wird fortgesetzt @a = sort; # es wird ein Fehler ausgegeben @a = sort(); # Es wird ein Fehler ausgegeben
  • Es wurde ein neues Befehlszeilen-Flag „-g“ vorgeschlagen, das den Modus zum Laden der gesamten Datei als Ganzes und nicht Zeile für Zeile ermöglicht. Die Wirkung des Flags ähnelt der Angabe „-0777“.
  • Die Unterstützung für die Unicode-Spezifikation wurde auf Version 14.0 aktualisiert.
  • Bietet eine sofortige Behandlung von Gleitkomma-Ausnahmen (SIGFPE), ähnlich wie bei anderen Alarmen wie SIGSEGV, und ermöglicht es Ihnen, Ihre eigenen Handler für SIGFPE über $SIG{FPE} zu binden und beispielsweise die Zeilennummer auszugeben, in der das Problem aufgetreten ist.
  • Aktualisierte Versionen der im Basispaket enthaltenen Module.
  • Leistungsoptimierungen hinzugefügt. Es wurde die Möglichkeit bereitgestellt, große Hash-Schlüssel effizienter zu speichern, ohne gemeinsam genutzte Zeichenfolgentabellen zu verwenden. Die Leistung beim Erstellen neuer Skalarwerte wurde deutlich verbessert, so läuft beispielsweise der folgende Code jetzt 30 % schneller: $str = „A“ x 64; for (0..1_000_000) { @svs = split //, $str }
  • Der Interpretercode begann mit der Verwendung einiger der im C99-Standard definierten Konstrukte. Für die Erstellung von Perl ist jetzt ein Compiler erforderlich, der C99 unterstützt. Die Unterstützung für die Erstellung älterer Versionen von MSVC++ (vor VC12) wurde eingestellt. Unterstützung für die Erstellung in Microsoft Visual Studio 2022 (MSVC++ 14.3) hinzugefügt.
  • Die Unterstützung für die Plattformen AT&T UWIN, DOS/DJGPP und Novell NetWare wurde eingestellt.

Source: opennet.ru

Kommentar hinzufügen