Nach einem Jahr der Entwicklung wurde die neue stabile Version der Programmiersprache Perl â 5.42 veröffentlicht. Bei der Vorbereitung der neuen Version wurden etwa 280.000 Codezeilen geĂ€ndert (ohne Dokumentation und automatisch generierten Code â 93.000), dabei wurden 1500 Dateien betroffen, an der Entwicklung waren 64 Entwickler beteiligt.
Die Version 5.42 wurde gemÀà dem vor zwölf Jahren genehmigten festen Entwicklungszeitplan veröffentlicht, der eine jĂ€hrliche Veröffentlichung neuer stabiler Versionen und alle drei Monate Fehlerbehebungen vorsieht. Etwa einen Monat nach der Veröffentlichung wird das erste Bugfix-Release Perl 5.42.1 erwartet, in dem die bedeutendsten Fehler, die bei der EinfĂŒhrung von Perl 5.42.0 festgestellt wurden, behoben werden. Mit der Veröffentlichung von Perl 5.42 wird die UnterstĂŒtzung fĂŒr die Version 5.38 eingestellt, fĂŒr die zukĂŒnftige Updates nur bei schwerwiegenden Sicherheitsproblemen bereitgestellt werden können. In naher Zukunft beginnt der Prozess der Entwicklung der experimentellen Version 5.43, auf deren Basis im Juni 2026 die stabile Version Perl 5.44 erstellt wird, es sei denn, es wird beschlossen, zur Nummerierung 7.x ĂŒberzugehen.
Wesentliche Ănderungen:
- Es wurden experimentelle Listenelementverarbeitungsoperatoren hinzugefĂŒgt â âany { BLOCK } @listâ und âall { BLOCK } @listâ, die dem Operator âgrep { BLOCK } @listâ Ă€hneln, jedoch nur Werte true oder false zurĂŒckgeben können. Der Operator âallâ gibt âtrueâ zurĂŒck, wenn die Bedingung fĂŒr alle Elemente der Liste erfĂŒllt ist, wĂ€hrend der Operator âanyâ dies fĂŒr mindestens ein Element tut. Die FunktionalitĂ€t der Operatoren Ă€hnelt den Funktionen im Modul List::Util, aber die integrierten Varianten sind schneller und verbrauchen weniger Speicher. use v5.42; use feature 'keyword_all'; no warnings 'experimental::keyword_all'; my @numbers = ⊠if ( all { $_ % 2 == 0 } @numbers ) { say 'Alle Zahlen sind gerade'; }
- FĂŒr innerhalb der Klasse definierten Felder wurde das Attribut â:writerâ implementiert, das zur automatischen Erstellung einer Methode verwendet wird, die den Wert einer Variable in das Feld fĂŒr die aktuelle Instanz der Klasse schreibt. class Point { field $x :reader :writer :param; field $y :reader :writer :param; } my $p = Point->new( x => 20, y => 40 ); $p->set_x(60);
- Die UnterstĂŒtzung fĂŒr die Definition von lexikalischen Methoden wurde hinzugefĂŒgt, die es, analog zur Definition von lexikalischen Unterprogrammen (âlexical_subsâ), ermöglicht, Methoden zu erstellen, die nur im Bereich der lexikalischen Sichtbarkeit des Blocks, in dem sie erstellt wurden, verfĂŒgbar sind. Zur Erstellung solcher Methoden wird der Ausdruck âmy name_der_methodeâ verwendet.
- Der Operator â->&â wurde hinzugefĂŒgt, der es ermöglicht, Unterprogramme, die sich im lexikalischen Sichtbarkeitsbereich befinden, so aufzurufen, als ob sie Methoden wĂ€ren. In Kombination mit der Möglichkeit zur Definition lexikalischer Methoden implementiert der neue Operator eine FunktionalitĂ€t, die Ă€hnelt privaten Methoden.
- Der Zuweisungsoperator âA ^^= Bâ wurde hinzugefĂŒgt, der die Operation âA = A XOR Bâ ausfĂŒhrt.
- Die Pragmatik âsource::encodingâ wurde hinzugefĂŒgt, die die Codierung des Quellcodes definiert. FĂŒr Code in ASCII-Codierung kann âuse source::encoding 'ascii'â (standardmĂ€Ăig) angegeben werden, und fĂŒr UTF-8 â âuse source::encoding 'utf8'â, wobei letzteres Ausdruck dem Ausdruck âuse utf8â entspricht. Der Interpreter gibt einen Fehler aus, wenn im als ASCII bezeichneten Code UTF-8-Zeichen erscheinen, oder wenn im als UTF-8 bezeichneten Code Escape-Sequenzen â\x{}â verwendet werden. Um die PrĂŒfung eines Codeabschnitts zu deaktivieren, kann der Wert âuse no source::encodingâ verwendet werden. In der Praxis kann die hinzugefĂŒgte Pragmatik nĂŒtzlich sein, um FĂ€lle zu identifizieren, in denen der Entwickler vergessen hat, âuse utf8â fĂŒr Code in UTF-8-Codierung anzugeben.
- Die Funktion chdir() wurde dem Namensraum âCORE::â hinzugefĂŒgt. So kann jetzt auf diese Funktion als â&CORE::chdir($dir)â oder âmy $ref = \&CORE::chdir; $ref->($dir)â zugegriffen werden.
- Der Ausdruck 'no feature «apostrophe_as_package_separator»' wurde hinzugefĂŒgt, um die UnterstĂŒtzung fĂŒr die Verwendung des Zeichens â'â als Trennzeichen fĂŒr Paketnamen zu deaktivieren (z. B. âMy'Module'Varâ anstelle von âMy::Module::Varâ). UrsprĂŒnglich war in Perl 5.42 geplant, die UnterstĂŒtzung solcher Trennzeichen, die zuvor als veraltet deklariert wurden, zu entfernen, aber wĂ€hrend der Diskussionen wurde entschieden, diese Möglichkeit standardmĂ€Ăig beizubehalten, jedoch eine Option zur Deaktivierung vorzusehen.
- Die FunktionalitĂ€t âswitchâ und der Operator â~~â wurden in die zurĂŒckgegebenen Möglichkeiten aufgenommen, die zuvor als veraltet markiert und zur Entfernung geplant waren. Ab den Versionen Perl 5.36 und 5.42 sind die Funktionen âswitchâ und â~~â standardmĂ€Ăig deaktiviert, wenn der Code an bestimmte Sprachversionen gebunden ist (z. B. bei Angabe von âuse v5.42â), können jedoch durch die AusdrĂŒcke âuse feature âswitchââ und âuse feature âsmartmatchââ aktiviert werden.
- UnterstĂŒtzung fĂŒr die Unicode-Spezifikation 16.0 hinzugefĂŒgt.
Quelle: opennet.ru
