Tue, 13-Feb-2018 by Makoto Nozaki edit post
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 added. 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 table. 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)}) { .... } SUMMARY: 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.
The Perl Foundation - supporting the Perl community since 2000. Find out more at www.perlfoundation.org.