It is with a huge sigh of relief that I would like to officially
announce the release of PPI 1.000, the Perl document parser.
http://search.cpan.org/~adamk/PPI-1.000/
For me personally, it represents many thousand hours of work and quite
possibly the hardest and most complex piece of coding I've ever had to
do. Not to mention the number of hours I've 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 structure 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 or pluggable APIs for handling Document Queries,
Transformations and Normalisation.
What now?
PPI is going to stay frozen as it is for a while, so that the community
can have plenty of time to kick the tires, take it for a drive, and
start to create new and interesting things on top of it.
Specifically, I'm going to be setting a 3 month shakedown period. During
this time you should continue to see point releases for POD changes and
any small bugs, but I won't be adding any new features to the PPI core.
In terms of it's performance, at this time I'd like to call for
volunteers to help work on PPI::XS, the PPI accelerator.
Its design is well fleshed out, and we are able re-implement some of the
more time-consuming parts of PPI safely and incrementally, one function
at a time. However, implementations only exist for constants and a few
accessors, and it's time to bring in some better XS-fu to start to deal
with the progressively larger functions.
Anyone interested in this, or with an interest in PPI in general can
join the parseperl-discuss mailing list at the "Parse::Perl Project"
page on SourceForge. http://sourceforge.net/projects/parseperl
For now though I expect most of the PPI-related activity to be by
external authors creating packages in the PPIx:: and Perl:: namespaces.
Some of these project should start to appear over the next few days and
weeks now we have a final release, and include a new release of the
Proton CE Perl editor with PPI support embedded in, more variation in
syntax highlighting modules, Dan Brooks' PPIx::Analyze, Storable-based
Document caches, and a number of other analysis packages that will start
to take us towards to the next major goal of a refactoring Perl editor.
Although it took a new definition of "parse", I hope we can now say that
perl is no longer the only thing that can parse Perl.
So I guess now it's over to you guys. Have fun, and enjoy! :)
Adam K