April 2023 Archives

The Perl Toolchain Summit 2023

After a break of four years, it has been my privilege to attend the 13th Perl Toolchain Summit (née Perl QA Hackathon). This is the third time the summit has been held in Lyon and the tenth summit I have been able to attend. PTS is a really important event in the Perl calendar where those working on the Perl toolchain and in Perl QA get to meet together for four days of discussions, decisions on the future of Perl, and hacking.

Arriving late on Wednesday evening, I had an overfull list of things I wanted to talk to people about and work I wanted to do. In the end I didn't even get half way though my list, but that was expected.

I spent much of Thursday just getting things up and running again. It turns out that spending four years barely keeping a project alive leads to a fair amount of bitrot. So I updated servers and software and keys and did all sort of unglamorous stuff that I had just been putting off.

One thing I had thought was urgent was finding new hosting for cpancover. So I discussed this with the nice metacpan folk. They're in the process of worrying about all this sort of stuff and, since the requirements for cpancover have turned out to be less urgent than they initially seemed, I'm just going to let the metacpan folk do their stuff. I'll prepare cpancover and then, hopefully, when we're all ready, just piggyback on their hard work.

Almost since the start, cpancover has generated coverage data in containers, for security, to constrain resources and for ease. In order to move to new infrastructure it will be easiest if the rest of cpancover is containerised too. I didn't get a chance to work on this during the summit, but this is now high on the priority list.

Devel::Cover has a very close relationship with the perl core. Most of the logic for collecting coverage data is written in XS (C code which calls perl internal functions). This makes it rather susceptible to changes in the perl core. Perl has an annual release schedule and the 5.38.0 release is imminent. Fortunately, PTS is scheduled for shortly before the release which gives me the opportunity to make any changes necessary in Devel::Cover to account for the updates in the new release. On Friday I made a release of Devel::Cover which passes all its tests and so will allow people to use it with 5.38.0. But some of the behaviour has changed due to changes in perl's optree. During the rest of the summit I was able to restore the full functionality and make another release which won't artificially reduce coverage numbers. In this I was greatly helped by other summit attendees who were able to point me in the right direction or just directly tell me the changes I needed to make based on their knowledge of the core.

This is one of the major benefits of PTS. When there are problems to be solved, people who can help are often sitting just a few feet away and are ready to assist.

One of the discussions held during PTS was about how far back the toolchain and other tools should continue working. Based on this, and the current minimum versions of Devel::Cover dependencies, I raised the minimum perl version supported by Devel::Cover from 5.10 to 5.12. The toolchain is currently targeting 5.16 but I don't need to move there yet.

During the summit I also merged in all the outstanding PRs, and worked on a number of open tickets. One particularly interesting ticket related to uncoverable code which gets executed. Devel::Cover marks such code as in error, which reduces the coverage figures. But it turns out there are legitimate use cases where this is unwanted. So I added an option ignore_covered_err which can be applied globally or per uncoverable directive. This option will ensure that covered code never generates an error in the coverage.

Beyond the technical value of the summit, the majority of the attendees are regulars and it was lovely to see old friends again, to chat and catch up, as well as to meet the new attendees. I'm grateful for the COVID policy the organisers put in place which allowed me to safely attend, and for the willingness of the attendees to abide by it. And a special thank-you goes out to the organisers who did a magnificent job despite not having the time to do so, and to all the sponsors, without whom the whole summit would not have been possible.

Booking.com, Deriv, Grant Street Group, Fastmail, cPanel, Perl Careers, MaxMind, Fastly Inc., Perl Maven, OpenCage, Perl Services, Oetiker+Partner, Procura.

About Paul Johnson

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