<?xml version="1.0" encoding="windows-1252"?>
<node id="771635" title="Getting Involved with Perl 6 - 2009" created="2009-06-15 08:33:55" updated="2009-06-15 08:33:55">
<type id="120">
perlmeditation</type>
<author id="616540">
moritz</author>
<data>
<field name="doctext">
&lt;p&gt;It's been about a year since I wrote [id://690945], and 
again there are many news that change how &lt;i&gt;you&lt;/i&gt; can contribute to
Perl 6 development.&lt;/p&gt;

&lt;h2&gt;Compilers&lt;/h2&gt;

&lt;h3&gt;Parrot and Rakudo&lt;/h3&gt;

&lt;p&gt;[http://www.parrot.org/|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.&lt;/p&gt;

&lt;p&gt;[http://rakudo.org/|Rakudo] has left parrot's repository and now
lives on [http://github.com/rakudo/rakudo/|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
[id://690945|my previous "getting involved" post], it was 700 back then).&lt;/p&gt;

&lt;p&gt;But most exiting of all you can write built-in methods and
functions in Perl 6 now. In the &lt;i&gt;setting&lt;/i&gt; library (in
[http://github.com/rakudo/rakudo/tree/master/src/setting/|src/setting/]
there are already some methods written that way. For primitive
operations inline PIR (parrot's assembly language) is used.&lt;/p&gt;

&lt;p&gt;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 &lt;c&gt;rakudobug@perl.org&lt;/c&gt; or contact the
people in #perl6 on irc.freennode.net or at
&lt;c&gt;perl6-compiler@perl.org&lt;/c&gt;.&lt;/p&gt;

&lt;h3&gt;Mildew&lt;/h3&gt;

&lt;p&gt;&lt;i&gt;Mildew&lt;/i&gt; is a new Perl 6 compiler that uses STD.pm
([TimToady]'s Perl 6 parser written in Perl 6) as a frontend and
[http://www.perlfoundation.org/perl6/index.cgi?smop|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.&lt;/p&gt;

&lt;p&gt;Mildew is developed in a mixture of Perl 5, Perl 6 and C, and Pawe&amp;#322;
Murias, the main developer, is glad to answer any questions on
#perl6.&lt;/p&gt;

&lt;h3&gt;Elf&lt;/h3&gt;

&lt;p&gt;[http://perl.net.au/wiki/Elf|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.&lt;/p&gt;

&lt;p&gt;If you are interested in writing a Perl 6 compiler in Perl 6, write
a mail to &lt;c&gt;perl6-compiler@perl.org&lt;/c&gt; and ask for details.&lt;/p&gt;

&lt;h2&gt;Test suite&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;There's a TODO list in
[http://svn.pugscode.org/pugs/t/TASKS|t/TASKS] that can help you to
get started. Just join &lt;c&gt;#perl6&lt;/c&gt; and ask for a commit bit.&lt;/p&gt;

&lt;h2&gt;Write Perl 6 modules&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;For example there's a [http://github.com/masak/proto|basic
installer for Perl 6 modules], a [http://github.com/masak/web/|web
framework] (development supported by TPF grant),
a [http://github.com/viklund/november/|wiki engine],
[http://github.com/masak/druid|board game],
[http://github.com/ihrd/uri/|URI parser], a
[http://github.com/ihrd/maya/|blog engine], a
[http://gitorious.org/projects/http-daemon|HTTP server],
[http://github.com/krunen/xml|xml] and
[http://github.com/moritz/json/json|json] parsers and a 
[http://github.com/perl6/perl6-examples/|general repository with Perl 6
example code].&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;Websites&lt;/h2&gt;

&lt;p&gt;You can also contribute to the Perl 6 development by improving the
various websites. For example &lt;strike&gt;
[http://perl6-projects.org/|perl6-projects.org]&lt;/strike&gt; [http://perl6.org/|perl6.org] tries to keep an
up-to-date overview of the current Perl 6 projects, the source can be
found in the pugs repository in
[http://svn.pugscode.org/pugs/docs/feather/perl6.org/|docs/feather/perl6.org/].&lt;/p&gt;

&lt;p&gt;The Rakudo developers also welcome improvements to their
[http://rakudo.org/|website], ask alester or [pmichaud] on
&lt;c&gt;#perl6&lt;/c&gt; for authoring privileges.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Update&lt;/b&gt;: perl6-projects.org is now perl6.org, udpated links accordingly.

&lt;!--
  vim: ft=html tw=70 spell
  --&gt;
</field>
</data>
</node>
