Privacy Policy Cookie Policy Terms and Conditions Pugs - Wikipedia

Pugs

aus Wikipedia, der freien Enzyklopädie

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

[Bearbeiten] 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.

[Bearbeiten] 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 Neugestalltung des Grammars ist noch nicht möglich.
  • Pugs' Evaluator unterstützt die meisten Builtins und auch viele objektorientierte Routinen. Sein Hauptproblem ist zur Zeit seine vergleichbar langsame 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.

[Bearbeiten] Haskell

Haskell eignet sich für dieses Vorhaben gut, weil es viele Ähnlichkeiten zu Perl 6 besitzt und schnell zu Ergebnissen führt, und die in Haskell verfügbaren Bibliotheken viele wichtige Perl 6-Funktionalitäten bereits abdecken.

Eine essentielle Anforderung an den Perl 6-Compiler ist die Lauffähigkeit unter allen Betriebssystemen, unter denen auch Perl 5 Verbreitung fand. Da dies 2005 noch nicht für Haskell gilt, kommt es für diese Aufgabe auch nicht in Frage. Auch andere wichtige Ziele von Perl 6 wie eine höhere Ausführungsgeschwindigkeit als Perl 5 und geringer Speicherverbrauch sind mit Haskell derzeit nicht erreichbar.

[Bearbeiten] 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.11 (2. Februar 2006).

[Bearbeiten] 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.

[Bearbeiten] 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 Autrijus 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.

[Bearbeiten] Weblinks

Andere Sprachen

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -