April 2014 Archives

Paul Johnson writes:

In accordance with the terms of my grant from TPF this is the monthly report for my work on improving Devel::Cover covering March 2014.

Those of you who have been paying close attention may have noticed that it has been some months since my last report. Unfortunately I got rather busy and Devel::Cover work was one of the casualties. However, with the approval of my grant managers and the President of TPF I am intending to complete the grant.

This month saw the annual Perl QA Hackathon which was held in Lyon. You can find my report at
http://blogs.perl.org/users/paul_johnson/2014/03/qa-hackathon-2014.html The hackathon gave me four days to really get back into working on Devel::Cover so I decided to restart my grant work directly afterwards.

Having discussed much about how to improve cpancover.com with Olaf Alders, Neil Bowers and Barbie, I made a start on the implementation. There are a number of problems with the current implementation. The main difficulties are that there is no API for services such as metacpan or the CPAN dashboard to use, and that the coverage of CPAN is somewhat minimal. I have made a good start on solving these problems and making cpancover more useful.

I have also noted official support for 5.18.2 and prepared for the removal for CGI.pm from the core.

A bug in bleadperl (or not, as the case my be), https://rt.perl.org/Public/Bug/Display.html?id=121317 had me looking at Devel::Cover's database storage options. Devel::Cover can currently use JSON (either XS or pure perl) or Storable, in that order of preference. Yves Orton suggested that Sereal might by a sensible serialisation format, and so I wrote a Serial backend module.

The module performs well, being faster than JSON, and also having the advantage of having no other dependencies. Devel::Cover cannot be used on modules with it uses itself, but if the Sereal folk ever want to run Devel::Cover on Sereal they can use one of the other serialisation formats by setting the $DEVEL_COVER_IO_OPTIONS environment variable.

I've had a bug report about merging disparate coverage databases for a little while (github 71), and Tina Müller hit the same problem and mentioned it on IRC, so I thought it was time to look into it. It turns out that I was not correctly merging the structures of the databases - the parts which keep information about the statements and other constructs in the code. Adding tests for this took a little work, and gave me cause to improve Devel::Cover's testing system.

Because of the way in which Devel::Cover interacts with Perl, it is not always easy to test Devel::Cover in the way in which a more ordinary module might be tested. (Although that's not to say that I do all I can in that area and improvement here is more than warranted.) The majority of Devel::Cover is tested by having a number of small scripts which are run under Devel::Cover, and the output of the text report is compared against golden results. This is useful because it makes development against a problematic script simple.

Adding a new test case is also simple. It is a matter of adding the script and any dependencies into the tests directory and generating golden results. Once the golden results are generated, they should be checked manually for veracity, of course.

As usual, there were also some patches applied, pull requests merged, and other bugs fixed.

This month I released Devel::Cover version 1.09.

Closed Github tickets:

71 merge structures when merging dbs
75 Test failure with perl 5.19.6
76 perl 5.8 is also available at travis-ci
78 Deep recursion segfault with use overload...

Merged pull requests:

79 Execute get_magic once, and store the resulting value.
80 abranch_return_sub.t fail / bleadperl v5.19.5-368-ge45d898
81 added line to support spaces in path to dbname.
83 expand all tabs in source code

Closed RT tickets:

#90591 abranch_return_sub.t fail on 5.19.6

Fixed cpantesters reports:


You can see the commits at https://github.com/pjcj/Devel--Cover/commits/master

Hours worked:

17.03 6:40
18:03 5:15
19:03 7:00
20:03 3:45
21:03 6:50
22:03 4:40
29:03 3:30
31:03 2:45

Total 40:25

Total hours worked on grant: 334:55

I am pleased to announce that Tony Cook's grant Maintaining Perl 5 grant has been extended by another 400 hours.

Thank you to everyone who responded to the call for comments and who provided feedback on this grant extension. I would also like to thank all those who continue to provide financial support to the Perl 5 Core Maintenance Fund.

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.


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)

4.4 weeks
59.6 total hours
13.5 average hours per week

As of 2014/03/31: since the beginning of the grant:

24.1 weeks
395.1 total hours
16.4 average hours per week

There are 5 hours left on the grant.

As his Maintaining the Perl 5 Core grant is about to be successfully completed, Dave Mitchell has requested an extension of $20,000. This will allow him to dedicate another 400 hours to this work.

During this grant he sent weekly reports to the p5p mailing list as well as providing monthly summary reports that have been published on this blog, the most recent of which are linked below:

Report for Month 5
Report for Month 4
Report for Month 3

Before we make a decision on this extension we would like to have a period of community consultation that will last for one week. Please leave feedback in the comments or if you prefer send email with your comments to karen at perlfoundation.org.

If successful this extension will be funded from the Perl 5 Core Maintenance Fund.

It is my pleasure to announce that Booking.com approached Karen Pauley, President of The Perl Foundation, to announce further sponsorship of the Perl5 Core Maintenance Fund. Booking.com have been generous contributors and supporters of this fund since its inception and this latest generous support is for the incredible amount of €10,000 (ten thousand euros).

Booking.com have sponsored Perl events and initiatives for many years and have also been host to Perl events at their offices in Amsterdam. They employ a large and committed team of Perl developers and use Perl for a vast number of tasks in their business. Booking.com have spoken favourably about how Perl has given them the "flexibility and efficiency that has enabled them to grow quickly".

"Once again we are deeply honoured to receive funding from Booking.com." said Karen Pauley, president of TPF, "Their consistent support for the Perl community, language and events has always been at the core of our relationship and I know I speak for the whole community when I express my gratitude".

Booking.com is one of the world's leading online accommodation reservation services and part of the Priceline.com group (NASDAQ: PCLN). Booking.com was founded in 1996 and is based in Amsterdam, the Netherlands.

Booking.com attracts millions of unique visitors each month who can choose from over 425,000 hotels and other accommodations based in 195 countries worldwide. Booking.com reserves in excess of 625,000 room nights every 24 hours in over forty languages. They have over 115 offices worldwide serving their customers 24 hours a day.

About TPF

The Perl Foundation - supporting the Perl community since 2000. Find out more at www.perlfoundation.org.

About this Archive

This page is an archive of entries from April 2014 listed from newest to oldest.

March 2014 is the previous archive.

May 2014 is the next archive.

Find recent content on the main index or look in the archives to find all content.


OpenID accepted here Learn more about OpenID
Powered by Movable Type 6.2.2