PPI is a Perl document parser that enables easy analysis and manipulation of Perl source code in a structured manner.

It has been 2.75 years since the last PPI release, v1.218, so we're on a curve of shortening the gaps. ;)

Thanks to the efforts of many contributors to PPI, the support of the people at the Perl Toolchain Summit, the sponsors of the PTS, and specifically Matthew Horsfall (alh) (WOLFSAGE) i have been able to confidently release again after years spent grappling with overwhelming amounts of fixes to untested behavior, often with mutually conflicting results.

Particular thanks goes to the Sponsors for the Perl Toolchain Summit 2017:

Booking.com, ActiveState, cPanel, FastMail, MaxMind, Perl Careers, MongoDB, SureVoIP, Campus Explorer, Bytemark, CAPSiDE, Charlie Gonzalez, Elastic, OpusVL, Perl Services, Procura, XS4ALL, Oetiker+Partner.

Without the support of all of these people and companies this release would not have happened.

The highlights of this release are:

unit tests for many parts, both passing and TODO

many documentation fixes

many parsing fixes

various fixes to the behaviors of methods

removal of problematic dependencies

do not expect '.' in @INC

added ->version method to PPI::Statement::Package

remove unused PPI::Document->new timeout feature

More details are available in the Changes file in the release itself: https://metacpan.org/release/MITHALDU/PPI-1.222

If you, or the modules you use, depend on PPI, please test how this new version runs with your software.

Of particular note is a change in the release process enabled by the PTS and Matthew Horsfall. Originally releasing PPI required notifying a great many people of the availability of a new release and awaiting the results of their own tests. Matthew provided me with a tool that allows smoking the modules depending on a dist against various versions of it with great ease, so PPI has already been tested against all of its first-level dependents and all the Perl::Critic::* modules. This process has also already identified a problematic fix which has been held back until Perl::Critic can address it.