Maintaining the Perl 5 Core: Report for Month 23
Thu, 17-Sep-2015 by
Karen Pauley
edit post
_Dave Mitchell writes:_
I spent August mainly working on two things.
First, I continued working on re-jigging how scope entry and exit works (putting more in the context struct and avoiding ENTER, SAVETMPS etc).
I had already heavily reworked how subs are called, making a bare sub call:
bc. sub f {} f();
use about 1/3 less instructions, branches etc.
I've now made the more general loop and pp_enter context stuff use the new regime too (but it's not yet finished and still fails some tests), and preliminary benchmarking shows that an empty for loop with a single iteration is about 1/3 faster too (i.e. for my $x ($y) {}), and with 20 iterations is about 10% faster (i.e. for my $x (1..20) {}). Also, an empty block, i.e. { 1; }, which in perl is still technically a loop, is about 50% faster.
Secondly, I finished off the work of making the 'common-variable' handling code of pp_aassign() (OPpASSIGN_COMMON flag set) more efficient and safe; i.e. the classic ($a,$b) = ($b,$a) issue. It now uses 3 compile-time flags rather rather than, so can more intelligently only copy or mortalise the args that really need it. This is helped by a new run time mark-and sweep algorithm that detects which args are truly shared on both sides of the assign.
This work has now been merged back into blead.
**Summary**
bq. 22:57 #124156: death during unwinding causes crash
0:34 RT #125798 Regex bug with optional capturing group (<...>)? and backreference
0:30 [perl #125840] *x = $x premature free
2:25 [perl #125907] OPpASSIGN_COMMON work broke net-snmp
9:02 process p5p mailbox
40:31 re-implement OPpASSIGN_COMMON
**75:59 Total (HH::MM)**
As of 2015/08/31: since the beginning of the grant:
bq. 98.1 weeks
1419.0 total hours
14.5 average hours per week
There are 181 hours left on the grant.
Comments (0)