Nach einem Jahr Entwicklung wurde die neue stabile Version der Programmiersprache Perl - 5.44 veröffentlicht. Bei der Vorbereitung des neuen Releases wurden etwa 270.000 Codezeilen geĂ€ndert (ohne Dokumentation und automatisiert generierten Code - 110.000), die Ănderungen betrafen 860 Dateien, an der Entwicklung waren 71 Entwickler beteiligt.
Die Version 5.44 wurde gemÀà dem vor 13 Jahren genehmigten festen Entwicklungszeitplan veröffentlicht, der vorsieht, dass neue stabile Versionen jĂ€hrlich und kleinere Updates alle drei Monate erscheinen. Etwa einen Monat spĂ€ter ist die Veröffentlichung des ersten Korrektur-Release Perl 5.44.1 geplant, in dem die wichtigsten Fehler, die wĂ€hrend der EinfĂŒhrung von Perl 5.44.0 entdeckt wurden, behoben werden. Mit der Veröffentlichung von Perl 5.44 wurde die UnterstĂŒtzung fĂŒr die Version 5.40 eingestellt, fĂŒr die Updates in Zukunft nur bei kritischen Sicherheitsproblemen veröffentlicht werden können. Der Prozess zur Entwicklung der experimentellen Version 5.45 hat begonnen, auf deren Basis in der ersten HĂ€lfte des Jahres 2027 eine stabile Version von Perl 5.46 erstellt wird, sofern nicht beschlossen wird, zur Nummerierung 7.x ĂŒberzugehen.
Wichtige Ănderungen:
- Eine experimentelle Funktion zur Verwendung von benannten Parametern in Funktionssignaturen wurde hinzugefĂŒgt. Diese Funktion ermöglicht es, die Variablen, die an die Funktion ĂŒbergeben werden, nicht im Funktionskörper, sondern bei deren Definition zu spezifizieren. Die neue FunktionalitĂ€t erlaubt es, Parameter in beliebiger Reihenfolge mit SchlĂŒssel-/Wert-Paaren und der Syntax zu ĂŒbergeben, die bei der Zuordnung von Elementen in Hashes verwendet wird: Alter Syntax: sub f { my ($x, $y) = @_; âŠ} f(1, 2); Signaturen: sub f ($x, $y) { ⊠} f(1, 2); Signaturen mit benannten Parametern: sub f (:$x, :$y) { ⊠} f(y => 2, x => 1);
- Eine experimentelle Funktion zum Einsatz von Aliasen (Zeigern auf Zeiger) in foreach-Schleifen mit mehreren Variablen wurde hinzugefĂŒgt. Diese FunktionalitĂ€t erlaubt es, innerhalb einer foreach-Schleife Aliase zu erstellen, wĂ€hrend gleichzeitig mehrere Werte in einer einzigen Iteration abgerufen werden. Zum Beispiel kann ein Alias fĂŒr ein Element eines Hashs mit einem Array wĂ€hrend der Iteration ĂŒber die SchlĂŒssel und Werte des Hashs gebildet werden: use v5.44; use feature qw( refaliasing declared_refs ); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, \@items ) ( %hash ) { say "Das Array $key enthĂ€lt: @items"; } # Vor Version 5.44 wĂ€re eine Dereferenzierung erforderlich gewesen: foreach my ( $key, $var ) ( %hash ) { say "Das Array $key enthĂ€lt: @$var"; } # Ohne die experimentellen Funktionen refaliasing und declared_refs: foreach my $key (keys %hash) { say "Das Array $key enthĂ€lt: @{$hash{$key}}"; }
- In regulĂ€ren AusdrĂŒcken wurde ein experimenteller Modus 'enhanced_xx' implementiert, der den Modifikator '/xx' mit Zeichensatz-Klassen in eckigen Klammern ([a-zA-Z]) zur Aufteilung auf mehrere Zeilen oder zur EinfĂŒgung von Kommentaren ermöglicht. Zum Beispiel kann die Bedingung âif ($text =~ m/[a-zA-Z]/){â wie folgt formatiert werden: if ($text =~ m/[ a-z # Kleinbuchstaben A-Z # GroĂbuchstaben ]/xx) {
- Im Zufallszahlengenerator wird der Systemaufruf getentropy() verwendet, um Entropie auf unterstĂŒtzten Systemen abzurufen (Linux, BSD, macOS). Auf anderen Systemen erfolgt die Entropiegewinne durch das Lesen aus dem GerĂ€t /dev/urandom oder durch die Verwendung eines Hashs, der aus der Zeit, der Prozess-ID und dem Zeigerwert erstellt wurde.
- UnterstĂŒtzung fĂŒr die Unicode-Spezifikation 17.0 hinzugefĂŒgt.
- Die strikte Einhaltung der Unicode-Regeln fĂŒr Bezeichnernamen und Gruppen von regulĂ€ren AusdrĂŒcken wurde gewĂ€hrleistet. Nun ist es verboten, circa 160 Unicode-Zeichen zu verwenden, die zuvor unter die Klasse â\wâ fielen. Zum Beispiel wurden lateinische Buchstaben in Kreisen, die echten Buchstaben Ă€hneln, aus der Klasse â\wâ, die alle Buchstaben, Ziffern und das Unterstrich-Zeichen umfasst, ausgeschlossen. Diese VerhaltensĂ€nderung betrifft nur Programme, die den Modus âuse utf8â verwenden.
- SicherheitsanfĂ€lligkeiten, die durch PufferĂŒberlĂ€ufe in den Funktionen Perl_study_chunk (CVE-2026-8376, tritt in 32-Bit-Bauten auf) und S_measure_struct (CVE-2026-57432) verursacht wurden, sowie einen Ăberlauf des 16-Bit-ZĂ€hlers im Regex-Engine (CVE-2026-13221), der zu falschen Auslösungen von regulĂ€ren AusdrĂŒcken fĂŒhren kann, wurden behoben.
- Die Verwendung des goto-Befehls an Positionen innerhalb von Schleifen und Blockstrukturen ist nicht mehr erlaubt. Diese Möglichkeit wurde 2010 als veraltet erklÀrt.
- Leistungsoptimierungen wurden durchgefĂŒhrt, die die VorgĂ€nge von Addition, Subtraktion und Multiplikation mit Ganzzahlen, die Verarbeitung von Funktionssignaturen sowie das BefĂŒllen von Hashes aus SchlĂŒssel/Wert-Listen mit zur Compile-Zeit bekannten String-SchlĂŒsseln beschleunigen.
Quelle: opennet.ru
