Entwicklung & Code

Programmiersprache Perl 5.42 führt neue Listenoperatoren ein


Die schrittweise Einführung des parallelen Objektsystems Corinna setzt auch das neue Release Perl 5.42 fort. Neben der Bereinigung zahlreicher – auch sicherheitsrelevanter – Fehler liefert das Update der Programmiersprache sowohl verschiedene Erweiterungen als auch neue Funktionen. So lassen sich autogenerierte, kombinierte getter-setter-Methoden nun über die Eigenschaft :writer(...) der field-Variablen einrichten. Perl 5.42 behebt außerdem den gegenüber vergleichbaren Sprachen langjährigen Nachteil, keine vollständige Kapselung bieten zu können.

Mit dem experimentellen Feature class begann vor rund zwei Jahren der Übergang zum Objektsystem Corinna. Die komplette Funktionalität von Corinna fasst das Perl-Entwicklungsteam als feature class zusammen. Nach den offiziellen Regeln wird es noch etliche Jahre im Status experimentell bleiben, da dieser erst mindestens zwei Jahre nach der letzten Änderung fallen darf. Da zudem noch Neuerungen wie roles und gegebenenfalls ein Metaobjekt-System in Planung sind, wird das Feature class frühestens 2028 als nicht mehr experimentell eingestuft werden können.

Entwicklerinnen und Entwickler, die unter Perl 5.42 ihre Programme mit use experimental ‚class‘; beginnen, dürfen field-Variablen mit der Eigenschaft :writer(...) kennzeichnen und somit den Namen einer autogenerierten setter-Methode festlegen, die den öffentlichen Zugriff auf das ansonsten private Objekt-Attribut erlaubt. Das ist auch der einzige Weg autogenerierte, kombinierte getter-setter-Methoden zu bekommen, da der Name der Zugriffsmethode im Regelfall aus dem Präfix set_ und dem Attributnamen besteht.

Darüber hinaus können mit method deklarierte Methoden jetzt auch einen lexikalisch lokalen Zugriffsbereich besitzen, der – wie bei Variablen – ein my erzwingt. Der Zugriff auf die Methode erfolgt innerhalb der Klasse mit $objekt->&methode(...), unter Umgehung der Vererbungshierarchie. Damit besitzt Perl nun eine vollständige Kapselung und behebt einen wesentlichen Nachteil, den es lange Jahre gegenüber vergleichbaren Sprachen besaß.

Neu sind ebenfalls zwei Listenoperatoren im Stile von map und grep. any liefert ein true, wenn die in geschweiften Klammern mitgelieferte Bedingung für einen Listenwert zu true evaluiert – bei all müssen es dem Operatornamen entsprechend alle sein. Beide Operatoren brechen die Berechnung ab, sobald das Ergebnis feststeht, und sie müssen derzeit noch mit use experimental 'keyword_any';, beziehungsweise use experimental 'keyword_all'; angemeldet werden.

Gleiches gilt für die älteren Features switch und smartmatch, die entgegen anderslautenden Ankündigungen nicht entfernt werden. Der Vollständigkeit wegen wurde auch der selbstzuweisende xor-Operator mit hoher Präzedenz: =^^ nachgereicht und mit use source::encoding 'utf8'; hat das Entwicklungsteam einen expliziten Alias für use utf8; gefunden. no feature "apostrophe_as_package_separator"; dient lediglich dazu sicherzustellen, dass unbekannter Code nicht den veralteten Paketnamentrenner verwendet.

Die beiden wichtigsten behobenen Fehler mit Sicherheitsrelevanz sind erstens in CVE-2024-56406 beschrieben. Demnach konnten Ersetzungen von Zeichen, die mit mehreren Bytes kodiert sind, zu Pufferüberläufen führen. Zweitens ließ sich laut CVE-2025-40909 während des Forks eines Thread Schadcode ausführen. Die Schwachstellen waren vier beziehungsweise vierzehn Jahre offen.

Eine komplette Übersicht aller in Perl 5.42 behobenen Fehler, Dokumentationsänderungen, Fehlermeldungen sowie weiterer Interna lässt sich in perldoc einsehen.

Siehe auch:


(map)



Source link

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Beliebt

Die mobile Version verlassen