Maintaining the Perl 5 Core: Report for Month 25


I spent October mainly working on two things.

First, I optimised some common arithmetic operators: + - *, so that for the very common case of both args being simple ints in ranges that won't overflow, or both being floats, a simple C-level + or whatever can be directly done. For more complex or mixed args, it falls back to the existing slower code. For ++ and --, I optimised the simple integer case. I also improved the core SET[iun], PUSH[iun] and XPUSH[iun] macros, which set the pad targ to a numeric value and push it on the stack. Since PADTMPs and lex vars (which is typically what a pad targ is) are often used in the same way, e.g. always assigned and used as an integer, those macros now check whether the targ is already of the right type, and if so directly set the value, rather than just blindly calling sv_setiv() etc. The combination of the above makes the nbody benchmark (lots of floating-point vector arithmetic) about a third faster.

Second, I continued overhauling perl's context stack and dynamic scope implementation.


59:16 #124156: death during unwinding causes crash

0:09 [perl #117341] av_undef's PODis confusing

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

4:35 [perl #126082] unshift to @ISA

1:11 [perl #126145] Problem with stack moving fix for Perl_load_module

2:23 [perl #126170] Assertion failed: S_finalize_op (op.c:2562)

1:55 [perl #126229] POSIX::strerror() clears $!

2:27 [perl #126309] 'x' operator on list causes segfault and confuses valgrind, 64-bit version

0:29 [perl #126472] Bleadperl v5.23.3-33-g6768377 breaks HANENKAMP/Tie-Simple-1.03.tar.gz

0:32 add perldelta entries

13:00 make arithmetic faster

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

11:45 process p5p mailbox

98:49 Total (HH::MM)

As of 2015/10/28: since the beginning of the grant:

106.4 weeks

1600.0 total hours

15.0 average hours per week

There are 0 hours left on the grant.