Recently in Grants Category

The Grants Committee has received one grant proposal for the January/February round. Before the Committee members vote, we would like to solicit feedback from the Perl community on the proposal.

Review the proposal below and please comment here by February 17th, 2016. The Committee members will start the voting process following that and the conclusion will be announced by February 27th.

RPerl User Documentation, Part 2

  • Name:

    Will Braswell

  • Amount Requested:

    USD 1,600


RPerl v1.5 has been released with numerous new features, as promised. The RPerl User Docs grant work has been completed, but much documentation remains to be written immediately. This grant proposal is to continue work on the Learning RPerl user tutorial.

Benefits to the Perl Community

The number one request and obvious need at this time is still quality RPerl user documentation, to help new RPerl users learn how to write fast software. Learning RPerl is the canonical guide to RPerl and must be completed to enjoy the maximum benefit to the Perl programming community.


Deliverables for this grant proposal are:

1. Complete Learning RPerl Chapter 2

2. Write Learning RPerl Chapter 3

3. Write Learning RPerl Chapter 4

Jonathan Worthington writes:

I applied for a third and final extension of my Perl 6 Release Goals grant, which was published for comments in December and subsequently approved. The final extension granted a further 110 hours of work, which I completed prior to the Christmas release of Perl 6. This report covers the work that was done under this extension, and concludes with some final comments on the grant as a whole.

I'd like to start with a small note on timing. In November, I worked almost exclusively on Perl 6. Around the middle of the month, I had exhausted all of the hours that had been assigned in the previous grant extension. The general understanding on Perl 6 Core Development Fund grants is that I may - at my own risk - go ahead and continue with work that needs doing, in hope that a grant extension application will be approved. I did this, concurrent with writing up a report on what was achieved and requesting the extension. Thus, I didn't actually endure a sleepless week or two in December completing the hours in the final grant extension - as was speculated in one comment! Rather, the extension covered all of my December work, as well work in the later parts of November.

Numerous issues were resolved during the hours provided by this final grant extension:

  • Supplies, the Perl 6 API for asynchronous streams of data, got a design cleanup. The API was good overall, but several corners of it were suboptimal both from a language design and safety point of view, as well as from an optimizability perspective.
  • Some API design issues around async sockets and processes, as well as with Promise combinators, were resolved. The CLOSE phaser was added to supply blocks to facilitate resource management, and the whenever syntax came to support channels as well as promises and supplies. This meant that the earliest block syntax, which I've never been entirely happy with, could go away. Finally, a couple of other concurrency bugs were resolved.
  • A number of important I/O issues were dealt with, the most notable of which involved dealing with various complaints about Windows newline handling. The native file descriptor behind a handle was also exposed, for use in conjunction with native calling, and UDP support was added to IO::Socket::Async.
  • The semantics of multi methods stubbed in roles, as well as composition of multi methods in roles, were reviewed and modified to be more useful.
  • Sized native lexical variables got a good looking over, as well as unsigned native integers. Numerous issues around them were addressed.
  • A few control flow related semantic issues were ironed out, generally involving the interaction of phasers and control flow operations (such as next and last).
  • Nearly 20 other smaller semantic bugs were resolved in a range of areas: list flattening edge cases, role punning, .?/.+/.* behavior with multis, multi-dispatch with optional parameters, shadowing of built-in types, return constraints on blocks, and sigilless variables in list assignments.
  • A couple of nasty bugs were fixed (a GC hang, a pre-compilation bug, and a meta-object mixins problem).

I also contributed in various ways to preparing for the release itself. Of note, I added the experimental pragma and moved a number of things we were not happy with including in Perl 6 Christmas behind it. I also clarified version reporting to reflect the language/compiler version distinction more cleanly. Finally, I was there on Christmas day itself to lend a hand with the release.

With the Perl 6 Christmas release now made, this Perl 6 Release Goals grant has reached its natural conclusion. I would like to thank all those who have contributed funds to make the initial grant and its two extensions possible. For me, 2015 was a year with various happy distractions, but also in the latter parts of the year suboptimal health. Together, these notably reduced my usual levels of "free time" for participating in Perl 6. So, rather than simply enabling me to do a bit more, this grant was critical to my continued substantial involvement in the Perl 6 project during this important year. I would also like to thank TPF for administering this grant, my grant manager, and last - but certainly not least - the Perl 6 community, who I count among the best folks I've worked with on anything, ever.

We have received the following grant application from Ricardo Signes. Before we vote on this proposal we would like to have a period of community consultation that will last seven days. Please leave feedback in the comments or if you prefer send email with your comments to karen at

Name: Ricardo Signes

Project Title: Perl QA Hackathon 2016

Amount Requested: $1200


This grant will be used to pay for travel for Ricardo Signes to and from the Perl QA Hackathon held in Rugby, UK in Q1 2016.

Benefits to Perl 5:

I have attended six of the seven Perl QA Hackathons (Oslo, Birmingham, Amsterdam, Paris, Lancaster, and Lyon) and have, at each of them, been able to contribute several solid work days of very productive work to the infrastructure behind the CPAN and related tools. Specifically, I was one of the chief implementors of the new CPAN Testers platform (Metabase) and built the Fake CPAN system for testing CPAN tools, and several reusable software libraries that are used to power both Metabase and Fake CPAN. In 2012, I worked on refactoring PAUSE, adding tests and improving maintainability. PAUSE, the system which processes contributor uploads to the CPAN, manages CPAN contributor identity, and builds the CPAN indexes used by CPAN clients to locate libraries for installation.

