We are looking for new members to join the Grant Committee.

We have a few members who are ready to retire, and so we have a few positions to consider filling.

Grant Proposals Mar/Apr 2019

The Grants Committee has received the following grant proposal for the March/April 2019 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 March 22nd, 2019. The Committee members will start the voting process following that and the conclusion will be announced shortly after.

The Grants Committee has received the following grant proposal for the March/April 2019 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 March 22nd, 2019. The Committee members will start the voting process following that.

A Complete (Interactive) Perl 6 Course with Exercises

  • Name

    Andrew Shitov

  • Amount Requested

    USD $9,996

Task: Create a complete course of the Perl 6 programming language.


I want to create a complete course with exercises covering all aspects of Perl 6. It will be aimed at everyone who is familiar with programming. The goal is to make a course that you can use in self-studying or use as a platform in the class.

Jonathan writes:

The majority of my Perl 6 grant time during February was spent on the escape analysis and scalar replacement work. Happily, the first round of work on this analysis and optimization reached the point of being complete and stable enough to merge into MoarVM master, so Perl 6 users can now benefit from it. I also made allocation profiling aware of scalar replacement, meaning profiling does not block the optimization and collects statistics about how many scalar replacements took place.

I also started on the next round of escape analysis work, which handles transitive object relationships. This means if we have, for instance, a Scalar that does not escape, and a Num which also does not escape is assigned into it, then we can scalar replace both. The basic algorithm currently in master would conservatively consider the Num as having escaped. Further work is needed with regard to deoptimization of such cases before this work can be merged.

I also worked on enabling more aggressive optimization of inlined code. Sometimes, knowledge of the context the code is being inlined into allows for significant further optimization of the inlinee. While profiling a hash benchmark, I spotted some duplicated sanity checks during hash access, and eliminated those for a speedup, and started looking into a means to speed up attribute access in the non-mixin case.

Finally, I fixed a recent regression, and did assorted bits of code reivew, replying to issues, and merging PRs.

9:45    Fix remaining issues with basic escape analysis and
    scalar replacement; merge the branch
1:26    Integrate allocation profiling and scalar replacement
5:09    Work on transitive object handling in escape analsyis
3:50    More aggressively optimize inlined code after inlining
1:43    Look into a bug involving BEGIN, closures, and $/; fix it.
1:29    Eliminate duplicate checks on hash access, giving ~5% off
    a hash access benchmark
3:55    Work on speeding up attribute access in non-mixin cases
1:48    Assorted code review, replying to issues, merging PRs

Total: 29:05

Remaining funding-approved hours on current grant period: 131:46
Remaining community-approved hours on current grant period: 297:46

Maintaining Perl 5 (Tony Cook): February 2019 Grant Report

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

Approximately 37 tickets were reviewed, and 9 patches were

