Perl 6 - Implementations

Implementations

As of 2009, multiple Perl 6 implementations are under development, but none of them are considered "complete". As noted in the history section, the language design itself is still subject to change. No implementation will be designated as the official Perl 6 implementation; rather, "Perl 6 is anything that passes the official test suite."

Rakudo Perl is a Perl 6 implementation targeting the Parrot virtual machine. Parrot is a virtual machine designed for dynamic programming languages, primarily for Perl 6. It provides several powerful compiler tools, many of which take inspiration from Perl 6. In particular, the Parser Grammar Engine, or PGE, provides an implementation of Perl 6 grammars. As well, the language used for building compilers is itself Not Quite Perl 6, or NQP. The Rakudo implementation of Perl 6 on Parrot takes advantage of PGE and NQP. Some portions of Rakudo are written in Perl 6 itself, though this is not a self-hosting implementation, nor are there concrete plans at this point to make Rakudo a bootstrapping compiler.

Pugs is an implementation of Perl 6 written in Haskell. Pugs can execute Perl 6 code directly, and has also compiled Perl 6 to JavaScript, Perl 5 and Parrot bytecode. Pugs used to be the most advanced implementation of Perl 6, but since mid 2007 it is mostly dormant (with updates made only to track the current version of GHC).

v6.pm is a pure Perl 5 implementation of Perl 6, making liberal use of existing CPAN modules, such as Moose and Pugs::Compiler::Rule. It aims to make the existing perl runtime a first-class virtual machine for both Perl 5 and Perl 6.

In 2007, v6-MiniPerl6 ("mp6") and its reimplementation, v6-KindaPerl6 ("kp6") were written as a means to bootstrap the Perl-6.0.0 STD, using Perl 5. The STD is a full grammar for Perl 6, and is written in Perl 6. In theory, anything capable of parsing the STD and generating executable code is a suitable bootstrapping system for Perl 6. kp6 is currently compiled by mp6 and can work with multiple backends. mp6 and kp6 are not full Perl 6 implementations, and are designed only to implement the minimum featureset required to bootstrap a full Perl 6 compiler.

Sprixel is being written as a means to bootstrap the Perl-6.0.0 STD on the CLR, using another new intermediary language/environment named Perlesque, which intends to implement closely the strongly typed subset of Perl 6. Its source code repository is located on Google Code as CSMeta. CSMeta/Perlesque/Sprixel evolved from the JSMeta/Sprixel project in JavaScript, located on Google Code and in the pugscode repository.

Yapsi is a Perl 6 compiler and runtime written in Perl 6 itself. As a result, it requires an existing Perl 6 interpreter, such as one of the Rakudo Star releases, in order to run.

Read more about this topic:  Perl 6