In previous years, I also spent a significant amount of time working with other attendees on their contributions, and plan to do the same this year. This is one of the several reasons that attendance in person is incomparably superior to "virtual attendance."

Deliverable Elements:

The QA Hackathon does not have a set agenda, so promising specific work product from it up front seems unwise. I have detailed, above, the sort of work that I am almost certain to do, however. Further, I will provide a public, written report of my activities at the Hackathon.

I hope, in particular, to work on the web code of PAUSE and to discuss mechanisms for improving collaborative code review within the community of toolchain maintainers.

The hackathon takes place over the course of four days, with eight to ten hour workdays. I'll probably also be working on the travel and in the evenings.

Any software that I produce will be released under the Perl 5 standard license terms, or possibly even less restrictive terms.

Applicant Biography:

I have been building software in Perl professionally for about fifteen years. I am a frequent contributor of original software to the CPAN and a frequent contributor to, or maintainer of, other popular CPAN libraries. I am also a contributor to the core Perl 5 project, and its current project lead.

I have been the recipient of TPF grants five times before, all of which were successful.

We have received the following Perl 6 Ian Hague Grant Application. Before we vote on this proposal we would like to have a period of community consultation for 10 days. Please leave feedback in the comments or if you prefer send email with your comments to karen at

Name: Paweł Murias

Project Title: JavaScript backend for Rakudo


Improve the JavaScript backend from handling NQP (Not Quite Perl) to full Perl 6.

Benefits to to Perl 6 Development:

A JavaScript backend for Rakudo will allow the use of Perl 6 in many new niches. The main focus of the grant is to allow Perl 6 to be used for writing the frontend part of single page applications (for the backend part we can use MoarVM).

A side benefit of the grant is that I intend to create a web-based REPL that should allow users to play around with Perl 6 without installing it. The goal of the grant is provide a JavaScript backend with enough features that the community can start experimenting with what running inside the browser will allow us to accomplish.

While working on the JavaScript backend I write test for the things I'm implementing. Expanding the test suite will directly help future backend authors. It also helps anyone doing non trivial changes to the existing backends. I have found MoarVM and JVM bugs in the past doing that.


  • Upload rakudo-js to npm and CPAN.
  • Have this rakudo-js be able compile our chosen subset of the 6.c roast (official Perl 6 test suit) to JavaScript and pass them in a modern browser.
  • Write a simple REPL in Perl 6 that will run in a modern browser.
  • Write a tutorial showing how to use the JavaScript backend.

Project Details:

Rakudo compiles Perl 6 and NQP (a subset of Perl 6 that Rakudo itself is written in) to an abstract syntax tree form called QAST. QAST is then passed to either the MoarVM, JVM or JavaScript backends. Currently the JavaScript backend can only handle AST that is produced from NQP. The goal of this project is to improve the JavaScript backend to handle the QAST produced from full Perl 6.

I started the original work on the JavaScript backend while Rakudo was transitioning from being a Parrot targeting compiler to a multi-platform one. Parts of the work on the backend was done as parts of a GSoC project. After the GSoC projects I undertook a rewrite of the backend. The rewrite allowed me to add source maps support and use more type information to generate better code. The JavaScript backend is now merged in the the master branch of the NQP repo.

After reviewing the initial draft of this grant proposal Jonathan Worthington pointed out that implementing gather/take proved to be tricky on other backends. To reduce this risk I added basic continuations support to the backend. This was enough to run a basic form of gather/take: . I implemented this using a CPS transform with a trampoline (to work around the lack of tail call optimization).

Most of Perl 6 is built from smaller building blocks. This will mean that a large part of the effort will be needed before I get to the point where the test module compiles and the first test passes. On the other hand when the needed building blocks are implemented correctly I will be able to reuse the quality work that went into Rakudo and the setting.

In the last month, Chad has been working with Ricardo Signes (rjbs) doing final tweaking of Test2. For that, some new versions of Test2 and related modules have been published for testing and review purposes.

For those who are lazy, some pointers here for Test2, Test2::Suite, Test2::Workflow and dev release of Test::Builder.

Evozon have been busy working on their grant to improve

Since our first progress report they have worked hard analysing the project's requirements and implementing them in Jeff's public GitHub repository.

The project runs PearlBee using Docker and Carton.

So far, the new system supports the following:

  • RSS export
  • Markdown editing
  • Data migration from the old site
  • ElasticSearch
  • An inproved user interface
  • Home page posts
  • Per-user posts
  • User profile page
  • Permissions
  • Associating assets with blog posts
  • Comments

The project has a private staging server to demonstrate the new system: soon we will open it up to the wider community for testing.

Will Braswell has completed his RPerl Docs grant, submitting the following report:

"I have released RPerl v1.51 with all grant work items now completed!

1a. Describe Eyapp EBNF grammar format and Grammar.eyp file sections

1b. Describe lexical token types

1c. Describe operator precedence and associativity

1d. Describe all grammar rules and productions 1e. Provide examples of valid code

2a. Complete source code of solutions to chapters 1 - 6 2b. Describe how to arrive at each solution

3a. Create POD versions of deliverables 1 and 2

3b. Use POD::Tree::HTML or similar to generate HTML

3c. Integrate HTML into web framework "

Owing to issues with TPF blog, this report could not be published in a timely fashion. The Grants Committee elected to vote on completion without public comments. The committee accepted the work as successfully completed.


About TPF

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

About this Archive

This page is an archive of recent entries in the Grants category.

Conferences is the previous category.

GSoC is the next category.

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