Dave Rolsky is our next nominee to join the Perl Foundation board. Dave is well known in the Perl community, for his extensive contributions to CPAN and for his frequent conference talks and classes. If you'd like to know a little more, he conveniently posts his resume on-line on his website.

Below is some additional information on how Dave feels he can contribute to the board:

  • Why do you want to become a member of the TPF Board?

I have a lot of nonprofit experience and I think I can help with TPF's mission because of that. I was a co-founder and board member of a local animal advocacy group for about 19 years, and during that time I helped with fundraising, event organization, administration, and pretty much everything else.

  • What existing TPF initiative(s) are most important to you and why?

For me, the most important programs are conferences and Perl 5 core maintenance fund programs. Conferences are vital for having any sort of Perl community. The maint fund is crucial in order to make sure that the Perl 5 core continues to advance. It's a tough code base to work on, so we need to support the people who can do that work.

  • What goals would you like to see TPF pursue in the future?

I wonder if there's room for additional fundraising. There are many more companies using Perl than are represented among the existing sponsors. That said, this sort of fundraising can be quite challenging and time consuming.

I'm also interested in the potential for other sorts of Perl promotion and outreach programs. For example, maybe some sort of targeted grants aimed at producing high quality videos, etc.

Following our recently established process, this post will allow for constrictive public input on Dave's nomination for two weeks, after which the board will vote.

The Grants Committee has received the following grant proposal for the Sep/Oct 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 October 17th, 2018. The Committee members will start the voting process following that.

MoarVM JIT Compiler Expression Backend Maturation


Bart Wiegmans

Amount Requested:

USD 7,000.

As a somewhat delayed follow-up, TPF once again had a booth this year at OSCON, back in Portland, Oregon, this year. Josh McAdams was once again our organizer and staffed the booth for the event.

O'Reilly provided The Perl Foundation with an excellent space in their Expo Hall. Situated conveniently near the lunch service, snacks, and an amazing swing, the booth received a constant stream of visitors. The visitors ranged from developers with years of experience developing Perl to those who were just discovering what Perl was. Our friends Wendy and Liz graciously provided round tuits, stickers, and other promotional material for the event. The "Introducing Perl6" books where a hit and were gone on the first day! If you didn't get one, there is an electronic version that you can access in the Perl 6 marketing website.


The space was a great place for Perl developers to meet up and connect with their peers in person, as well as, a good place for The Perl Foundation to introduce Perl to newcomers. We have a great time at the event and loved advocating for Perl.

Grant Proposal: Future::AsyncAwait


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

Update: You have until October 17th! Review the proposal below and please comment here by October 10th, 2018. The Committee members will start the voting process following that.


  • Name:

    Paul Evans

  • Amount Requested:

    GBP 4,800 (GBP 200/day for 24 days)

    At time of writing, equivalent to USD 6,256 or EUR 5,388.

Grant Proposals Sep/Oct 2018

Apologies for delays this month from the original schedule.

The Grants Committee has received the following grant proposal for the Sep/Oct round.

Before the Committee members vote on the proposals, we would like to solicit feedback from the Perl community.

Review the proposals at their individual links and please comment there by October 10th, 2018. The Committee members will start the voting process following that and the conclusion will be announced shortly after.


I missed a submission, which I've now corrected. The MoarVM proposal is now available for review; Community review open another week so we can get feedback there as well.

My grant work in August focused on improving the performance of a number of very commonly used constructs in Perl 6 programs, of note array and hash access, box/unbox operations (which take place inside many of the builtins), and various common operations on Int (the default integer type in Perl 6, which is arbitrary precision). My work also uncovered a problem that could be best addressed with a small language design tweak, and I wrote up a proposal on that (which has since gained broad acceptable, and will be implemented for Perl 6.d).

I also made various improvements to the optimization infrastructure. Most notably, I made it possible to track what is known about the value coming into a guard vs. its state after the guard (guards are the things that ensure a speculative optimization still applies, and deoptimize if not). This most usefully allows for elimination of guards (for example, when program anlaysis - perhaps after inlining - proves a property that was guarded, then we can remove the guard). However, this change also means we properly deal with facts before/after the guard point; earlier we'd not tracked this precisely in a few cases and so had to forego optimization opportunities. Now we can take them.

