Website-Suche

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, eines ADJUST-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 $self nicht 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/catch und Multi-Wert-for-Iteration: Funktionen, die in früheren Versionen eingeführt wurden, try/catch für die Ausnahmebehandlung und das Iterieren über mehrere Werte mit for, werden nun als stabil angesehen und lösen keine Warnungen mehr aus.
  • Stabilisierung des builtin-Moduls: Das builtin-Modul, eingeführt in Perl 5.36.0, wird nun als stabil angesehen. Einige Funktionen innerhalb des Moduls bleiben jedoch experimentell.
  • use v5.40 Feature-Bündel: Die Verwendung von use v5.40; (oder später) importiert das entsprechende Feature-Bündel, einschließlich des kürzlich stabilisierten try-Features. Zusätzlich importiert es das relevante builtin-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ösartige cmd.exe in einem Verzeichnis mit schwachen Berechtigungen platziert wurde.

Bemerkenswerte Änderungen

Das Upgrade beinhaltet auch einige inkompatible Änderungen:

  • reset EXPR Verhalten: reset EXPR ruft 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 import oder unimport bei einer undefinierten Klasse mit einem Argument erzeugt jetzt eine Warnung, was die Erkennung von Tippfehlern und potenzieller Fehlanwendung erleichtert.
  • Indirekte Objekte mit return nicht zulassen: Der return-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: Die load_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