Jonathan Worthington has requested an extension of $20,000 for his Perl 6 Performance and Reliability Engineering grant. This will allow him to dedicate another 333 hours to this work.

His previous work was successfully delivered as reported in the latest reports:

Jonathan writes: “I recently wrote about some of the things I plan to work on for Perl 6 during 2019. The first three items - escape analysis based optimizations, startup time and memory use reductions, and improving compilation times - fall within the scope of my ongoing Perl 6 performance and reliability grant. The extension that I am requesting should enable me to make progress on all of these, as well as continue providing a steady flow of other fixes and performance enhancements.

The number of hours I propose to work under this extension reflects an hourly rate increase from 50 USD to 60 USD. Thanks to exchange rate shifts and inflation, this adjustment for the most part serves to restore the real-terms value of the grant to where it was 2-3 years ago.”

Before we make a decision on this extension we would like to have a period of community consultation that will last for seven days. Please leave feedback in the comments.

(edit: Comments are now closed. We would like to thank everyone who took time to support Jonathan’s request.)

Jonathan writes:

December came with some travel and vacation, and so wasn't ideal for working on the larger ongoing tasks. I did, however, get in numerous smaller fixes, as well as reducing the overhad on regex matching and improving the performance of regex interpolation. Other fixes included a memory leak that was observed to impact Cro applications, a couple of GC errors, and a crash involving a certain interaction of precompilation and custom operators.

0:40:00 Fix a crash resulting from missing GC rooting in first-class contexts.
0:26:00 Fix plugin spesh GC issue that occasionally occurred under JIT.
0:17:00 Improve handling of errors on thread join.
0:18:00 Fix being unable to mix a role containing a private method into an enum value.
2:04:00 Resolve a segfault involving precompilation and custom operators.
0:52:00 Fix a memory leak in MoarVM affecting some long-running programs.
0:30:00 Look into and fix some problems with the new floating point read/write binary ops.
0:49:00 Look into IO::Socket::Async::SSL regression on HEAD Rakudo; 
        release a new version fixing it.
3:13:00 Various regex performance improvements.

Total: 9:09

Total time spent on current grant period: 151:30
Total time remaining on current grant period: 48:30

Jonathan writes:

In November I continued my work towards partial escape analysis and related optimiztions in MoarVM. In terms of the analysis itself, I spent some time designing and starting to implement deoptimization handling. If we use the analysis to decide to eliminate an allocation, then this decision will have been made based on specialized code containing guards. In the event these guards fail, we must be able to undo the optimization, so we can fall back to running the general version of the program. I also continued my work on the static optimizer in Rakudo, which will provide many more opportunities for escape analysis related optimizations to take place, as well as helping the pre-optimized code speed.

I worked on a couple of 6.d related issues, including the new start in sink context semantics, which make it harder to lose asynchronous errors. Finally, I also fixed a number of other smaller issues.

7:32:00 Work on deopt handling in partial escape analysis
3:12:00 Leixcal to local lowering optimizations in Rakudo
1:23:00 Implement the new sunk `start` semantics for Perl 6.d
1:15:00 Track down an occasional crash in Supplier::Preserving
0:51:00 Fix a bug involving inline end annotation motion
2:07:00 Resolve assorted release blocker issues

Total: 16:20

Total time spent on current grant period: 142:21
Total time remaining on current grant period: 57:39

The 2019 DC-Baltimore Perl Workshop will be in Silver Spring, MD, on April 6th, 2019. The call for talks is now open and this year's themes are Perl (of course) and related technologies. Proposals can be submitted through the workshop website until Jan 31, 2019. Registration is also open and attendance is free for speakers, students, and people currently between jobs. We hope to see you there!

Brrt (Bart Wiegmans) has hit the ground running on his MoarVM JIT Compiler grant.

Here is his interim report:

I wanted to start with floating point support, which has two subtasks:

  • Ensure that DynASM encodes SSE instructions with variadic registers correctly.

  • Ensure that the JIT itself accepts and works with floating point registers.

I finished the first two of those tasks. For some context, x86-64 instruction encoding rules require an extra byte to be prefixed if an instruction uses registers 8-15 (because the original x86 only has 8 registers, addressed with a 3-bit number). So the extra byte prefix adds the 4th byte for up to 3 operands; it needs to be placed in the right place. Well, long story short, I originally extended DynASM to add this byte as needed. But (as I learned) I made a mistake in that which made certain long instruction templates not really work. I fixed that bug and now DynASM (or at least our fork of it) can address all registers correctly.

I then started with adding floating point support to the JIT, and found out that it was somewhat more complicated than anticipated. The reason for that is perhaps a bit ironic - in order to reduce the number of programming errors in JIT templates, I added a fairly strict type checking system to the JIT template processors. And that type checking currently rejects numeric registers. Designwise, this isn't necessarily very complicated, but it is slightly hairy.

He expects to be finished soon with FP support.

Brrt will occasionally update the community on his blog.


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.

Another somewhat sparse month.
Fixed a couple of bugs and worked my though some of the backlog in my p5p

      2:05 RT #133538 refaliasing does not work
      1:00 RT #133687 /(?(?{...}))/ codeblocks mis-parsed in runtime pattern
      6:07 process p5p mailbox
      9:12 TOTAL (HH::MM)

 267.7 weeks
3161.7 total hours
  11.8 average hours per week

There are 304 hours left on the grant

Grant Proposals Nov/Dec 2018

The Grants Committee has received the following grant proposal for the Nov/Dec round.

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

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

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

  • Geoffrey Broadwell: Not only would I very much like to see this read more
  • Bart Wiegmans: Strong +1 from me read more
  • JimmyZ: + 1 read more
  • Solomon Foster: Please continue to support Jonathan's amazing work! read more
  • Roman Baumer: +1 Please approve this grant. Jonathan did a tremendous work read more
  • MasterDuke: +1, has past work has been fantastic and I eagerly read more
  • Timo Paulssen: The quality and benefit of Jonathan's work has been consistently read more
  • Donald Hunter: +1 Jonathan has made fantastic progress with performance of Perl read more
  • Matt Wilson: Developers of Jonathan's "100x" skill and experience levels are routinely read more
  • Nigel Hamilton: +1 .. please ensure Jonathan is able to continue his read more
OpenID accepted here Learn more about OpenID
Powered by Movable Type 6.2.2