- Pugs
-
Pugs ist ein alternativer Interpreter und Compiler für Perl 6, der in Haskell (GHC) geschrieben wird. Das Softwareprojekt wurde am 1. Februar 2005 von Audrey Tang begonnen, um die Entstehung von Perl 6 zu unterstützen. Es ist eine freie Software, die wahlweise unter der GPL oder der Artistic License verwendet werden darf.
Inhaltsverzeichnis
Zweck
Zum einen dient Pugs als Testimplementierung für den Perl 6-Parser. Wesentliche Fehler, die in Pugs gemacht wurden, können dann später vermieden werden, aber es wird auch Syntax-Schwächen im Entwurf der Sprache Perl 6 zu einem Zeitpunkt aufzeigen, an dem Korrekturen noch relativ einfach möglich sind.
Zum anderen wird der eigentliche (in Perl 6 geschriebene) Perl 6-Parser ein Programm sein, das von Pugs zu Parrot-Bytecode kompiliert wird. Bereits heute ist es möglich, mit Pugs Parrot-Code zu erzeugen, oder von Parrot erzeugten Parrot-Code mit Pugs zu kompilieren. Seit Version 6.2.8 kann Pugs auch Perl 6-Code zu Perl 5 kompilieren. Pugs hilft auch, Engpässe zu umgehen, da Sprache als auch Parrot noch nicht vollständig fertig sind. Detaillösungen, wie die Test-Suite, können bereits entwickelt werden, obwohl andere, technisch dafür notwendige Teile, noch nicht benutzbar sind.
Mit der Version 6.2.8 haben sich die Ziele des Projektes leicht geändert. Pugs soll ein vollständiger Perl 6-Compiler werden, der Perl 6 nach Parrot (PIR), Haskell oder Perl 5 und weiteren Sprachen, z.B. JavaScript, übersetzen kann. Dabei werden so viel Bestandteile von Pugs wie möglich von Haskell zu später weiterverwendbaren Perl 6-Modulen umgeschrieben.
Status
Pugs kann man in einige Subprojekte gliedern.
- Pugs' Parser ist in der Lage „Standard-Perl“ zu parsen. Auch werden benutzerdefinierte Operatoren unterstützt, aber eine komplette Neugestaltung der Grammatik ist noch nicht möglich.
- Pugs' Evaluator unterstützt die meisten Builtins und auch viele objektorientierte Routinen. Sein Hauptproblem ist zurzeit seine vergleichbar niedrige Geschwindigkeit.
- Pugs' Compiler zu PIL steht und ist stabil.
- Für die weitere Arbeit an Pugs' Compiler zu PIR (Parrot) wartet man auf einige Features von Parrot.
- Pugs' Compiler zu JavaScript ist noch ein sehr junges Subprojekt; viele Builtins werden bereits unterstützt, allerdings ist die Geschwindigkeit des resultierenden JavaScript-Codes sehr gering.
Versionen
Die Versionierung von Pugs beginnt mit 6.0, und es wird mit jedem neuen Meilenstein eine Ziffer hinzukommen, so dass die Versionsnummer das Doppelte von Pi nachbildet. Dies geht auf einen Scherz von Larry Wall zurück, der auf die Frage nach einem Perl 7 erklärte, warum Perl in seiner Version 2*Pi nicht überschreiten sollte. Aktuell ist Version 6.2.13 (17. Oktober 2006).
Name
Pugs bedeutet auf englisch Mops (Mehrzahl) und ein solcher dient auch als Logo des Projektes. Offiziell ist Pugs ein Akronym für Perl6 User Golfing System was eine Anspielung auf Perl-Golf ist.
Aktuelle Informationen
Die wöchentlich verschickte Mail „This week on Perl 6“, die man auch auf perl.com nachlesen kann, und das Entwickler-Journal von Audrey Tang bieten einen bequemen Einblick in die Pugs-Entwicklung. Es ist auch möglich, die Entwickler direkt per IRC (irc.freenode.net, #perl6) zu erreichen.
Weblinks
Wikimedia Foundation.