Perl 6

This is the rather outdated list of implementations of Perl 6 as of 2011

Please find more up-to-date information on http://perl6.org/compilers/

Original List with updated notices

There is no official or reference Perl 6 implementation, as exists with Perl 5. Instead, there is a language specification that began with Apocalypses and evolved through Exegeses and Synopses. Recently, the test suite is what actually defines the language properly. The Synopses and test suite continuously evolve together. Even though only one compiler is currently actively being developed, Larry Wall has clarified that anything that passes the test suite is Perl 6. With the feedback gained from the implementations, the Synopses and the test suite that forms the language specification are evolving. This page is about the various partial implementations that exist, which can parse and execute Perl 6. Virtual machines and runloops are excluded because they do not deal with Perl 6 source code.

  • Rakudo is currently the only actively developed implementation. It is feature-rich and runs rather well. It used to run on Parrot, a virtual machine for many dynamic languages. Nowadays, it runs on MoarVM and the JVM (Java Virtual Machine). A branch to port it to run on JavaScript compilers like v8 is also in development.
  • Niecza used to be the fastest implementation by far. The development was lead by Stefan O'Rear. It is now very far from feature-parity with Rakudo, though.
  • Pugs was the leading implementation from 2005 until about 2007. It runs on GHC Haskell and helped to develop the test suite.
  • viv is a derivation of STD.pm for testing and bootstrapping purposes. A utility called "gimme5" creates viv by translating STD.pm into Perl 5. This is possible because Larry very carefully wrote STD.pm in a translatable subset of Perl 6.
  • Mildew is a Perl 5 based compiler that embeds viv, and can emit code for several runtime engines, including JavaScript and SMOP.
  • Sprixel started out with viv as the source code parser and Google's V8 JavaScript engine as a runtime interpreter.
  • Elf is a compiler written in Perl 6 with Perl 5 and Lisp backends.
  • vill connects STD.pm to the LLVM (Low Level Virtual Machine) compiler tools.
  • Perlito, formerly known as MP6 (mini Perl 6), is a Perl 6 subset build by Flavio Glock for bootstrap purposes.
  • v6 is a Perl 6 compiler for Perl 5.

Historical Implementations are definitely closed projects.


Upload Files

Click "Browse" to find the file you want to upload. When you click "Upload file" your file will be uploaded and added to the list of attachments for this page.

Maximum file size: 50MB

File Name Author Date Uploaded Size

Save Page As

Enter a meaningful and distinctive title for your page.

Page Title:

Tip: You'll be able to find this page later by using the title you choose.

Page Already Exists

There is already a page named XXX. Would you like to:

Save with a different name:

Save the page with the name "XXX"

Append your text to the bottom of the existing page named: "XXX"

Upload Files

Click "Browse" to find the file you want to upload. When you click "Add file" this file will be added to the list of attachments for this page, and uploaded when you save the page.

Add Tags

Enter a tag and click "Add tag". The tag will be saved when you save the page.