In accordance with the terms of my grant from TPF this is the monthly report for my work on improving Devel::Cover covering January 2013.
If you were watching closely you'll have noticed that I finished my December report with exactly 200 hours worked on the grant. The reason for that was that that completed the first half of the grant. >From my point of view the first half has been rather successful. I won't go through the accomplishments in detail, they're in the monthly reports if you want to look, but I'm happy to have been able to have the opportunity to solve a number of tricky bugs which have been around for a long time. I'm pleased to be able to report that we've agreed to continue with the second half of the grant. This is likely to continue in a similar vein to the first half but we've decided that, in conjunction with the monthly reports, the weekly reports are overkill so there'll be just the one official report per month unless I do a bit more work than usual one month. I'd like to publicly thank Ricardo Signes and Florian Ragwitz for their help and support in managing the first half of the grant. I'm well aware that neither of them has really got anything better to do, but I'm grateful nevertheless. I'm happy to announce that that Christian Walde (Mithaldu) has agreed to manage the second half of the grant in Florian's stead, and I look forward to working with him. January started with fixing a segmentation fault which occurred when an xor operator was optimised away through constant folding. Then I looked into a couple of cpantesters reports which showed a problem on Windows. I couldn't repeat the failures, and it seemed that only one tester had the problem, on version 0.98. Version 0.99 seems not to have shown any failures, so I'll chalk that up to cosmic rays or something. There was a problem reported on perlmonks (http://www.perlmonks.org/?node_id=1011058) which turned out to be a bug in Devel::Cover. The code to check whether we are collecting coverage in a file calls into Perl code from within hijacked ops. Hijacked ops are perl ops where Devel::Cover changes the op's function pointer so it can do some work before continuing on with what perl needs to do. When collecting coverage with tainting turned on, this could leave things tainted when they shouldn't have been. The fairly simple solution was to get the tainting status before calling the Perl subroutine and restore that status afterwards, but this was one of those bugs where all the effort was spent in locating the problem, which involved getting fairly intimate with gdb and PL_tainted. David Cantrell added JavaScript to filter results in html_basic and sent me a pull request. This is a useful option if your coverage run includes many files. I merged the pull request and also added an option to the report to control whether or not the filter is available. The option defaults to on, but it might be worth making that dependent on the number of files in the report. I tested Devel::Cover against the newly released 5.17.8 which didn't show up any problems. I started preparing a release and decided that I should finally finish off and document the "uncoverable" options - the ability to flag a section of code that cannot be covered. In doing so, I came across a bug, not in that code, but in the code for condition coverage. This is probably the most complicated section of the Devel::Cover code. I narrowed down the problem somewhat, and it seems to be caused by a change in perl's opcode handling, but I didn't come to any firm conclusions. Hopefully there will be more news on this in February's report. Closed RT tickets: Closed Github tickets: 40 0.99 Segmentation fault for xor eval'ed operator 41 Spurious tainting errors. Merged pull requests: 42 Add Javascript filtery thing to Html_basic reports You can see the commits at https://github.com/pjcj/Devel--Cover/commits/master Hours worked: 05.01 9:20 19.01 2:30 23.01 1:15 26.01 8:25 Total 21:30 Total hours worked on grant: 221:30 -- Paul Johnson - p...@pjcj.net http://www.pjcj.net