Debian Unstable wird auf Perl 5.40 aktualisiert
Debian Unstable wurde auf Perl 5.40.0 aktualisiert, was eine Reihe neuer Funktionen, Sicherheitsupdates und Fehlerbehebungen mit sich bringt. Debian-Entwickler Niko Tyni kündigte die Umstellung in der Debian-Mailingliste an und bemerkte, dass Benutzer in sid (der Codename für Debian Unstable) für einige Tage mit weit verbreiteter Nichtinstallierbarkeit rechnen sollten, bis die erforderlichen Neubauten abgeschlossen sind.
Die neuen Perl-Pakete werden zunächst in Debians Unstable-Branch erscheinen. Von dort aus werden sie in den Testing-Branch verschoben und dürften in Debians nächster stabiler Version enthalten sein, wahrscheinlich nächstes Jahr.
Das Upgrade von Debian Unstable auf Perl 5.40.0 ist ein bemerkenswerter Fortschritt. Es führt neue Sprachfunktionen ein, verbessert die Sicherheit und behebt viele Fehler. Lassen Sie uns einige neue Funktionen, Verbesserungen und bemerkenswerte Änderungen in Perl 5.40 besprechen.
Neue Funktionen in Perl 5.40.0
Perl 5.40.0 ist eine Hauptversion mit mehreren Verbesserungen, darunter:
- Das
class-Schlüsselwort: Dieses neue Schlüsselwort ermöglicht es Entwicklern, moderneren und objektorientierteren Perl-Code zu schreiben. Innerhalb einer Methode, einesADJUST-Blocks oder eines Feld-Initialisierungs-Ausdrucks liefert das__CLASS__-Schlüsselwort den Klassennamen der aktuellen Objektinstanz. Dies erleichtert die Methodenzuweisung, insbesondere innerhalb von Konstruktoren, wo der Zugriff auf$selfnicht erlaubt ist. - Leerzeichen in der
-M-Kommandozeilenoption: Perl erlaubt jetzt ein Leerzeichen zwischen dem-M-Schalter und dem anschließenden Modulnamen, entsprechend dem Verhalten der-I-Option. - Logischer XOR-Operator (
^^): Ein neuer logischer XOR-Operator (^^) wurde eingeführt und vervollständigt das Set der logischen und bitweisen Operatoren. - Stabilisierung von
try/catchund Multi-Wert-for-Iteration: Funktionen, die in früheren Versionen eingeführt wurden,try/catchfür die Ausnahmebehandlung und das Iterieren über mehrere Werte mitfor, werden nun als stabil angesehen und lösen keine Warnungen mehr aus. - Stabilisierung des
builtin-Moduls: Dasbuiltin-Modul, eingeführt in Perl 5.36.0, wird nun als stabil angesehen. Einige Funktionen innerhalb des Moduls bleiben jedoch experimentell. use v5.40Feature-Bündel: Die Verwendung vonuse v5.40;(oder später) importiert das entsprechende Feature-Bündel, einschließlich des kürzlich stabilisiertentry-Features. Zusätzlich importiert es das relevantebuiltin-Versionsbündel.
Sicherheitsverbesserungen
In dieser Version wurden zwei bemerkenswerte Sicherheitslücken behoben:
- CVE-2023-47038: Diese Schwachstelle betraf einen potenziellen Pufferüberlauf durch einen maßgeschneiderten regulären Ausdruck. Sie wurde in den Versionen 5.30.0 bis 5.38.0 behoben.
- CVE-2023-47039: Eine auf Perl für Windows beschränkte Binär-Hijacking-Schwachstelle wurde behoben. Diese Schwachstelle entstand durch Perls Abhängigkeit vom Systempfad zur Auffindung von
cmd.exe, was sie anfällig für Ausnutzung machte, indem eine bösartigecmd.exein einem Verzeichnis mit schwachen Berechtigungen platziert wurde.
Bemerkenswerte Änderungen
Das Upgrade beinhaltet auch einige inkompatible Änderungen:
reset EXPRVerhalten:reset EXPRruft nun "set-magic" bei Skalaren auf, was möglicherweise Änderungen an internen Zuständen bewirken oder Ausnahmen auslösen kann.- Aufruf der Importmethode eines undefinierten Pakets: Der Aufruf von
importoderunimportbei einer undefinierten Klasse mit einem Argument erzeugt jetzt eine Warnung, was die Erkennung von Tippfehlern und potenzieller Fehlanwendung erleichtert. - Indirekte Objekte mit
returnnicht zulassen: Derreturn-Operator erlaubt keine indirekten Objekte mehr, wodurch eine Quelle der Verwirrung entfällt. - Beschränkung von Klassen-Barewords bei Methodenaufrufen: Klassen-Barewords werden unter der Bedingung
no feature "bareword_filehandles"in bestimmten Methodenaufrufen nicht mehr als Dateihandles interpretiert.
Modul-Updates
Mehrere Kernmodule wurden aktualisiert, mit bemerkenswerten Verbesserungen darunter:
- Archive::Tar von 2.40 auf 3.02_001 aktualisiert.
- Term::Table zur Core hinzugefügt (Version 0.018).
- Test2::Suite zum Kern (Version 0.000162) hinzugefügt, bietet Werkzeuge für umfassende Unit-Tests.
builtin-Modul: Dieload_module()-Funktion hinzugefügt.
Verschiedene andere Module haben Updates erhalten, einschließlich, aber nicht beschränkt auf bytes, Compress::Raw::Bzip2, Compress::Raw::Zlib, Data::Dumper, DB_File, Devel::Peek, Devel::PPPort, diagnostics und viele mehr.
Die umfassende Liste der Änderungen ist im Perl-Deltadokument dokumentiert, das Entwicklern ausführliche Informationen bietet. Wenn Sie auf Probleme stoßen, von denen Sie glauben, dass es sich um Fehler handeln könnte, befolgen Sie bitte die Meldeanweisungen unter https://github.com/Perl/perl5/issues.
Ressource:
- Übergang zu Perl 5.40 im Gange