September 2009 Archives

Eric sent this update:

I've written Combust::Spontaneously to make it possible for anyone
(given cpan, git, and svn tools) to get a local apache-less server
running's templating system in under 5 minutes. It is now on
the CPAN.

With that, I've been doing some work on the stylesheet and navigation on
the combust templates from and starting to port some of
my content into it.


More info about this grant:

New Board Member

As part of a renewed effort to expand the membership of the Board we are pleased to announce the addition of Curtis "Ovid" Poe as our newest Director. Ovid is not new to The Perl Foundation, having been involved with the grants committee since 2003, and we are delighted that he is willing to take on this role.

His first task will be to work with Dan Magnuszewski to expand and improve our current PR and Marketing efforts. We wish them every success in this endeavor.

TPF Position Changes

Every year during conference season, we assess positions in TPF that we need to fill and take advantage of in-person meetings at conferences to try to find candidates. Now that we've worked through that cycle, I'm happy to announce some volunteers in new positions.

  • Josh McAdams is moving from PR to Conference Chair and anyone who enjoyed the 2 YAPC::NAs in Chicago knows he's a natural for this position.
  • Long-time Perl community member Casey West has agreed to join as website content manager.
  • Dan Magnuszewski, a newer face in the Perl community but not new to Perl, takes over the PR role. One of the first things we're proposing to do with the PR role is morph it into a committee type configuration like conferences and grants so we can get broader participation. Dan is already working toward this and other initiatives to get more people involved.

TPF thanks Jeremy Fluhmann for his work as Conference Chair, running the YAPC::NA selection process, keeping the web site up-to-date, and committing changes to improve the site.

I'd also like to offer TPF's thanks to Kirsten Jones, who is stepping down from the website content manager position. She did an excellent job of making the main TPF site wiki-driven so everyone could easily make trivial content updates. She also set up Socialtext wikis for internal use and created all sorts of feeds to automate various content functions. Last but not least, she stayed on and helped long after she asked to step down. Once again, many thanks for all of your work.

Please welcome our new TPF members.

Jonathan Worthington writes:


If it weren't for the fact that you said you were going to do it,
I would've doubted it could be done at all in current Parrot.
-- pmichaud

In many senses, this Hague Grant was rather more challenging than my last one. In the course of it, I've been dealing with major changes to some of the things most fundamental to any Perl 6 implementation, including method dispatch, trait application and metaclasses. Happily, I have been able to meet the challenges and complete all of the deliverables laid out in the grant application, and had no shortage of fun in doing so.

Deliverables Status

I proposed six deliverables. Here I will detail what was achieved in each of them.

D1. This deliverable was by far the most challenging of the grant. At the heart of it was completely replacing the existing method dispatcher, which allowed us to implement many features but was never going to be sufficiently performant, mapped onto Parrot's primitives poorly and did not provide a good way to support deferral.

The new dispatcher gave support for deferral from the start. Furthermore, it computes the list of candidates we could defer to lazily, so as to limit the cost to those methods that choose to defer. Since we had never supported the [email protected] syntax, I was able to partly introduce it there, but there was no getting away from eventually needing a large patch that updated all other method calls forms to work with the new dispatcher. I was happy that the landing of this patch caused very little disruption to Rakudo users, despite it marking a very large change to the way something very fundamental to the language worked. As an additional bonus, replacing the dispatcher forced various corner cases to be explored, and shook out a lot of places where we had been cheating.

All of the promised trimmings on the side of the dispatcher replacement were also completed: .WALK, .can, lastcall, the hides trait modifier and the hidden trait. Additionally, dispatches for the form .+, .? and .* that take an indirect method or a list of methods are also now supported. All of these, and deferral, have had their test coverage reviewed and improved.

D2. I refactored .wrap and .unwrap to work in terms of candidate lists. This also fixed some tests that the previous implementation had been failing.

D3. I implemented parallel dispatch and reviewed and extended testing for this feature.

D4. I started off my work on improving Rakudo's introspection capabilities by reviewing, getting input on and then improving the specification itself to be more clear. I then worked on implementing these parts of the specification. Along the way I did a refactor to give Rakudo it's own metaclasses for roles and classes, which means we don't poke so much stuff into P6object in the Parrot namespace. The spectest suite was extremely lacking in test coverage for this area; I wrote over 150 new tests.

D5. I implemented support for defining methods on the metaclass, as specified in S12, and reviewed and enabled the tests for this.

D6. The traits part of the grant was something of an adventure. When I started asking for clarifications on various aspects of it during planning the implementation, it soon became clear that the design team wanted to re-visit some aspects of it. Shortly afterwards, some fairly sizable changes were made. Thus what I have implemented in Rakudo is a greatly updated specification. That needed a little extra refactoring, and some improvements to multiple dispatch along the way.

In implementing traits, I refactored nearly all of the custom trait-application logic out of Rakudo's compiler and into multiple dispatch, as per the specification. In fact, Rakudo uses the very same mechanism that Perl 6 programmers will use to introduce custom traits. (By design, a few traits are still handled directly by the compiler, these now have an improved architecture.) I added some new and passing tests for custom user-defined traits on classes, roles, routines, variable declarations and attribute declarations.


I have attended YAPC::Europe where I gave a talk [pdf] that covered much of my work under this grant. I expect some of it will feature in my forthcoming talks at YAPC::Asia and the Italian Perl Workshop.

I have maintained an active presence on #perl6, and worked to keep everyone aware of what changes were coming. Thanks to the p6eval bot on the channel, people have been able to explore the new features almost as soon as they were committed.

Also, as promised, I have written blog posts (1), (2), (3), (4), about the features implemented in this grant. These have appeared both on the Rakudo homepage and in my journal.


As a result of completing this grant, Rakudo now has some coverage - and in a lot of cases extensive coverage - of every non-conjectural headed section of S12 and S14 applicable to Perl 6.0.0. (In S12, one section is marked not applicable to Perl 6.0.0, and another is marked as conjectural). Of course, there are parts within sections of these
synopses that are yet to be completed, and there will be ongoing work on stability, better handling of edge cases and performance. However, I think the current state is a significant achievement by the Rakudo project, and it's without doubt that this Hague grant and the last one I completed have made a large contribution to that.

Overall, this grant has implemented more of the specification, aided evolution of the specification in some places, and brought areas where Rakudo cheated a bit more in line with the way they are specified. It has provided an implementation of method dispatch that not only implements deferral, but also improves performance in general,
eliminates the huge overhead of multi-method dispatch over only-method dispatch and aids interoperability with other languages on the Parrot platform.

Below is the latest Hague grant request, submitted by Jonathan Worthington. Please feel free to comment below.

Project Title

Rakudo Signature Improvements


This grant aims to increase correctness, completeness, stability and performance of Rakudo's implementation of signatures and signature binding.

Benefits to Perl 6 Development

Rakudo has continued to make impressive progress in recent months, and recently the Rakudo team, of which I am a part, has announced plans for a major, usable release of Rakudo Perl 6 in Q2 2010. As part of this, a review of the Rakudo Roadmap has taken place, with the various items on it being flagged by priority, from "release blocker" down to "nice to have".

This grant, which focuses on the handling of parameter binding and signatures, is specifically aimed at making progress on items in the Rakudo roadmap. This naturally means making Rakudo follow the Perl 6 specification more correctly in places as well as implementing missing features that are specified in the synopses. Indeed, correctness and moving towards greater completeness are the main thrust of the work in this grant. However, the work is also essential to improve both the performance and robustness of Rakudo in some of the areas that it is currently most weak.


D1. Extensive refactoring of signatures internals and parameter binding.

D2. Support for binding named arguments to positional parameters.

D3. Support for nested signatures and unpacking of arguments.

D4. Support for using a capture in a signature to receive all of the arguments.

D5. Support for multiple return values as well as binding return values against a signature.

D6. Working with the design team and other Perl 6 implementation developers to get a specification for signature introspection into the Perl 6 synopses and tweaking Rakudo to conform to it.

2009Q3 Grant Results

Dear all, sorry for the delay. August was a complicated month. It is the Conference month and the Vacation month. But I think it was worth waiting for.

This quarter TPF will fund three grants:

Finally, none of the other proposed grants were rejected. Therefore, they are maintained and will be re-voted in the next round.

Authors (both accepted and not accepted) will receive a note regarding their proposal in the next few days.

About TPF

The Perl Foundation - supporting the Perl community since 2000. Find out more at

About this Archive

This page is an archive of entries from September 2009 listed from newest to oldest.

August 2009 is the previous archive.

October 2009 is the next archive.

Find recent content on the main index or look in the archives to find all content.


OpenID accepted here Learn more about OpenID
Powered by Movable Type 6.2.2