Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
176 lines (129 sloc) 6.54 KB
=head1 Rakudo Perl 6
This is Rakudo Perl, a Perl 6 compiler for the Parrot virtual machine.
Rakudo Perl is Copyright (C) 2008-2009, The Perl Foundation.
Rakudo Perl is distributed under the terms of the Artistic License 2.0.
For more details, see the full text of the license in the file LICENSE.
=head2 Build requirements
For building Rakudo you need a C compiler, a C<make> utility, a Perl 5
compiler, version 5.8 or newere, the C<icu> library
(L<>) and the C<svn>
command from Subversion.
For example on Debian GNU/Linux you can install those with the command
aptitude install build-essential libicu36-dev subversion
(Perl is installed by default already). To enable parallel testing you
also need the CPAN module L<Test::Harness> in version 3.16 or newer.
=head2 Building and invoking Rakudo
Because Rakudo is under rapid development, we generally recommend
downloading Rakudo directly from github and building from there:
$ git clone git://
If you don't have git installed, you can get a tarball or zip of Rakudo
from github by visiting
and clicking "Download". Then unpack the tarball or zip.
Once you have a copy of Rakudo, build it as follows:
$ cd rakudo
$ perl --gen-parrot
$ make
This will create a "perl6" or "perl6.exe" executable in the
current directory. Rakudo doesn't currently have a "make install"
The "--gen-parrot" option tells to automatically
download (via 'svn') and build the version of Parrot most
appropriate for the copy of Rakudo you currently have. It's
okay to use the --gen-parrot option on later invocations of; the configure system will re-build Parrot only
if a newer version is needed for whatever version of Rakudo
you're working with.
To run a Perl 6 program with Rakudo, issue a command like:
$ ./perl6
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 or moving the build tree will cause the
binary to stop working.
If the Rakudo compiler is invoked without an explicit script to
run, 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 (which means that subroutines
are preserved after they are defined, but variables are not).
=head2 Running the test suite
Entering "make test" will run a small test suite that comes
bundled with Rakudo. 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
L<> and run all of these tests that
are currently known to pass.
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.
You can also use "make" to run an individual test from the command line:
$ make t/spec/S29-str/ucfirst.t
t/spec/S29-str/ucfirst.rakudo ..
ok 1 - simple
ok 2 - empty string
ok 3 - # SKIP unicode
ok 4 - # SKIP unicode
All tests successful.
Files=1, Tests=4, 1 wallclock secs ( 0.02 usr 0.00 sys + 0.57 cusr 0.06 csys = 0.65 CPU)
Result: PASS
If you want to run the tests in parallel, you need to install a
fairly recent version of the Perl 5 module L<Test::Harness> (3.16
works for sure).
=head2 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
If you have a question about Perl 6 syntax or the right way to
approach a problem using Perl 6, you probably want the
C<> mailing list. This list is primarily
for the people who want to I<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 C<>. Discussion
about Parrot itself generally takes place on
The Rakudo and Parrot development teams tend to hang out on IRC a fair
bit, either on C<> or C<>.
Rakudo's official web site is L<>, where you can
find useful information for developers and users alike. There's also
a Parrot blog at L<>, most Perl 6 related news is
assembled at L<>.
=head2 Reporting bugs
Bug reports should be sent to C<> with the moniker
[BUG] (including the brackets) at the start of the subject so that
it gets appropriately tagged in the RT system (
Please include or attach any sample source code that exhibits the
bug, and include either the release name/date or the git commit
identifier. You find that identifier in the first output line of
the C<git log> command.
There's no need to cc: the perl6-compiler
mailing list, as the RT system will handle this on its own.
=head2 Submitting patches
If you have a patch that fixes a bug or adds a new feature, please
submit it to C<> 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 C<git> command is greatly preferred. In
general this means that in the C<languages/rakudo/> directory you make your
changes, and then type
git commit -m 'Your commit message'
git-format-patch HEAD^
This will generate a file called C<001-your-commit-message.patch>, or more of
them if you made multiple commits; please attach these to your email.
(Note to the maintainers: you can apply these patches with the
C<git-am> command; it preserves meta information like author).
Other ways to create and submit patches are discussed here:
=head2 How the compiler works
See F<docs/compiler_overview.pod>.
=head1 AUTHOR
Patrick Michaud C<> is the primary author and
maintainer for Rakudo Perl 6 on Parrot.
## vim: expandtab sw=4 ft=pod tw=70:
Something went wrong with that request. Please try again.