I spent June mainly: * finishing off the heavy reworking of perl's internal sprintf implementation. This has now been merged into blead. It contains about 100 commits which fixes bugs, audits the code for possible integer overflows, makes the code simpler - and simpler to understand - and improves performance by around 15%. * adding a proper test suite for Porting/bench.pl, and fixing the utility up based on the test results. For example at some point the --bisect option broke, but this was never noticed due to no testing. * adding a DEBUGGING-build mechanism to detect some classes of bug where pp functions fail to extend the stack before pushing return values. Basically the runops loop sets a high water mark variable before calling the pp function; EXTEND() and similar update that mark, and on return from the pp function, we check whether PL_stack_sp is > the mark and panic if so. This has allowed me to detect and fix several such bugs in core. Other than that I worked on a few miscellaneous RT tickets.
SUMMARY: 15:41 RT #131260 sprintf implementation 0:37 RT #131555 heap-buffer-overflow 1:57 RT #131575 s// on utf8 string occasionally crashes 0:51 RT #131577 heap-use-after-free (READ of size 1) in S_reghop4() 21:25 add better tests for Porting/bench.pl 4:21 apply accumulated post-5.26 fixes 4:29 fix 32-bit builds 14:17 fix stack extend overruns 4:23 process p5p mailbox 2:00 sort out 5.27.1 version numbers 1:04 update perldelta ------ 71:05 TOTAL (HH::MM) 199.1 weeks 2800.0 total hours 14.1 average hours per week
The Perl Foundation - supporting the Perl community since 2000. Find out more at www.perlfoundation.org.