TPF Devel::Cover grant report May/June 2014

[ I have been sending these grant reports to the perl-qa mailing list, whence they have found their way to It was quite rightly suggested that it was appropriate to post them here too and so, somewhat belatedly, I am doing just that. ]

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

Actually, it's really only for May. I did some work on Devel::Cover in June,
but I am not charging that to the grant, so the month referred to here is May.

This month I released versions 1.14 and 1.15.

Perls 5.20.0 and 5.21.0 were released this month and, thanks in no small part to
work by Matthew Horsfall, they are both fully supported by Devel::Cover.

The main body of work this month was the merging of the cpancover branch. I
have had up and running for some time now. But it has only been
providing coverage for a fairly small subset of the modules on CPAN.
Naturally, I tried to pick the most interesting modules, but the coverage of
CPAN was minimal.

Since the QA hackathon I have been trying to extend the scope of cpancover to
provide coverage for all of CPAN, and not just for the most recent version. In
this quest I have been aided and assisted by Neil Bowers, Olaf Alders and

The major problem with running Devel::Cover on arbitrary code is an extension of
running arbitrary code. Even if the author of the code has no malicious intent
and made no coding mistakes, there are surely bugs in Devel::Cover which might
cause the coverage run to loop indefinitely or to use up all the memory or cause
other problems.

My initial attempts to solve these problems using things like fork and sleep and
kill and killpg weren't completely successful. (Those CPAN authors are so
crafty!) And, naturally, other people who might be willing to provide machines
on which to run cpancover will want some assurances regarding the resource

So I looked into using Docker. Running each coverage run in an individual
docker container should allow each instance to be resource constrained and
ultimately completely killed if necessary.

Docker is still reasonably immature, but has recently released version 1 which
has removed the warning not to use it in production. I had problems with the
earlier versions, but each release has made it more solid. The branch containing
this work has been fairly successful and is now merger into the git master.

This has been running on and, although I've still not been able to
work all the way through CPAN, there's a pretty good start at (Warning, that's quite large now - I
need a better solution than showing all modules on a single page.)

Perhaps more importantly, there's a json file available giving basic coverage
information about the covered modules. This will eventually be used by Neil
Bowers' CPAN dashboard and by MetaCPAN to provide information and create links
to a module's cpancover page. It's also available to anyone else who can think
of a good use. Suggestions, and code, welcome. The json data is available at

I really want to get this cpancover work to pick up new modules as they are
released. I think the only work left is fixing up the occasional problems that
show up because of docker, providing a better landing page and navigation, and
automating the whole thing.

Other work this month included fixing up some testing failures on *BSD and
Windows and providing better support for 5.20 or, more accurately, 5.21 and
beyond when will be removed from the core.

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

From the figures below, you can see that this grant is now very nearly
completed. Within the next few weeks I will finish it up and write a closing
report. If you or your company has contributed to the Perl 5 Core Maintenance
Fund then I would like to offer my sincere thanks for your help in funding this
work and trust that you have found it useful. Dan Wright, the Treasurer of The
Perl Foundation, has recently written about how the fund is now almost depleted.
If you would like to see the other grantees being able to continue their work
(and there is some excellent work being done) then please consider whether you
or, more likely, your company would be in a position to donate to the Core
Maintenance Fund.

Closed Github tickets:

89 Allow -coverage default,-pod option to cover

Fixed cpantesters reports:

... and many more ...

You can see the commits at

Hours worked:

02.05 3:40
22.05 2:30
25.05 3:10
26.05 2:00
28.05 2:50
29.05 3:20
31.05 7:30

Total 25:00

Total hours worked on grant: 390:25

Leave a comment

About Paul Johnson

user-pic I don't really blog about Perl.