Die Veröffentlichung der Programmiersprache Perl 5.30.0

Nach 11 Monaten Entwicklung statt wurde eine neue stabile Version der Programmiersprache Perl veröffentlicht — 5.30. Bei der Vorbereitung dieser Version wurden etwa 620.000 Zeilen Code geändert, 1.300 Dateien betroffen, und 58 Entwickler waren an der Entwicklung beteiligt.

Die Version 5.30 wurde gemäß einem vor sechs Jahren festgelegten Zeitplan veröffentlicht, der die jährliche Veröffentlichung neuer stabiler Versionen und alle drei Monate Korrekturen vorsieht. Etwa einen Monat später wird das erste Korrektur-Release Perl 5.30.1 erwartet, in dem die wichtigsten Fehler, die beim Einsatz von Perl 5.30.0 entdeckt wurden, behoben werden. Mit der Veröffentlichung von Perl 5.30 wurde die Unterstützung für die Version 5.26 eingestellt, für die zukünftige Updates nur bei kritischen Sicherheitsproblemen bereitgestellt werden. Zudem hat der Entwicklungsprozess für die experimentelle Version 5.31 begonnen, aus der im Mai 2020 eine stabile Version von Perl 5.32 entstehen wird.

Schlüssige eingeführt wurde, die im Januar dieses Jahres in den Kernel übernommen wurde. Es betrifft ausschließlich die Version 5.1 und tritt in den meisten Fällen auf Systemen mit Samsung-SSD-Speichern auf, bei denen zur Verschlüsselung Daten mit dm-crypt/LUKS über device-mapper/LVM verwendet werden.:

  • In reguläre Ausdrücke wurde eine experimentelle Unterstützung für die Operationen „(?‹!pattern)» und «(?‹=pattern)» für den begrenzten Zugriff auf zuvor verarbeitete benannte Vorlagen. Die Definition der Vorlage darf maximal 255 Zeichen vom Ort des Zugriffs entfernt sein;
  • Der maximale Wert des Größenbezeichners („n“) in den Blöcken „{m,n}“ von regulären Ausdrücken wurde auf bis zu 65534 erhöht;
  • Es wurde eine eingeschränkte Unterstützung für Masken zur Hervorhebung bestimmter Zeichengruppen in regulären Ausdrücken hinzugefügt, die verschiedene Unicode-Sets abdecken. Zum Beispiel ermöglicht der Ausdruck „qr! \p{nv= /(?x) \A [0-5] \z / }!“ die Hervorhebung aller Unicode-Zeichen, die die Ziffern von 0 bis 5 beschreiben, einschließlich der thailändischen oder bengalischen Schreibweisen von Ziffern;
  • In regulären Ausdrücken wurde die Unterstützung für benannte Zeichen
    innerhalb von Mustern, die durch einfache Anführungszeichen eingegrenzt sind (qr’\N{name}’), hinzugefügt;
  • Die Unterstützung der Unicode-Spezifikation wurde auf Version 12.1aktualisiert. Das Experimentalmuster wurde von den Aufrufen sv_utf8_downgrade und sv_utf8_decode, die bei der Entwicklung von Erweiterungen in C verwendet werden, entfernt;
  • Die Möglichkeit, Perl mit einer lokalen Implementierung zu kompilieren, die die Arbeit in einem Multithread-Modus unterstützt (-Accflags='-DUSE_THREAD_SAFE_LOCALE'), wurde hinzugefügt. Bisher war eine solche Implementierung nur beim Kompilieren der Multithread-Variante von Perl verfügbar, jetzt kann sie für alle Kompilationen aktiviert werden;
  • Die Kombination der Flags „-Dv“ (erweiterte Debug-Ausgaben) und „-Dr“ (Debugging von regulären Ausdrücken) führt jetzt zur Aktivierung aller möglichen Debugging-Modi für reguläre Ausdrücke;
  • Entfernte Funktionen, die zuvor als veraltet deklariert wurden:
    • Als Zeichen zum Trennen von Zeilen und Mustern ist jetzt nur die Verwendung von Grafemen erlaubt (zusammengesetzte Unicode-Zeichen sind verboten).
    • Eingestellt Unterstützung für einige seit langem veraltete Formen der Verwendung des Zeichens „{“ in regulären Ausdrücken ohne Escape.
    • Die Verwendung von Funktionen wie sysread(), syswrite(), recv() und send() mit „:utf8“-Handlern ist verboten.
    • Es ist verboten, „my“-Definitionen in anfangs falschen Bedingungsoperatoren 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 (now CORE::dump() muss explizit angegeben werden).
    • Die Funktion File::Glob::glob wurde entfernt (verwenden Sie File::Glob::bsd_glob).
    • Im pack() wurde ein Schutz gegen die Rückgabe ungültiger Unicode-Sequenzen hinzugefügt.
    • Die Unterstützung für die Verwendung von XS-Code (C-Blöcke) mit Makros, die UTF-8-Operationen durchführen, wird bis zur nächsten Version verschoben.
  • Leistungsoptimierungen:
    • Die Ausführung von UTF-8 in Zeichencodierungen wurde beschleunigt (Codepunkt), zum Beispiel benötigt die Ausführung der Operation ord(«\x7fff») nun 12 % weniger Instruktionen. Auch die Leistung bei der Überprüfung der Gültigkeit von UTF-8-Zeichensequenzen wurde gesteigert;
    • Rekursive Aufrufe in der Funktion finalize_op() wurden ausgeschlossen;
    • Kleinere Optimierungen im Code zum Zusammenfassen identischer Zeichen und zur Klassifizierung von Zeichen in regulären Ausdrücken wurden vorgenommen;
    • Die Umwandlung von vorzeichenbehafteten Typen in vorzeichenlose (IV in UV) wurde optimiert;
    • Der Algorithmus zur Umwandlung von Ganzzahlen in Zeichenfolgen wurde beschleunigt, indem zwei Ziffern gleichzeitig anstelle von einer bearbeitet werden;
    • Es wurden Verbesserungen vorgenommen, die aufgrund der Analyse durch LGTM vorbereitet wurden;
    • Der Code in den Dateien regcomp.c, regcomp.h und regexec.c wurde optimiert.
    • In regulären Ausdrücken wurde die Verarbeitung von Mustern wie „qr/[^a]/“ mit ASCII-Zeichen erheblich beschleunigt.
  • Die Unterstützung der Minix3-Plattform wurde wiederhergestellt. Es ist jetzt möglich, mit dem Microsoft Visual Studio 2019 (Visual C++ 14.2) zu kompilieren;
  • Die Versionen der Module, die im Grundpaket enthalten sind, wurden aktualisiert. Aus der Hauptsammlung wurden die Module entfernt: B::Debug und Locale::Codes.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster