Menü
Developer

Skriptsprache: Perl 5.24 verspricht Performance-Schub

Eine neue Version der Skriptsprache Perl ist freigegeben - allerdings nicht vom neuen Perl 6, sondern vom arrivierten Perl-5.x-Strang. Der soll nun nicht nur zügiger zur Sache gehen, sondern auch mit Unicode 8 umgehen können.

Von
vorlesen Drucken Kommentare lesen 145 Beiträge
Perl 5.24 erschienen

Es ist Mai – das bedeutet auch, dass eine neue Version der Skriptsprache Perl ansteht. Gemeint ist hier aber nicht das neue Perl 6, sondern der arrivierte Perl-5.x-Strang. Das nun verfügbare Perl 5.24 soll sich schneller verhalten und versteht nunmehr Unicode 8. Vor allem wurde die bisher experimentelle Postfix-Dereferenzierung angenommen – die Funktionen der automatischen Dereferenzierung und lexikalischen Kontextvariablen (my $_) mussten weichen.

Die Beschleunigung betrifft vor allem Blöcke (alles mit geschweiften Klammern außer reguläre Ausdrücke), die Grundrechenarten, Inkrement und Dekrement (++ und --). Ein FASTA-Algorithmus der perlformance-Benchmark-Suite läuft damit in 85 Prozent der bisherigen Zeit durch – ein Vorsprung, den die etwas langsamer gewordenen regulären Ausdrücke (Regex) wieder ausgleichen können.

Wer seine Perl-Programme ohne Änderungen im Durchschnitt um den Faktor 1,5 beschleunigen will, greift zum cperl-Compiler. Mit erheblichen Anpassungen und dem Verzicht auf dynamische Bequemlichkeit erreicht der Compiler rperl einen Faktor von rund 250.

Neben den neuen Codepoints wurde die Unicode-Unterstützung in folgenden Details verbessert: Die Eigenschaft "line boundary" (\b{lb}) in einer Regex passt genau dann, wenn eine Zeile an dieser Stelle umgebrochen werden darf. Unicode-Wortgrenzen (\b{wb}) verhalten sich jetzt wie ihre ASCII-Pendants (\b) und \C-Klassen wurden entsorgt. \p{}- und \P{}-Klassen werden nun strenger geprüft, um zur Kompilierzeit Fehler auszugeben.

Um Zeichenketten vor Beschädigungen zu bewahren, mahnt der Compiler die Verwendung des :utf8-Flags im Zusammenhang mit den der I/O-Befehlen sysread, syswrite, recv und send an. Sämtliche Angaben von Encodings an dieser Stelle soll in zukünftigen Versionen verboten sein. Eine Ausnahme wird nun auch geworfen, wenn die ''in-place''-Bearbeitung von Dateien fehlschlägt.

Die Feature postderef und postderef_qq (postderef innerhalb von "") waren für Perl 5 die erste bedeutende syntaktische Änderung, die weder direkt noch über den Umweg Perl 6 von Larry Wall, dem Schöpfer der Sprache, stammte. Ricardo Signes stellte die Idee 2013 in der "perl porter"-Mailingliste vor, wo sie per Konsens implementiert und beschlossen wurde. Nach den Regeln (die erst ab Perl 5.22 dokumentiert sind), verloren die Features mit der dritten stabilen Version seit ihrer Einführung frühmöglich den Status 'experimental' und sind nach einem use v5.24; aktiviert.

Auch das konsequente Abschaffen zweier nach Perl 5.8 eingeführter Funktionen (experimental::autoderef und experimental::lexical_topic), die sich in der Benutzung oder Implementierung als fehleranfällig herausstellten, ist ein Novum

Im Jahr eins nach der Herausgabe von Perl 6 versteht sich Perl 5 zunehmend als Arbeitstier, dass weiter auf Zuverlässigkeit optimiert wird, statt mit Neuheiten glänzen zu müssen. Wie in den Vorjahren floss ein beträchtlicher Aufwand in das Schließen von Spezifikationslücken (Shift-Operatoren << und >>) , die Erneuerung der Dokumentation (in 16 Dokumenten) und das Härten der internen XS-API. Dieser Kurs wird sich wohl nur in Feinheiten ändern, auch wenn diese Veröffentlichung die Amtszeit von Pumpking Ricardo "rjbs" Signes abschließt und ab Perl 5.25 SawyerX entscheiden wird.

Siehe dazu auf heise Developer:

(Herbert Breunung) / (ane)