Below is the latest Hague grant request, submitted by Jonathan Worthington. Please feel free to comment below.
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.
D1 involves a complete re-design and re-implementation of signatures and signature binding. What we have now is not sufficiently performant for a usable release and does not provide a good way to implement many missing features. This is because we piggy-back on Parrot's parameter binding and then patch things up where those semantics are not quite right - a good plan for getting us to something that basically worked, but one that we've pushed as far as we should. In D2 through D4, I will build on the D1 deliverable to add features from S06 that Rakudo is currently missing. D2 alone should win us hundreds of extra spectest passes.
D5 involves building support for multiple return values. This is essential for the Q2 release and a fairly major missing feature in Rakudo today.
D6 is aimed at trying to formalize something that is possible today in Rakudo, but has not been too carefully thought out yet
All in all, this work will address some of the blockers for for the Q2 release in the roadmap and also help deal with a performance bottleneck, thus aiding progress on a fifth blocker. It also provides support for a couple of other "nice to have" features.
In late August and early September, I expect to start re-designing Rakudo's signature handling (D1). I will also consider the needs of D5 in the design work that I do at this stage. It's quite likely that some initial prototyping will take place at this stage.
I will spend the majority of September wandering around Japan and South Korea, attending YAPC::Asia along the way. I expect this to be more vacation than hacking time, so any progress during this time will be a bonus. On the other hand, it will give me lots time to think through any issues in my designs. :-)
The main work on the grant will be done during October and November. By late October, I expect Rakudo will have switched to using the refactored signatures. D2 should also be implemented at this point. By mid-November, D3 and D4 should also be completed. If it has not already happened, at this point I should also make a push on D6. The rest of my time on the grant in November should focus on D5 and wrapping up any other loose ends. Thus I aim to file a final report on completion of this work in early December.
Blog posts will be made throughout the duration of the work on rakudo.org blog as well as my journal on use.perl.org.
All code, documentation and other relevant files that relate to Rakudo will be checked into the Rakudo repository. All code, documentation and other relevant files that relate to any Parrot fixes/additions arising as a result of this grant will be checked into the Parrot repository. All contributions to the specification and specification tests will be checked into the Pugs repository.
Grant Deliverables ownership/copyright and License Information
All work on produced as a result of this grant will be licensed under the Artistic License Version 2.0. I already have signed the relevant CLAs for both The Perl Foundation and The Parrot Foundation regarding ownership.
I first started contributing to Parrot in 2003, and since then have contributed to both the design and implementation of Parrot. I have been involved in Rakudo development since December 2007, and have implemented a wide range of features, with a focus on the object model and the type system. In addition to writing code, I am also a frequent speaker on Perl 6 and Parrot at European Perl conferences and workshops.
As well as my extensive Rakudo development experience, I also have strong academic underpinnings, holding a first class Computer Science degree with honours from the University of Cambridge.
I believe that my unique combination of Parrot internals knowledge and in-depth knowledge of Rakudo Perl 6, as well as my academic background and existing contributions to Parrot and Rakudo so far, put me in a very strong position to successfully deliver an implementation of the features described in this proposal.
Country of Residence
Suggestions for Grant Manager
Patrick Michaud has indicated that he is willing to act as grant manager for this grant.