Maintaining the Perl 5 Core (Dave Mitchell): Grant Report for Jan 2018

No Comments

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.

The main thing I did last month was to fix a bunch of issues with tr///c.
Initially I was just working on a particular ticket, then noticed that
tr///c was almost completed untested in core, and had a bunch of issues,
and I ended up rewriting most of the implementation for
tr/nonutf8/nonutf8/c (with or without the /s and /d flags).
From the merge commit, v5.27.7-203-gb1f1599:

    This branch does the following:

    Fixes an issue with tr/non_utf8/long_non_utf8/c, where
    length(long_non_utf8) > 0x7fff.

    Fixes an issue with tr/non_utf8/non_utf8/cd: basically, the
    implicit \x{100}-\x{7fffffff} added to the searchlist by /c wasn't being

    Adds a lot of code comments to the various tr/// functions.

    Adds tr///c tests - basically /c was almost completely untested.

    Changes the layout of the op_pv transliteration table: it used to be roughly

          256 x short  - basic table
            1 x short  - length of extended table (n)
            n x short  - extended table

    where the 2 and 3rd items were only present under /c. Its now

            1 x Size_t - length of table (256+n)
      (256+n) x short  - table - both basic and extended

    where n == 0 apart from under /c.

    The new table format also allowed the tr/non_utf8/non_utf8/ code branches
    to be considerably simplified.

    op_dump() now dumps the contents of the (non-utf8 variant) transliteration

    Removes I32's from the tr/non_utf8/non_utf8/ code paths, making it fully
    64-bit clean.

    Improves the pod for tr///.

The other thing of note I did was to move sub attributes back before the
signature, because attributes need to be able to affect the compilation of
code within the signature, e.g.

    sub f :lvalue ($a = do { $x = "abc"; return substr($x,0,1)}) {

      0:20 OP_MULTICONCAT signed/unsigned issue
      6:30 RT #132141: lvalue return broken in signature
     35:58 RT #132608 heap-buffer-overflow in Perl_do_trans
      2:22 RT #132772: MULTICONCAT: Geo-StreetAddress-US-1.04 affected too
      0:56 SEGV in t/re/pat.t
      0:55 [perl #131648] Out-of-bounds read in S_regmatch
      2:26 process p5p mailbox
     49:27 TOTAL (HH::MM)

 224.4 weeks
2962.4 total hours
  13.2 average hours per week

There are 171 hours left on the grant.

Leave a comment

About TPF

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

About this Entry

This page contains a single entry by Makoto Nozaki published on February 13, 2018 12:00 AM.

Maintaining Perl 5 (Tony Cook): January 2018 Report was the previous entry in this blog.

Grant Proposal: Perl Camp in Democratic Republic of Congo is the next entry in this blog.

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