Maintaining the Perl 5 Core: Report for Month 6 (March 2014)
Wed, 09-Apr-2014 by
_Dave Mitchell writes:_
Apart from a bit of time spent on a few miscellaneous bugs, I mainly continued working on refactoring re_intuit_start(). During the course of the month I merged two sets of commits back into blead. At this point I have now audited (and where appropriate fixed), the whole of the body of code for general correctness, and in particular for utf8 bugs and inefficiencies, and for correct treatment of anchors, especially \G.
In fact it was \G that originally set me off looking at this function. Originally the regex optimiser was skipped completely when a pattern contained \G. As part of my work last summer in refactoring how the "intelligence" of matching was distributed between pp_match(), regexec_flags() and re_intuit_start(), I changed it so that re_intuit_start() was called even in the presence of \G. This triggered a couple of bug reports, and in the course of fixing them, I realised I didn't really understand re_intuit_start(). The more I studied it, the less I understood it. It turned out to have lots of subtleties, most of which were undocumented. It used just two generic character pointers s and t, in scope throughout the 600 lines function, which were used to mean different things at different times. It had 32 gotos but no loop structures like while(). You get the general picture.
The code now has only(!) 20 gotos, and variables with more meaningful names, like 'rx_origin', and with a lot more code comments.
There's still a lot more I'd like to do with the code. In particular, there are a couple of significant optimisations that I'm aware of that are now possible, and still considerable scope for simplification; but I'm leaving any further work until after 5.20 is out.
bq. 32:45 RT#120692 Slow global pattern match with input from utf8
1:36 [perl #121230] process group kill on Win32 broken in 5.17.2
3:41 [perl #121362] Bleadperl recently introduced a new SEGV
0:32 [perl #121484] /m causing false negative
2:07 [perl #72028] execute permission missing from some utils
18:55 process p5p mailbox
**59:36 Total (HH::MM)**
bq. 4.4 weeks
59.6 total hours
13.5 average hours per week
As of 2014/03/31: since the beginning of the grant:
bq. 24.1 weeks
395.1 total hours
16.4 average hours per week
There are 5 hours left on the grant.