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 Zeilen Code geĂ€ndert (ohne Dokumentation und automatisch generierten Code - 93.000), wobei Änderungen in 1.500 Dateien vorgenommen wurden und 64 Entwickler an der Entwicklung beteiligt waren.

Die Version 5.42 wurde gemĂ€ĂŸ dem vor zwölf Jahren genehmigten festen Entwicklungszeitplan veröffentlicht, der die jĂ€hrliche Veröffentlichung neuer stabiler Versionen und alle drei Monate Korrekturausgaben vorsieht. In etwa einem Monat wird die erste Korrekturausgabe Perl 5.42.1 erscheinen, in der die bedeutendsten Fehler behoben werden, die wĂ€hrend der Implementierung von Perl 5.42.0 entdeckt wurden. Gleichzeitig mit der Veröffentlichung von Perl 5.42 wurde die UnterstĂŒtzung fĂŒr die Version 5.38 eingestellt, fĂŒr die Updates in Zukunft nur veröffentlicht werden, wenn kritische Sicherheitsprobleme auftreten. In naher Zukunft wird der Prozess zur Entwicklung der experimentellen Version 5.43 beginnen, auf dessen Grundlage im Juni 2026 eine stabile Version von Perl 5.44 erstellt wird, es sei denn, es wird beschlossen, zur Nummerierung 7.x ĂŒberzugehen.

Wichtige Änderungen:

  • Es wurden experimentelle Listenverarbeitungsoperatoren hinzugefĂŒgt: «any { BLOCK } @list» und «all { BLOCK } @list», die dem Operator «grep { BLOCK } @list» Ă€hneln, aber nur die 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» «true» zurĂŒckgibt, wenn die Bedingung fĂŒr mindestens ein Element erfĂŒllt ist. Die FunktionalitĂ€t der Operatoren Ă€hnelt den Funktionen des Moduls List::Util, jedoch sind die eingebauten Varianten 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, um den Wert einer Variablen in das Feld des aktuellen Klasseninstanz zu schreiben. class Point { field $x :reader :writer :param; field $y :reader :writer :param; } my $p = Point->new( x => 20, y => 40 ); $p->set_x(60);
  • UnterstĂŒtzung fĂŒr die Definition von lexicalen Methoden hinzugefĂŒgt, die analog zur Definition von lexikalischen Unterprogrammen („lexical_subs“) es ermöglicht, Methoden zu erstellen, die nur im Geltungsbereich des Blocks sichtbar sind, in dem sie erstellt wurden. Zum Erstellen solcher Methoden wird der Ausdruck „my name_of_method“ verwendet.
  • Der Operator „->&“ wurde hinzugefĂŒgt, der es ermöglicht, Unterprogramme, die sich im lexikalischen Geltungsbereich befinden, so aufzurufen, als ob sie Methoden wĂ€ren. In Kombination mit der Möglichkeit, lexikale Methoden zu definieren, implementiert der neue Operator eine FunktionalitĂ€t, die privaten Methoden Ă€hnelt.
  • Der Zuweisungsoperator „A ^^= B“ wurde hinzugefĂŒgt, der die Operation „A = A XOR B“ ausfĂŒhrt.
  • Die Pragma "source::encoding" wurde hinzugefĂŒgt, um die Zeichencodierung des Quellcodes festzulegen. FĂŒr ASCII-codierten Code kann "use source::encoding 'ascii'" (standardmĂ€ĂŸig) angegeben werden, wĂ€hrend fĂŒr UTF-8 "use source::encoding 'utf8'" verwendet werden kann, wobei letzteres dem Ausdruck "use utf8" entspricht. Der Interpreter gibt einen Fehler aus, wenn im als ASCII gekennzeichneten Code UTF-8-Zeichen vorkommen oder wenn im als UTF-8 gekennzeichneten Code Escape-Sequenzen "\x{}" verwendet werden. Um die ÜberprĂŒfung eines Teils des Codes zu deaktivieren, kann der Wert "use no source::encoding" verwendet werden. Praktisch kann die hinzugefĂŒgte Pragma nĂŒtzlich sein, um FĂ€lle zu identifizieren, in denen der Entwickler vergessen hat, "use utf8" fĂŒr UTF-8-codierten Code anzugeben.
  • Die Funktion chdir() wurde dem Namensraum "CORE::" hinzugefĂŒgt. Beispielsweise kann jetzt auf diese Funktion zugegriffen werden als «&CORE::chdir($dir)» oder «my $ref = \&CORE::chdir; $ref->($dir)».
  • Eine neue Funktion ‚no feature «apostrophe_as_package_separator»‘ wurde hinzugefĂŒgt, um die UnterstĂŒtzung der Verwendung des Zeichens ‚‘ als Paketnamen-Trenner zu deaktivieren (zum Beispiel ‚My’Module’Var‘ anstelle von ‚My::Module::Var‘). UrsprĂŒnglich war geplant, die UnterstĂŒtzung solcher Trenner in Perl 5.42 zu entfernen, die zuvor als veraltet deklariert wurden. In den Diskussionen wurde jedoch beschlossen, diese Möglichkeit standardmĂ€ĂŸig beizubehalten, jedoch eine Option zum Deaktivieren vorzusehen.
  • Die FunktionalitĂ€t „switch“ und der Operator „~~“, die zuvor als veraltet markiert und zur Entfernung geplant waren, wurden in die zurĂŒckgegebenen Möglichkeiten ĂŒbernommen. Ab den Perl-Versionen 5.36 und 5.42 sind die Möglichkeiten „switch“ und „~~“ standardmĂ€ĂŸig deaktiviert, wenn der Code an die Sprachversionen gebunden ist (zum Beispiel bei Verwendung von „use v5.42“), können jedoch mit den AusdrĂŒcken ‚use feature «switch»‘ und ‚use feature «smartmatch»‘ aktiviert werden.
  • UnterstĂŒtzung fĂŒr die Unicode-Spezifikation 16.0 wurde hinzugefĂŒgt.

Quelle: opennet.ru

ZuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen đŸ”„ ZuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster