|Perl: the Markov chain saw|
Getting Involved with Perl 6 - 2009by moritz (Cardinal)
|on Jun 15, 2009 at 12:33 UTC||Need Help??|
It's been about a year since I wrote Getting Involved with Perl 6 - an Update, and again there are many news that change how you can contribute to Perl 6 development.
Parrot and Rakudo
Parrot has had its release of version 1.0 (and other subsequent releases, for that matter). That doesn't mean that Parrot is finished; software is never finished, and lot of works still needs to be done. But the developers now provide a relatively stable API for language developers, and the progress of Rakudo shows that many cool features can already be implemented on top of it.
Rakudo has left parrot's repository and now lives on github, has implemented many cool features (basic support for custom operators, sockets, big parts of the object system, multi dispatch, grammars) and now passes more than 10,000 tests from the official test suite (compare with my previous "getting involved" post, it was 700 back then).
But most exiting of all you can write built-in methods and functions in Perl 6 now. In the setting library (in src/setting/ there are already some methods written that way. For primitive operations inline PIR (parrot's assembly language) is used.
If you want to get involved with Rakudo, the easiest way is to either write new built-ins in Perl 6, or port existing ones from PIR to Perl 6. Send a patch to email@example.com or contact the people in #perl6 on irc.freennode.net or at firstname.lastname@example.org.
Mildew is a new Perl 6 compiler that uses STD.pm (TimToady's Perl 6 parser written in Perl 6) as a frontend and smop (a runtime library for the Perl 6 object system) as a backend. It has some nice features already (like control exceptions, modules, basic integration with Perl 5) but is not very accessible for real-world programming.
Mildew is developed in a mixture of Perl 5, Perl 6 and C, and Paweł Murias, the main developer, is glad to answer any questions on #perl6.
Elf is intended as a service for people who want to develop a Perl 6 compiler in Perl 6. Its parser is also based on STD.pm, and it is bootstrapped. Elf can emit Perl 5 and Common Lisp code.
If you are interested in writing a Perl 6 compiler in Perl 6, write a mail to email@example.com and ask for details.
The test suite still lives in Pugs' svn repository, and always needs love and new tests. Writing tests is a good way to get involved with Perl 6, all you need to do is to read up some Perl 6 feature and exercise it.
There's a TODO list in t/TASKS that can help you to get started. Just join #perl6 and ask for a commit bit.
Write Perl 6 modules
A lot of Perl 6 modules have been written in the last few month; Rakudo's support for classes, modules and exporting/importing subroutines has made it easy and fun.
For example there's a basic installer for Perl 6 modules, a web framework (development supported by TPF grant), a wiki engine, board game, URI parser, a blog engine, a HTTP server, xml and json parsers and a general repository with Perl 6 example code.
Writing Perl 6 modules is fun, and helps the community in several ways. It tests the compiler (usually in different ways than the test suite), it allows others to re-use your code (thus solving the problem of not having many libraries) and it encourages others to think about more involved package distribution systems.
If you think that some widely used Perl 5 modules have flaws in their interfaces or design, now is your chance to recreate them in Perl 6. The earlier a Perl 6 version exists, the likelier it is to be adopted as the standard way of solving some problem.
You can also contribute to the Perl 6 development by improving the
various websites. For example
Update: perl6-projects.org is now perl6.org, udpated links accordingly.