Veröffentlichung der Programmiersprache Perl 5.30.0

Nach 11 Monaten Entwicklungszeit fand statt Veröffentlichung eines neuen stabilen Zweigs der Programmiersprache Perl - 5.30. Bei der Vorbereitung der neuen Version wurden etwa 620 Codezeilen geändert, die Änderungen betrafen 1300 Dateien und 58 Entwickler waren an der Entwicklung beteiligt.

Branch 5.30 wurde gemäß dem vor sechs Jahren genehmigten festen Entwicklungsplan veröffentlicht, der die Veröffentlichung neuer stabiler Branches einmal im Jahr und Korrekturversionen alle drei Monate vorsieht. In etwa einem Monat ist die Veröffentlichung der ersten Korrekturversion von Perl 5.30.1 geplant, die die wichtigsten Fehler beheben wird, die bei der Implementierung von Perl 5.30.0 festgestellt wurden. Mit der Veröffentlichung von Perl 5.30 wurde die Unterstützung für den 5.26-Zweig eingestellt, für den in Zukunft nur noch Updates veröffentlicht werden dürfen, wenn kritische Sicherheitsprobleme festgestellt werden. Der Entwicklungsprozess des experimentellen Zweigs 5.31 hat ebenfalls begonnen, auf dessen Grundlage im Mai 2020 eine stabile Version von Perl 5.32 erstellt wird.

Taste Veränderungen:

  • Experimentelle Unterstützung für „“-Operationen wurde zu regulären Ausdrücken hinzugefügt.(?<!Muster)"Und"(?‹=Muster)» für eingeschränkten Zugriff auf zuvor verarbeitete benannte Vorlagen. Die Musterdefinition darf maximal 255 Zeichen vom Referenzpunkt entfernt sein.
  • Der Maximalwert des Größenbezeichners („n“) in regulären Ausdrucksblöcken „{m,n}“ wurde auf 65534 erhöht;
  • Limitiert hinzugefügt unterstützen Masken zur Hervorhebung bestimmter Zeichenkategorien in regulären Ausdrücken, die verschiedene Unicode-Sätze abdecken. Zum Beispiel der Ausdruck „qr! \p{nv= /(?x) \A [0-5] \z / }!“ ermöglicht Ihnen die Auswahl aller Unicode-Zeichen, die die Zahlen von 0 bis 5 definieren, einschließlich thailändischer oder bengalischer Schreibweisen von Zahlen;
  • Unterstützung für benannte Zeichen in regulären Ausdrücken hinzugefügt
    innerhalb von Mustern, die durch einfache Anführungszeichen getrennt sind (qr'\N{name}');

  • Die Unterstützung der Unicode-Spezifikation wurde auf die Version aktualisiert 12.1. Das Flag für experimentelle Entwicklung wurde aus Aufrufen entfernt sv_utf8_downgrade und sv_utf8_decode, wird bei der Entwicklung von Erweiterungen in der C-Sprache verwendet;
  • Es wurde die Möglichkeit hinzugefügt, Perl mit der Implementierung von Vorgängen mit einem Gebietsschema zu erstellen, das Multithread-Vorgänge unterstützt (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Bisher wurde eine solche Implementierung nur beim Erstellen einer Multithread-Version von Perl verwendet, kann aber jetzt für jeden Build aktiviert werden;
  • Durch die Kombination der Flags „-Dv“ (erweiterte Debugging-Ausgabe) und „-Dr“ (Regex-Debugging) werden nun alle möglichen Debugging-Modi für reguläre Ausdrücke aktiviert.
  • Zuvor veraltete Funktionen wurden entfernt:
    • Jetzt als Zeilentrennzeichen und Platzhalterzeichen verfügbar erlaubt nur benutzen Grapheme (Zusammengesetzte Unicode-Zeichen sind nicht zulässig).
    • Abgesetzt Unterstützung für einige längst veraltete Formen der Verwendung des „{“-Zeichens in regulären Ausdrücken, ohne es zu maskieren.
    • Verboten Verwendung der Funktionen sysread(), syswrite(), recv() und send() mit „:utf8“-Handlern.
    • Es ist verboten, Definitionen von „my“ in von Natur aus falschen bedingten Anweisungen zu verwenden (z. B. „my $x if 0“).
    • Die Unterstützung für spezielle Variablen „$*“ und „$#“ wurde entfernt.
      Die Unterstützung für den impliziten Aufruf der Funktion dump() wurde eingestellt (Sie müssen jetzt CORE::dump() explizit angeben).

    • Die Funktion File::Glob::glob wurde entfernt (Sie sollten File::Glob::bsd_glob verwenden).
    • Schutz für pack() gegen die Rückgabe ungültiger Unicode-Sequenzen hinzugefügt.
    • Das Ende der Unterstützung für die Verwendung von Makros, die Operationen mit UTF-8 in XS-Code (C-Blöcken) ausführen, wurde auf die nächste Version verschoben.
  • Leistungsoptimierungen:
    • Übersetzungsvorgänge von UTF-8 in das Zeichenlayout wurden beschleunigt (Codepunkt), zum Beispiel erfordert die Ausführung der ord(„\x7fff“)-Operation jetzt 12 % weniger Anweisungen. Auch die Leistung der Operationen zur Überprüfung der Korrektheit von UTF-8-Zeichenfolgen wurde erhöht;
    • Rekursive Aufrufe in der Funktion finalize_op() wurden eliminiert;
    • Kleinere Optimierungen am Code vorgenommen, um identische Zeichen zu reduzieren und Zeichenklassen in regulären Ausdrücken zu definieren;
    • Optimiert Konvertieren signierter Typdefinitionen in nicht signierte Typdefinitionen (IV in UV);
    • Der Algorithmus zum Konvertieren von Ganzzahlen in eine Zeichenfolge wurde durch die gleichzeitige Verarbeitung von zwei Ziffern anstelle einer beschleunigt.
    • Es wurden Verbesserungen vorgenommen bereit basierend auf einer Analyse von LGTM;
    • Optimierter Code in den Dateien regcomp.c, regcomp.h und regexec.c;
    • In regulären Ausdrücken wurde die Verarbeitung von Mustern wie „qr/[^a]/“ mit ASCII-Zeichen deutlich beschleunigt.
  • Die Unterstützung für die Minix3-Plattform wurde wiederhergestellt. Es ist möglich, mit dem Microsoft Visual Studio 2019-Compiler (Visual C++ 14.2) zu erstellen;
  • Aktualisierte Versionen der im Basispaket enthaltenen Module. Module wurden aus der Hauptkomposition entfernt B::Debug и Gebietsschema::Codes.

Source: opennet.ru

Kommentar hinzufügen