Rakudo *: Zwischenschritt auf dem Weg zu Perl 6

Sprachen  –  Kommentare

Mit "Rakudo *" (sprich star) ist die erste Version eines Perl-6-Interpreters erschienen, die für ein größeres Publikum bestimmt ist. Zweifellos ein großer Moment für die Entwickler, aber was genau dürfen Perl-Anwender davon erwarten und welche Auswirkungen hat die Ankündigung auf Perl 5?

Der Name gibt darauf keine Antwort, da er weder Perl 6 noch bekannte Bezeichnungen wie Alpha, Beta oder RC (Release Candidate) enthält. Das war eine kluge Entscheidung von Projektleiter Patrick Michaud, denn der Moment des Fragens, was der Name bedeutet, ermöglicht, eine Botschaft nachzuliefern und einiges an für Perl 6 ungünstig verlaufener Öffentlichkeitsarbeit zu reparieren.

Entgegen vielfacher Wahrnehmung war die OSCON 2000 (damals noch "The Perl Conference") lediglich der Geburtsort der Idee, dem zunächst ein etwa zweijähriger, öffentlicher Prozess der Meinungssuche folgte, was genau an Perl zu verbessern sei. Während dieser Zeit begann Dan Sugalski die neue virtuelle Maschine Parrot zu entwerfen und zu implementieren. Ebenso wie die nachfolgende Ausarbeitung der Syntax der Suche nach der perfekten Sprache ähnelt, die alles enthält, was heute Entwickler erfolgreich anwenden (plus einiges mehr), strebt Parrot ein anspruchsvolles Ziel an. Es möchte Virtual Machine (VM) für möglichst viele dynamischen Sprachen werden, die alle in einem Programm benutzbar sein sollen, womit die Programme Zugriff auf die Bibliotheken sämtlicher implementierter Sprachen hätten. Dazu braucht es universelle Parser-Werkzeuge, die Quellcode in logische Einheiten teilen können, Syntaxbaum-Umwandler, die die logischen Strukturen erkennen und schrittweise in eine Sprache übersetzen, die die VM versteht (was letztlich Bytecode ist), Bytecode Interpreter und Subsysteme die Bytecode-Befehle ausführen, Optimierer und vieles andere mehr.

Die Infrastruktur ist zumindest soweit ausgereift, dass Entwickler vor zweieinhalb Jahren vor staunendem Publikum einen Parrot-Compiler für die Spaßsprache LOLCODE an einem Nachmittag geschrieben hatten. Während der Zeit begann die Arbeit an der heutigen Form des Perl-6-Compilers für Parrot, den man Rakudo nennt. Er wird wohl als das lang ersehnte Perl 6.0 über die Ziellinie laufen, sich jedoch nicht so nennen. Denn alles darf sich Perl 6 nennen, das die zurzeit etwa 40.000 Einzeltests zählende Testsuite besteht, die große Teile der sich immer noch leicht ändernden Spezifikation (Synopsen) abdeckt. Das ist mehr als Rhetorik, denn mindestens fünf weitere Implementierungen (Pugs, elf, Mildew/SMOP, Perlito, viv) verfolgen mit unterschiedlicher Technik unterschiedliche Ziele. Eine der Implementierungen enthält die in Perl 6 formulierte Spezifikation der Syntax, die der Kopf des Sprachteams, Larry Wall, pflegt.

Da Tests und kleine Beispielskripte nicht das "echte Programmiererleben" sind, begannen Johan Viklund und Carl Mäsak mit der Wikisoftware November die erste größere Perl-6-Anwendung, die die Seite
november-wiki.org betreibt. November wurde damit Motor für eine Reifephase, nach der Rakudo wohl gut genug für eine größere Öffentlichkeit ist. Dazu trägt eine neue Generation des Parrot-Werkzeugs NQP bei, das Rakudo erlaubt, die Perl-6-Syntax wesentlich genauer zu befolgen. Das und die Tatsache, dass sich wesentliche Teile der Syntax nicht mehr ändern werden, erlauben die Vorhersage, dass sich das "Geschehen" immer weiter in Details und Optimierungen verlagern wird.

Jetzt braucht es die Erfahrung vieler Anwender, damit Sprache und Interpreter massentauglich und produktionsreif werden können. Aber die vielen Module, die für manchen Perl erst wirklich nützlich machen, sind noch zu schreiben. Zwar gibt es mit "Blizkost" (in Rakudo * enthalten) einen neuen Ansatz, die Perl-5-Module innerhalb von Parrot von einem Perl-5.10-Interpreter ausführen zu lassen, und Rakudo-Nutzer werden zudem die Sprachen Ruby und Python sowie deren Module verwenden können, aber der Aufbau eines CPAN6 oder 6PAN ist auch ein wichtiges Ziel. Noch mehr Modulautoren könnten jetzt mit der Programmierung beginnen, weshalb ihnen öffentlich Wirksames präsentiert werden sollte.

Genau das beschloss Patrick Michaud in Gegenwart des Autors auf der YAPC::EU 2009 in Lissabon. Er meinte: "Was auch immer der Stand im zweiten Quartal des nächsten Jahres ist, wird veröffentlicht." Dieses "was auch immer" (englisch Whatever) lässt sich in Perl 6 mit einem Stern ausdrücken, da es für einen Platzhaltertyp namens "Whatever" steht. Patrick brach damit gewollt aus bekannten Versionsschemen aus, da Rakudo * keine Beta, kein RC, keine 0.5 oder 0.9 ist, sondern eine Vorabversion mit Anspruch auf Zuverlässigkeit, weniger auf Vollständigkeit.

Es ist aber nicht sinnvoll, Perl 5 zu verschmähen, um auf ein professionell einsetzbares Perl 6 zu warten, denn das kommt nicht so schnell. Perl 5 entwickelt sich ständig weiter. Besonders mit Perl 5.10 (aktuell ist Perl 5.12), aber auch mit Moose, einem modernen und mächtigen Objektsystem, kamen etliche Perl-6-Ideen hinzu. Viele weitere Konzepte aus Perl 6 sind mit gleichnamigen Perl6::*-Modulen bereits innerhalb von Perl 5 auszuprobieren, allerdings immer in den alten Syntaxgrenzen. Was Rakudo bietet, ist ein "barrierefreier" Vorgeschmack auf einen ausgewiesenen Teil von Perl 6, mit dem sich größere Programme schreiben lassen, die aber in Geschwindigkeit und Speicherverbrauch für viele inakzeptabel sein dürften.