Maintaining the Perl 5 Core: Report for Month 24


Dave Mitchell writes:

I spent September mainly working on two things.

First, I made the stack grow macros EXTENDand MEXTENDmore robust against count truncating and wrapping, especially on platforms where the sizes of ints and pointers differ. The initial impetus to do this was a bug reported against the repeat operator ('x') in list mode on a platform with 32-bit pointers but 64-bit ints; but new compiler warnings generated by the modified macros allowed various other potential issues to be identified and fixed.

Second, I improved the Boyer-Moore string finder - as used by index() with a constant substring arg, and as used by the regex engine to spot fixed substrings and quickly reject or find suitable starting position before running the matching engine proper (i.e. the NFA). It now makes more use of the C library's memchr() function, which on some platforms is written in assembler and is very fast.

On my glibc linux x86_64 systems, this code is now 7 times faster:

$s = "a" x 1000 . "wxyz";$s =~ /wxyz/ for 1..30000;

Both these changes are currently smoking and should be merged into blead shortly.


5:47 Bleadperl v5.23.1-202-g808ce55 breaks VDB/Test-Dist-Zilla-0.002.tar.gz

3:37 [perl #125907] OPpASSIGN_COMMON work broke net-snmp

26:44 [perl #125937] 'x' operator on list causes segfault with possible stack corruption

0:47 [perl #126082] unshift to @ISA

25:12 optimise the Boyer-Moore string finder (as used in REs and index())

20:06 process p5p mailbox

82:13 Total (HH::MM)

As of 2015/09/30: since the beginning of the grant:

102.4 weeks

1501.2 total hours

14.7 average hours per week

There are 99 hours left on the grant.