Larry Wall gibt den Rakudo-Perl-6-Compiler auf MoarVM für den produktiven Einsatz frei

Sprachen  –  7 Kommentare


Vierzehneinhalb wechselvolle Jahre nach Bekanntgabe des großen Plans, gemeinschaftlich alles an Perl zu ändern, was Veränderung benötigt, erreicht Perl 6 diese Weihnacht den Status "veröffentlicht".

Die Entwicklung bis zum Release erstreckte sich über einen öffentlichen RFC-Prozess, Diskussionen in Mailinglisten (später IRC-Channel), sowie mehrere Dutzend lose bis kaum koordinierte Nebenprojekte. Die wichtigsten sind auf perl6.org beschrieben, der offiziellen und umfassenden Informationsquelle mit Verweisen zu Installationsanleitungen für Rakudo und Perl-6-Modulen. Zum Fest gab es auch einen passenden Adventskalender.

Wie berichtet folgt Rakudo seit 2010 einem monatlichen Release-Zyklus und besitzt ein darauf fußendes Versionsschema von: Jahr.Monat. C(hristmas) ist andererseits der auf a(lpha) und b(eta) folgende Versionsbuchstabe einer Sprachspezifikation und gleichzeitig die Anspielung auf den seit mindestens 2005 kursierenden Witz, Perl 6 werde an einem Weihnachten erscheinen. Die Zahlen 5 und 6 sind für Perl keine Versionsnummern, sondern benennen verschiedene Sprachen, die in keinem Wettstreit stehen. Larry Wall bekundete in Reden, dass Perl 5 so lange weiter gepflegt werden soll, wie Nutzer daran Gefallen finden. Die Kontrolle über die syntaktische Weiterentwicklung gab er bereits vor Jahren an die p5p ab.

Perl 5 einzumotten wäre zudem unvernünftig, bevor Perl 6 eine annährend vergleichbare Modulunterstützung bietet. Zwar gibt es bereits 500 Module, die aber zumeist junge Projekte sind. Andererseits hat Perl 6 einen wesentlich umfangreicheren Kern, der Erweiterungen wie Exporter, List::Util, Method::Signatures, TryCatch, Moose oder Regexp::Grammars überflüssig macht. Das spiegelt sich auch in den Benchmarks wider: Im Schnitt ist Rakudo, das sich innerhalb der letzten zwei Jahre stark verbesserte, um eine Größenordnung langsamer als perl 5.22, holt aber vor allem dort auf – und überholt sogar gelegentlich –, wo Perl 5 keine entsprechende Basisfunktion besitzt. Chefentwickler Jonathan Worthington sieht weiterhin genügend Ansatzmöglichkeiten für Optimierungen, sodass Rakudo auf absehbare Zeit gleichziehen sollte.

Perl 6 ist eine modernisierte und konsistentere Fassung von Perl 5, die semantisch von Haskell, Ruby und ein wenig von Go gelernt hat, aber auch zu eigenen Konstrukten fand. Die Sprache zu umreißen ist dennoch nicht einfach, da die Macher versucht haben, vermeintlich Widersprüchliches kombinierbar zu halten. Zu den Gegenstücken gehören objektorientierte Programmierung und ein strukturierter beziehungsweise funktionaler Programmierstil, ein linearer und ein asynchroner, paralleler Programmfluss, Einfachheit für Anfänger und Mächtiges für Experten.

Wegen seiner optionalen Typisierbarkeit fällt es noch schwerer Perl 6 als Skriptsprache abzugrenzen, zumal Applikationssprachen wie C# und Java zunehmend dynamische Funktionen aufnehmen. Eigenheiten von Perl 6 findet man in den vollständig überarbeiteten regulären Ausdrücken. Sie sind zu Grammatiken kombinierbar, mit denen Entwickler übersichtlich und beherrschbar komplexe Daten und Sprachen in Sinneinheiten zerlegen können. Mit solchen Grammatiken können sie domänenspezifische Sprachen definieren, die weit über das Einführen neuer Schlüsselwörter hinausgehen. In Anführungszeichen Gesetztes, die Hauptsprache, und auch die regulären Ausdrücke selber sind derartige, in Perl 6-Regex formulierte DSL (domain specific languages). Das macht Perl 6 zu einem Gebilde ohne festen Kern, an dem sich alles ändern lässt. Es gibt Programmierer, die das verunsichert; Larry Wall sieht jedoch seine Hauptaufgabe darin, den Nutzern Werkzeuge zu geben, die Sprache ihren Bedürfnissen anzupassen. Dadurch soll Perl 6 lange Zeit relevant bleiben, statt das Rennen um das Feature des Monats zu gewinnen. Wall bezieht sich damit auf einen Text von Paul Graham über Graham's Lisp-Dialekt, der dort in Kontrast zu Java gesetzt wird, obwohl Guy Steele vor fast 20 Jahren ein ähnliches Änderungsrecht für Java-Nutzer forderte.