I also improved GC behavior a bit, making values assigned into long-lived aggregates get promoted sooner and making the optimizer thread join in with GC in a more timely manner.

Finally, there was a range of other smaller optimizations, as well as a good amount of bug hunting/fixing.

1:12    Decrease GC latency during specialization, 
        so that we won't block it so long while optimizing longer frames
13:25   Lots of speedups to hash and array access and storage, 
        giving some notable benchmark wins
5:19    Refactor guards so we can track facts before/after, 
        allowing for redundant guard elimination
1:47    Pass on facts from return types when inlining, 
        allowing further guard elimination
0:23    Generate less decont instructions when compiling calls
0:25    Tweak code-gen for calls to put callee lookup closer to call when possible, 
        shortening lifetime of it
1:11    Research and write up proposal for changing the default scoping of $_ in v6.d
7:42    Improve performance of common box/unbox operations, including to a Perl 6 Int
8:15    Improvement of addition, subtraction, and multiplication of Perl 6 Int, 
        removing indirections and improving JIT for the non-bigint case
9:38    Implement a spesh plugin for return type checks, 
        reducing code size and allowing some speedups
0:25    Fix a DEPRECATED crash when a backtrace misses some frames
0:58    Track down and fix a SEGV when a debug type name was set from 
        multiple threads
1:02    Fix a segfault in basic block elimination's annotation movement
1:10    Improve GC handling of programs placing objects into long-lived aggregates
6:23    Fix various deoptimization bugs
0:58    Correct how log guards are handled at a PHI to avoid incorrect deletions 
        of guards that were depended on beyond the PHI
1:02    Optimize takedispatcher into an nqp::null on inlining where possible
2:32    Investigate a module regression due to serialization and repossession 
        related changes; fix it
3:42    More aggressive optimization of inlines and better size handling
1:52    Assorted small optimizations in Rakudo and with hllize elimination
8:32    Other assorted debugging, fixing, and testing

Work in the latter part of July, falling under the current round of the grant, focused mostly on hunting down and fixing bugs. A memory leak bug involving the thread pool scheduler was fixed; it was only problematic in some programs so far, but would have become far more noticeable with the new 6.d await semantics. Others fixes addressed regressions arising from recent optimization work, although in most cases the cause was more aggressive optimizations uncovering existing issues.

Last but not least, I started work on an important new optimization: partial escape analysis. This will, when working, enable us to elimiante many GC allocations and perform better analysis.

3:23    Fix a thread pool memory leak due to continuation 
1:06    Re-instate Proxy return handling bug for the sake 
        of the module ecosystem
2:41    Complete first-class frame reference refactors to 
        make them better handle inlining
3:48    Hunt down a deoptimization bug; fix it by correcting 
        uninlining instruction motion
1:00    Fix return handlers of void calls
2:04    Fix a couple of GC rooting/barrier issues
5:03    Start design and implementation exploration for 
        partial escape analysis

About TPF

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

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


Recent Comments

  • brian d foy: I've known Dave for a long time, had several meals read more
  • Joel Berger: First of all, I want to highly endorse this work read more
  • Naoum Hankache: +1 read more
  • Jeremy Studer: An enthusiastic +1 from me. Bart's Expression JIT is both read more
  • Geoffrey Broadwell: Very much +1. As mentioned by previous commenters, Bart is read more
  • MasterDuke: +1, he’s done great work so far, looking forward to read more
  • JimmyZ: +1, Bart did a great JIT work on moarvm, I read more
  • Zoffix Znet: +1 brrt is *the* JIT guy of MoarVM and so read more
  • JJ: It's an excellent idea. It will really help make Perl read more
  • Timo Paulssen: I'm thoroughly +1 on this proposal. I imagine we stand read more
OpenID accepted here Learn more about OpenID
Powered by Movable Type 6.2.2