Pugs
Pugs je kompilátor a intrepret pro Perl 6. Cílem projetku Pugs je úplná implementace Perlu 6 podle specifikace definované Synopses a bootstrap Perlu 6. Velká část projektu je napsána v Haskellu, konkrétně v Glasgow Haskell Compiler.
Contents |
Úvod
Pugs obsahuje dvě základní části:
- pugs - interpret s interaktivním shellem
- pugscc - umožňuje kompilaci Perlu 6 programů do kódu v Haskellu, Perlu 5, JavaScriptu nebo PIR assembleru pro virtuální stroj Parrot
Číslovaní verzí
Čísla verzí konvergují k číslu 2π (podobně jako u enw:TeX a enw:METAFONT). Každé desetinné místo reprezentuje úspěšné dokončení některého milníku. Milníky jsou naplánovany takto:
- 6.0: první verze
- 6.2: základní IO operace a řízení toku, proměnlivé (mutable) proměnné, přiřazení
- 6.28: třídy (classes) a vlastnosti (traits)
- 6.283: pravidla (rules) a gramatiky (grammars)
- 6.2831: typový systém a linking
- 6.28318: makra
- 6.283185: portování Pugsu do Perlu 6, pokud to bude nutné
Kompatibilita s Perlem 5
Od verze 6.2.6, Pugs umožňuje vložení Perlu 5 a použítí modulů nainstalovaných ze CPANu. Níže uvedený příklad ukazuje použití modulu enw:Perl DBI pro databázi enw:SQLite.
#!/usr/bin/pugs
use v6;
use perl5:DBI;
my $dbh = DBI.connect('dbi:SQLite:dbname=test.db');
$dbh.do("CREATE TABLE Test (Project, Pumpking)");
my $sth = $dbh.prepare("INSERT INTO Test VALUES (?, ?)");
$sth.execute(<PGE Patrick>);
$sth.execute(<Pugs Audrey>);
$sth.execute(<Parrot Leo>);
my $res = $dbh.selectall_hashref('SELECT * FROM Test', 'Pumpking');
# Just another Pugs hacker
say "Just another $res<Audrey><Project> hacker";
Vývojový model
Pugs je vychvalovaný a obvzlášť úspěšný open-source projekt. Hned od svého spuštění na začástku roku 2005 byl jeho rozvoj rychlý. Za hlavní důvody jsou považovány tyto:
- Pugs používá Haskell (více na enw:Pugs#Development_model))
- použití vývojového modulu řízeného testy, které pochází z extrémního programování (Test-driven methodology)
- Audreyina štědrost při rozdávaní enw:commit bit
- Audreyino nadšení a častá komunikace. Jeho žurnál a přednášky přilákaly mnoho vývojářů
- komunita na csw:IRC Freenode kanálu #perl6
Díky licencím a obavám z nedostatku informací o copyrightu od autorů je nepravděpodobné, že The Perl Foundation přijme Pugs jako oficiální implementaci Perlu 6.
Externí odkazy
- pugscode.org - web projektu
- Pugs (anglická Wikipedie)
- Pugs Journal
- -Ofun: Optimizing for Fun (-Ofun Optimalizace na zábavu)
- Perl6::Pugs na CPANu
- Kudos from Perl 6 Design Team (Poděkování od design týmu Perlu 6)