It is with a huge sigh of relief that I am glad to officially announce the release of PPI 1.000, the Perl document parser.
For me personally, it represents quite possibly the hardest and most complex piece of coding I've ever had to do and many thousand hours of work. Not to mention the number of hours spent banging my head against a wall trying to deal with the evils of Perl's syntax.
But now it's done, and meets all of my original milestones. These include a complete and stable Perl Document Object Model, 100% "Round Trip" safety, a DOM tree struture implemented in a simple, high performance and completely leak proof way, a primary API designed around convenience and Perl's DWIM principles, and a set of elegant and extendable/pluggable APIs for handling Queries, Transformations and Normalisation.
PPI is going to stay as it is for a while, so that the community as a whole has time to kick the tires, take it for a drive, and start to create new and interesting things I haven't thought of yet.
Specifically, I'm looking at a 3 month shakedown period. During this time we should continue to see point releases, but I won't be adding any major new features in the PPI core.
In terms of performance, I'd like to call for volunteers to help work on PPI::XS, the PPI accelerator.
It's design is well fleshed out now, and we can re-implement some of the more critical parts of PPI safely and incrementally, one function at a time.
Anyone interested in this, or in PPI in general can join the parseperl-discuss mailing list over at the Parse::Perl project page on SourceForge.
For the time being though I expect most of the activity to be by external authors in the PPIx:: and Perl:: namespaces.
Some of these project should start to appear over the next few days or weeks now we have a final release, and include a new release of the Proton CE Perl editor with embedded PPI support, more variation in syntax highlighting modules, Dan Brooks' PPIx::Analyze, Storable-based Document caches, and a number of other packages that will start to take towards to the next major goal of a refactoring Perl editor.
Although it took a new definition of "parse", perl is now no longer the only thing that can parse Perl. So I guess now it's over to you guys. Have fun, and enjoy!