Posts in this category

Fri, 06 Aug 2010

Notes from the YAPC::EU 2010 Rakudo hackathon

Permanent link

At YAPC::EU 2010 we had a long discussion about Perl 6, Rakudo and related matters. Here are some (very incomplete) notes of the ongoing discussions and results.


Patrick Michaud, Jonathan Worthington, Carl Mäsak, Moritz Lenz, Gabor Szabo, and a fluctuation of other Perl 6 hackers.


What can we do to improve Rakudo's performance?

jnthn's grant proposal for a low-level meta object protocol

See Will probably bring the biggest speed improvement of all options we have under our control

Rakudo built-in optimizations

Most Rakudo built-ins are written for correctness first, and without a good feeling for what constructs are fast and what aren't. A thorough review (and preferably profiling) could bring decent speed improvements, as the case of int ranges showed.

Garbage collector

Parrot's GC is... suboptimal. To be gentle.

Optimization framework

We will try to convince people that Tyler Curtis' optimization framework for PAST and POST should be shipped with parrot (probably compile PIRs in ext/, just like NQP-rx does it now). Using that, we can do constant folding

Moving stuff to compile time

Number parsing needs to be moved to compile time.

What do we need to keep hacking?

Brought up by Gabor


We do much volunteer work, but when we get funding, we can devote more time to hacking


We'd like to get together a few times (2? 3? 4?) a year, in real life.

Funding and organization would be very welcome

Short-time funding

It would be nice to have a way to have funding available much more quickly than through the usual grant process, which tends to be longish.

Rakudo Star feedback

Good: It worked. It did what we wanted it to.


  • It lacked a module installer (It shipped proto, but didn't install it).

  • Compilation takes too much memory. pmichaud will try a hack to split the setting, which would solve that problem.

  • There was some discussion about the roles + outer scopes bugs, which was way over my head. It seems to be related to the fact that parrot has two outer chains for nested blocks: one at compile time, one at runtime. Since role methods are flattened into classes, there compile time outer block is actually different than where it runs, and that screws up ... forget it, somebody else must describe it.

  • Lack of modules - doesn't seem to be a big problem

  • Lack of features: not a big problem.

    Biggest complaints: missing perl6doc. Missing non-blocking IO, binary file support.

  • Prefix paths with spaces are not supported :(

    jnthn: "I actually tried to write a C program that binary patches the perl6 executable to allow spaces in path names. It almost worked."

  • We will try to advocate compilation to PBC, not PIR - once that's supported.


Proto needs to be end-of-life'd.

It confuses people that there are two different project lists, and the lists diverge.

We would like to decentralize the module list somehow. Still open how.

People don't release Perl 6 modules, because there's no need so far, and it's tedious to add the version name in each .pm/.pm6 file. We might need to come up with a clever idea for that.

Backend diversity

Additionally to the parrot backend, we want to run Perl 6 code on other virtual machines.

jnthn will work on a .NET/CLR port. He wants to prototype the new low-level class composition code in .NET anyway, which will provide the basic foundations for running NQP.

pmichaud wants to explore javascript on V8 as a possible backend. "I managed PIR, I'll certainly manage javascript" :-)

  • Huge time sink, but still worth doing it

  • Apache runtime library might be worth looking into

  • risks: stalled refactors are dangerous (see: PHP 6, cardinal (the ruby-on-parrot compiler))

    We want to avoid fragmentation into many subprojects

  • We want to increase the number of possible contributors to rakudo by enabling non-parrot people to contribute.

  • Code for different backends will be maintained as directories in Rakudo and NQP, not as branches.

  • pir:: things will be hidden behind an nqp:: abstraction layer

Attracting contributors

Moritz wants to continue with the "weekly" challenges, but runs out of ideas. Add ideas to

We will try to apply patches faster, thus encouraging people who already did the first step.


  • in p5 pod for now, so that people can contribute easily

  • masak and szabgab expressed interest in working on pod6 tools

[/perl-6] Permanent link