[Hours]         [Activity]
  0.85          #108276 re-test, apply to blead
 12.83          #124203 reproduce, debugging (mostly seems to be lock() at
                start of DB::sub), try to bisect
                #124203 bisect some more, review results, notice change in
                bug and bisect for that change
                #124203 debugging, appears to be locking up in Cwd::CLONE,
                try to disable DB::sub calls while cloning, get a bit
                further, locks in threads::join() (holding the $DBGR lock)
                and main::sub1, trying to get the $DBGR lock
                #124203 re-work DB::sub to avoid holding the lock,
                testing, clean up and polish, work on a regression test
                #124203 debug test failures, fixes, testing, polish,
                comment with patch
                #124203 look for similar issues, work up a test case, fix
                and comment with patch
  6.50          #130585 debugging
                #130585 try to re-work parsing to avoid the bug
                #130585 testing, polish, comment with patch
                #130585 re-work patch a little, comment with updated patch
  1.95          #131683 review, testing, comment
                #131683 review original discussion testing, minor fixes,
                apply to blead
  0.82          #132964 review and comment
                #132964 review new patch, testing, apply to blead
  0.75          review security queue, comments, make #133334, #13335
  0.30          #133462 work on fix, testing, apply to blead
  0.72          #133523 (sec) reply
  0.60          #133638 review and comment, mail perldoc.perl.org
  1.03          #133660 work up a test and comment with patch
                #133660 re-test and apply to blead
  0.10          #133670 review and close
  0.28          #133695 review and comment
  0.70          #133771 review, research and comment
  2.08          #133778 debugging, comment with patch
                #133778 retest and apply to blead
  0.62          #133781 review and comment
  2.14          #133795 research and comment
                #133795 review toke.c, perly.y to try to find a solution
  1.20          #133803 review, comment, prepare to try an test
  0.83          #133810 test setup, testing, propose fixes for
                backporting, close #133760
  1.39          #133816 review apparent bisect, testing
                #133816 reproduce bisect, ask khw about it
  1.78          alpine linux tests, open #133818 and #133819
                #133818 discussion with khw on providing access to alpine
  2.10          #133822 debugging
                #133822 debugging, comment with patch, also comment on
                similar #133823
  0.15          #133827 comment
  1.75          #133830 research, testing, comment, some setlocate
                discussion with khw
  0.87          #133838 review weekend commits, review patch, testing,
                apply to blead
  0.40          #133846 review, test, apply to blead, research ERRSV
  4.02          #133850 debugging, work on fix
                #133850 testing, check a similar case, comment with patch,
                search for other bugs with the same cause, comment with
                some similar cases
  0.27          #133851 briefly comment, debugging
  2.32          #133853 research, adhoc testing, work up a test case,
                testing, apply to blead
  0.10          check for un-perldeltaed changes
  1.07          more perlsecpolicy, open a security ticket for discussion
  0.68          perlsecpolicy
  3.03          perlsecpolicy:
  0.30          perlsecpolicy: comment
  1.57          perlsecpolicy: respond to only comment, updates
  1.75          perlsecpolicy: spell check with some work, fixes, comment
                with updated pod
  0.27          research and briefly comment on “RFC: Adding \p{foo=/re/}”
  0.77          respond toddr email
 58.89 hours total

Tony Cook has requested an extension of $20,000 for his Maintaining Perl 5 grant. This will allow him to dedicate another 400 hours to this work. During this grant he sent regular reports to the p5p mailing list as well as providing monthly summary reports that have been published on this site, the most recent of which are linked below:

Before we make a decision on this extension, we would like to have a period of community consultation. Please leave feedback in the comments field below by March 18th 2019.

The funds for this extension would come from the Perl 5 Core Maintenance Fund.

Brrt (Bart Wiegmans) reports that February was busy and short, but that he did some research on other implementations of register allocation that he can apply to MoarVM JIT.

He notes the following conundrum that he has been thinking about. Maybe a reader can advise:

I've also encountered a limitation in the optimization of the IR, which I'm trying to resolve. The issue is this, if I have a bunch of code like:

  int x = 3, y;
  if (table[x] > 0) {
      y = x * 3;
  } else {
     y = x * 6;

Then under the current IR and compiler, with the new optimizer we may be able to make the reference to x in table[x]. Because the assignment to x isn't strictly ordered, this means that it is moved (implicitly) to the next use, which is:

  int x, y;
  if (table[x] > 0) {
      x = 3;
      y  = x * 3;
  } else {
      y = x * 6;

And that obviously doesn't work, since x is uninitialized in the else branch. So in order to do effective optimizations, we need to be able to resolve this case correctly, either by copying the definition of 'x', or by moving the definition to an earlier point in the program.


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

  • Andrew Shitov: Let me clarify what is already said in the proposal. read more
  • Laurent Rosenfeld: I've read carefully Aleks-Daniel Jakimenko-Aleksejev's and fully appreciate Aleks-Daniel's arguments. read more
  • ogniloud: At first, I considered supporting Andrew's grant proposal since I've read more
  • ogniloud: At first, I considered supporting Andrew's grant proposal since I've read more
  • Aleks-Daniel Jakimenko-Aleksejev: I'm convinced that the committee should strongly reject this proposal, read more
  • Tom Legrady: I find Andrew's books informative and clear. I'm sure he read more
  • Karl Williamson: Me too read more
  • Tom Browder: I vote to support Andrew's proposal. I have two of read more
  • Laurent Rosenfeld: As an author of a Perl 6 book, I want read more
  • Bruno Contreras: I support this proposal. His recent short perl6 book us read more
OpenID accepted here Learn more about OpenID
Powered by Movable Type 6.2.2