develooper Front page | perl.perl5.porters | Postings from February 2018

DAVEM TPF Grant#2 January 2018 report

Thread Next
Dave Mitchell
February 12, 2018 12:40
DAVEM TPF Grant#2 January 2018 report
Message ID:
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.

Music lesson: a symbiotic relationship whereby a pupil's embellishments
concerning the amount of practice performed since the last lesson are
rewarded with embellishments from the teacher concerning the pupil's
progress over the corresponding period.

Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About