Die Programmiersprache Perl 5.42 ist verfĂŒgbar

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

60GB SSD 8Gb DDR4