History: Raku Compilers

Raku compilers, both current and historical

Raku is a language specification and, just like C or C++, it encourages multiple compilers for the language.

Current Compilers§

Rakudo™ and NQP§

Rakudo runs on MoarVM and the Java Virtual Machine (JVM). It's developed on GitHub.

NQP is not a Raku compiler. NQP is a small subset of Raku used as a foundational tool to help write compilers (including Rakudo) and libraries. Development happens on GitHub.

Historical Compilers§

Niecza§

Niecza is a compiler targeting the Common Language Runtime (.NET and Mono). Its goal is to explore the static aspects of Raku and the possibilities for compile-time optimization.

STD and viv§

STD§

STD is Larry Wall's reference implementation of the Raku grammar, parser generator, and some of the semantic verifier. STD is an abbreviation of "Standard". It is written in Raku, transliterated into Perl 5 by viv. It is also used by various phases of several other compilers (mildew, perlito, elf).

The Raku standard grammar is written in Raku, and specifies how a Raku program is parsed.

The source code can be found on github in the perl6/std project in the file STD.pm6.

Both STD.pm and viv are included in the STD package on CPAN.

viv§

viv ("vi" to "v", 6 to 5) is a compiler that uses STD as its front-end. STD itself uses viv to build. It is developed along with STD.

viv should be read as VI ➔ V, where V and I are Roman numerals. So it's a translator from Perl 6 to Perl 5, expressly designed to run STD.pm6 - it compiles to Perl 5 code only features that are needed to run STD.pm6. However it can be used by other compilers as a base to produce code for other backends.

Perlito§

Perlito, also known as MiniPerl6, is a subset of Raku, designed as a light bootstrapping language. You can try it online. It is developed here.

Pugs§

Pugs is written in Haskell. Maintenance releases for successive versions of ghc are published to Hackage.