Recently in Grants Category

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 38 tickets were reviewed, and 8 patches were

[Hours]         [Activity]
 13.82          #122490 (sec) more merge conflicts
                #122490 (sec) more merge conflicts, track down warning
                #122490 (sec) track down warning sources, start merging
                test changes
                #122490 (sec) more test merging, testing, debugging
                #122490 (sec) debugging
                #122490 (sec) debugging
  0.97          #126228 build testing, apply to blead
 16.08          #127663 testing, apply hash seed env suppression patch,
                back to in-place changes
                #127663 work on chdir test, testing, debugging, make
                mg_freeext() API and fix docs
                #127663 cleanup, threads handling, threads test
                #127663 more threads testing, try to make it fail with
                #127663 more try to make it fail with fork and succeed,
                work on fix, code polish
                #127663 hoist some work back up, testing
                #127663 uncombine thread/fork child handling which I
                combined by accident, work on more tests and find a couple
                of cleanup issues
                #127663 more tests
                #127663 post patch to ticket
  0.22          #128528 (sec) review and comment
  0.88          #128998 track down when it was fixed, ticket management
  0.30          #129012 make public, comment and close
  1.88          #129024 review, make public, check fix backports to 5.24,
                non-trivial backport to 5.22, comment
  1.30          #129125 check, testing, apply to blead
  1.65          #129149 apply patch, test #130557 case, testing, make
                public apply to blead, comment on #130557
  0.08          #129187 check and merge into #129149
  0.95          #129190 rebase with some conflicts, testing, make public,
                apply to blead
  0.17          #129199 make public, comment and close
  2.62          #129274 (sec) try to find an alternative attack
                #129274 more trying to break it, write regression test,
                testing, make public, apply to blead
  2.12          #129292 review code, debugging, make public and comment
  1.77          #129298 review patches, research, consider whether changes
                improve perl
                #129298 more consideration, ask khw
  4.32          #129340 (sec) review code, think about solutions
                #129340 (sec) work on a solution, testing
                #129340 (sec) write a regression test, testing
                #129340 (sec) suggested changes, testing
                #129340 (sec) research, comment with updated patch
  0.50          #129342 (sec) test provided patch, create a test case and
  0.45          #129377 (sec) review patch, look for similar issues,
  1.32          #129840 (sec) review, testing
                #129840 get it to test, merge into 129377
  0.40          #129848 review and make public
  1.53          #129861 (sec) debugging
  0.42          #129887 (sec) review and comment
  0.82          #129963 research, make public and link to stack-not-
                refcounted meta ticket
  0.92          #129975 debugging, make public and link to stack-not-
                refcounted meta ticket
  0.28          #130100 make public and point at list discussion on
  0.73          #130256 debugging, make public and link to stack-not-
                refcounted meta ticket
  1.67          #130262 apply patch with noise, test #130558 case,
                testing, make public, push to blead, comment on #130558
  0.18          #130321 (sec) debugging
  0.68          #130504 review, testing, apply to blead
  0.43          #130560 comment
  0.90          #130567 reproduce, suspect 94749a5ed was bad, ask khw on
                #130567 irc discussion
  1.35          #130569 (sec) comment
  2.85          #130578 debugging
                #130578 debugging, comment
  0.58          #130591 review discussion and comment
  0.33          #130614 research and comment
  1.57          #130635 review changes, check memory use, testing, comment
                #130635 comment
  1.55          #130675 debugging, #p5p discussion
                #130675 debugging, #p5p comment, ticket comment on #130679
  0.42          comment on deprecations thread
 69.01 hours total

Dave Mitchell writes:

There are two main things I did in December (along with the usual
day-to-day stuff).

First I sorted out infrastructure for ops which are called in boolean

Currently PADHV and RV2HV ops are flagged specially if they are not only
used in scalar context, but where the result they return will only
ever be used as a boolean value; for example 'if (%h) {...}'

This was originally done since a hash in scalar context returned a bucket
usage ratio, which became expensive to calculate when we no longer
stored the bucket occupancy count with each hash.

In 5.25.x we've changed it so that in scalar context it now only returns a
key count, which is always known and doesn't need to be calculated on the
fly. But it can still be quicker to return just a boolean value in
these cases rather than an integer.

