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

This is a monthly report by Dave Mitchell on his grant under Perl 5 Core Maintenance Fund. We thank the TPF sponsors to make this grant possible.

I didn't spend all that many hours during August on perl work.

I spent most of my time looking at a bug related to restoring of captures
within regex repeats. During the course of that, I took the opportunity to
simplify and cleanup some of the code in S_regmatch() which deals with
captures, and in particular, make it consistently use macros which produce
debugging output when opening or closing or restoring capture indices.

     18:03 RT #133352 Ancient Regex Regression
      1:30 RT #133429 Time-HiRes/t/itimer.t: intermittent failures
      1:36 RT #133441 no assignment to "my" variable  
     21:09 TOTAL (HH::MM)  

 254.7 weeks
3151.4 total hours
  12.4 average hours per week

There are 315 hours left on the grant

About TPF

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

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


Recent Comments

  • 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
  • Paul: After finally getting my head around promises in JavaScript it read more
  • Steven Humphrey: Async/Await would be a great addition to the language. This read more
  • Coke: Folks, apologies; I think I accidentally deleted 2 real comments read more
OpenID accepted here Learn more about OpenID
Powered by Movable Type 6.2.2