Rakudo Perl 6 ^

This is the Perl 6 compiler for Parrot, called "Rakudo Perl 6," or "Rakudo" for short. It's still fairly primitive -- only simple expressions and functions are available, but it's rapidly expanding. See "STATUS" in docs for a list of what has been implemented thus far.

Building and invoking Rakudo ^

To build the compiler, start by building Parrot, then change to the languages/perl6/ subdirectory and type "make". This will create the compiler as a file called "perl6.pbc". The ".pbc" stands for "Parrot bytecode", and represents an executable Parrot module.

To run a Perl 6 program with Rakudo, issue a command like

    $ parrot perl6.pbc hello.pl

If you want to create a binary executable of the compiler that can be invoked as "perl6" from the command line, then try "make perl6". This will create a "perl6" (or "perl6.exe") binary that can be directly used from the command line:

    $ ./perl6 hello.pl

This binary executable feature is still somewhat experimental, and may not work on all platforms. Also, the binary has hardcoded paths to the Parrot build tree (especially the dynamic libraries and modules), so removing the build tree will cause the binary to stop working.

If the Rakudo compiler is invoked without an explicit script to run -- i.e., as "parrot perl6.pbc" or just "perl6" -- it enters a small interactive mode that allows Perl 6 statements to be executed from the command line. Each line entered is treated as a separate compilation unit, however.

Running the test suite ^

Entering "make test" will run the test suite that comes bundled with Rakudo on Parrot. This is a simple suite of tests, designed to make sure that the Rakudo compiler is basically working and that it's capable of running a simple test harness.

Running "make spectest" will import relevant portions of the "official Perl 6 test suite" from the Pugs repository (http://svn.pugscode.org/tests/spec/) and run selected tests from there. At present we do not have any plans to directly store the official test suite as part of the Rakudo/Parrot repository, but will continue to fetch it from the Pugs repository.

Where to get help or answers to questions ^

There are several mailing lists, IRC channels, and wikis available with help for Perl 6 and Rakudo on Parrot. Figuring out the right one to use is often the biggest battle. Here are some rough guidelines:

If you have a question about Perl 6 syntax or the right way to approach a problem using Perl 6, you probably want the perl6-users@perl.org mailing list. This list is primarily for the people who want to use Perl 6 to write programs, as opposed to those who are implementing or developing the Perl 6 language itself.

Questions about the Rakudo compiler for Parrot and the Parrot compiler tools can go to perl6-compiler@perl.org. Discussion about Parrot itself generally takes place on parrot-porters@perl.org.

The Parrot and Rakudo development team tend to hang out on IRC a fair bit, either on irc.perl.org/#parrot or (to a somewhat lesser extent) irc.freenode.net/#perl6.

There are also Perl 6 and Parrot wikis, found at http://www.perlfoundation.org/perl6/index.cgi http://www.perlfoundation.org/parrot/index.cgi

Reporting bugs ^

Bug reports should be sent to rakudobug@perl.org with the moniker [BUG] (including the brackets) at the start of the subject so that it gets appropriately tagged in the RT system (https://rt.perl.org/). Please include or attach any sample source code that exhibits the bug, and if appropriate identify the svn revision number of the code that you're working from. There's no need to cc: the perl6-compiler mailing list, as the RT system will handle this on its own.

Submitting patches ^

If you have a patch that fixes a bug or adds a new feature, please submit it to rakudobug@perl.org with the moniker [PATCH] (including the brackets) at the start of the subject line. We'll generally accept patches in any form if we can get them to work, but unified diff from the svn command is greatly preferred. In general this means you can execute "svn diff >foo.patch" from the languages/perl6/ directory and just attach the foo.patch file.

How the compiler works ^

See docs/compiler_overview.pod.


Patrick Michaud (pmichaud@pobox.com) is the author and maintainer for Rakudo Perl 6 on Parrot.