My work took this special-case boolean context detection code in the
peephole optimiser, and improved it so that:

 * it fixes a bunch of bugs - e.g. if (!%h) {...} wasn't recognised as
 * it expands the number of situations that are recognised as boolean
   context, such as grep:  e.g. grep %$_, @AoH;
 * it adds a reasonably comprehensive set of tests for checking that ops
   have been flagged as boolean under various boolean scenarios;
 * it allows other ops to be easily added to the boolean detection in the
   optimiser; and to the test suite.

I've also tweaked RV2HV so that in the negative case it just returns
&PL_sv_no rather than sv_2mortal(newSViv(0)))

I've also pushed a branch davem/boolref2 that allows the ref() function to
be optimised in boolean context; so 'if (ref $r) {...}' doesn't have to
generate a temporary string like "Foo=ARRAY(0xc8afd8)". I intend to merge
this after 5.26, and maybe booleanise a few more ops too (like length()).

The other notable thing I did last month was to change the output format
produced by the op_dump() function (and perl -Dx). It now displays an
ASCII-art tree structure, and more low-level information is displayed,
such as each op's address and class.

      3:21 RT #129285 Perl_gv_fullname4 assertion
      0:36 RT #130617 Perl_rpeep: Assertion ....
      0:55 RT #130621 Segfault in Perl_vwarner (util.c:2051)
      0:49 RT #130648 S_pat_upgrade_to_utf8 Assertion ...
      1:17 RT #130651] regcomp.c:6881 Assertion `expr' failed
      1:19 RT #130661 perly.c:341: Perl_yyparse: Assertion failed
      1:03 RT #130667 Perl_sv_clear Assertion `SvTYPE(sv) != ...
      0:52 RT #130669 Perl_sv_2nv_flags: Assertion `SvTYPE(sv) != ...
      5:18 [perl #130198] chop(@x =~ tr///)
      3:00 [perl #130584] Slow pos function in taint mode with \G
     22:53 [perl #78288] ref and other ops are inefficient in boolean context
     12:08 change output format of op_dump()
      3:20 factor out common optree finalisation code
      4:30 general housekeeping
     10:41 process p5p mailbox
      2:51 review security tickets
     74:53 TOTAL (HH::MM)

 172.3 weeks
2376.7 total hours
  13.8 average hours per week

There are 423 hours left on the grant

The Grants Committee has concluded the voting of the January round.

Proposal in this round

ProposerRequested AmountLink to the Details
Standardization, Test Coverage, and Documentation of Perl 6 I/O RoutinesUSD 999Proposal

Voting Results

Standardization, Test Coverage, and Documentation of Perl 6 I/O Routines7035 = 5 + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0

Definition of the score is found in 3.2 of the rules.


We approve this grant.

This is an area that needs work in Rakudo Perl 6, and Zoffix has a history of delivering tangible improvements to the compiler and the infrastructure in the community.

Our next round will be in March. You can submit proposals now. If you want to help funding, one of the options is Amazon Smile. We appreciate all the donors which made the grant program possible. Also see the press releases for the recent major donations.

Dave Mitchell recently requested an extension of his Maintaining Perl 5 grant.

I'm pleased to announce that the Board of Directors approved extension of another $20,000.

I would like to thank the community members who took time to comment on this grant extension request and our sponsors who made funding the grant possible through our Perl 5 Core Maintenance Fund.

Tony Cook writes:

Approximately 21 tickets were reviewed or worked on, and 2 patches
were applied.

[Hours]         [Activity]
  4.33          #127149 re-work patch to fix a related issue, debugging
                #127149 debugging, comment on Encode #59
 14.98          #127663 testing, minor polish, re-check, comment with
                #127663 reply to comment, work on additional patch for env
                control of the internal seed
                #127663 more internal seed env, comment with patch
                #127663 work on patch updates, testing
                #127663 more patch updates, work on patch to optionally
                disable hash randomization env vars
                #127663 *at probes, bang head against metaconfig a bit,
                directly modify Configure instead
                #127663 more Configure, re-work in-place editing code to
                use the new functions, testing
                #127663 work on chdir test
                #127663 config fixes
  1.23          #128093 testing an comment
  0.65          #129788 testing, apply patch to blead
  0.27          #130056 review discussion, comment
  2.35          #130122 partly review patch
                #130122 review the rest, testing
  1.53          #130169 review, testing, apply to blead
  1.22          #130195 review discussion, patch
                #130195 testing (and it turns out Dave applied it)
  0.25          #130242 research and comment
  0.27          #130256 (sec) testing, comment
  0.67          #130262 (sec) testing, produce a fix, comment with patch
  1.80          #130270 testing, debugging
  0.50          #130321 (sec) review, debug, comment
  0.27          #130328 comment
  0.27          #130332 (sec) testing, minify, comment
  1.98          #130335 review issue, write a test, work on a patch
                #130335 debugging, fixes, comment with patch
  0.47          #130336 (sec) testing, minify, comment
  1.55          #130344 (sec) testing, minify, debugging, comment
  1.72          #130367 work on a patch, testing, comment
  0.37          perldelta update
  0.32          security list discussion
 37.00 hours total

Final Grant Report : RPerl User Documentation #2

No Comments

Will Braswell has submitted his final report (below) on his grant RPerl User Documentation, Part 2.

The Grants Committee welcomes comments from the community before it votes on completion of the grant.


RPerl User Documentation, Part 2, Final Report


Will Braswell

Amount Requested:

USD 1,600


Deliverables for this grant proposal are:

1. Complete Learning RPerl Chapter 2


2. Write Learning RPerl Chapter 3


3. Write Learning RPerl Chapter 4



Chapter 2 Scalar Data

1a. Numbers; Strings; RPerl’s Built-in Warnings; Scalar Variables

Section 2.1: Numeric Data & Operators

Section 2.2: Text Data & Operators

Section 2.3: RPerl´s Phases, Warnings & Errors

Section 2.4: Variables With Scalar Values

1b. Output with print; The if Control Structure; Getting User Input; The chomp Operator

Section 2.6: Displaying Output Using The print Operator

Section 2.7: Program Control Using The if Conditional Statement

Section 2.8: Receiving Input From The User & STDIN

Section 2.4.13: chop & chomp Operators

1c. The while Control Structure; The undef Value; The defined Function

Section 2.9: Program Control Using The while Loop

Section 2.4: Variables With Scalar Values

Chapter 3 Lists and Arrays

2a. Accessing Elements of an Array; Special Array Indices; List Literals; List Assignment

Section 3.3: How To Access Array Elements

Section 3.4: Array Length & Negative Indices

Section 3.1: Lists vs Arrays

Section 3.7: Array Assignment

2b. Interpolating Arrays into Strings; The foreach Control Structure

Section 3.11: Converting From Array To String

Section 3.12.3: The foreach Loop

2c. Scalar and List Context; <STDIN> in List Context

Section 3.16: Scalar & Array Contexts

Section 3.17: STDIN & Arrays

Chapter 4 Subroutines

3a. Defining a Subroutine; Invoking a Subroutine; Return Values; Arguments

Section 4.1: Subroutine Definitions

Section 4.2: Subroutine Calls

Section 4.3: Subroutine Return Values

Section 4.4: Subroutine Arguments

3b. Private Variables in Subroutines; Variable-Length Parameter Lists; Notes on Lexical (my) Variables

Section 4.5: Subroutine Variables, Variable Scope & Persistence

Section 4.4.1: Variadic Subroutines

Section 4.5.1: my Intermittent Variables

3c. The use strict Pragma; The return Operator

Section 4.6: use strict; use warnings; Pragmas & Magic

Section 4.3.1: return Operator

3d. Non-Scalar Return Values; Persistent, Private Variables

Section 4.3.2: Multiple Return Values

Section 4.5.2: Persistent State, Pseudo-State Variables

Completeness Criteria

I will release a new version of RPerl to CPAN with the new documentation.

[ RPerl v2.41 on CPAN contains chapters 2 and 3, while chapter 4 has already been published on; chapter 4 will be uploaded to CPAN as part of the next stable release of RPerl in February. ]

Learning RPerl (CPAN)

I will release a new version of the RPerl website with the new documentation.

Learning RPerl (RPerl site)

Grant Report : RPerl User Documentation #2 - Dec 2016

No Comments

Will Braswell reports that he has completed the deliverables for RPerl Docs #2:

"Lots of big news for RPerl! First, Christmas saw the release of the new Perl-powered platform ;v1.0, codename Nimbostratus. Secondly, on New Years Day we released RPerl v2.4, codename Aurora. And last but not least, we are proud to announce the publication of Learning RPerl chapter 4, thereby completing part 2 of the TPF grant! Over 160 pages of brand new material has been written under this grant for chapters 2, 3, and 4 of Learning RPerl.


What's next for RPerl? ;What other exciting new advancements are coming down the pike? Stay tuned to and find out!"


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