PPI 1.218 has been released - bug fixes, speed optimizations, tests, doc improvements

On request of Neil Bowers i pushed this release back a day, so now on CPAN Day in 2014 the first update of PPI in 3.5 years has been released to CPAN and will be available on a mirror near you soon.

Since the release candidate only minor changes affecting the release process itself have been made.

The change log has a detailed listing and the git repository is even more detailed (it even has tags if you clone it). That said, the summary of the changes is:

  • a number of fixes to how Perl is parsed, notably around the x operator and some case sensitivity
  • many speed optimizations, allowing PPI to parse big files in reasonable time
  • the 1MB limit is now removed
  • many many doc fixes
  • many more tests for previously untested code
  • PPI is now on Github

I already posted this before too, but it bears repeating: This release has been made possible almost entirely by the contributions of Tom Wyant, Olivier Mengué, David Steinbrunner, Kevin Dawson (bowtie), Matthew Horsfall (alh), massive amounts of work by Mike O'Regan, more help and most importantly the blessing of Adam Kennedy and moral and substantial support by Matt Trout. Thanks to all of you.

Also, thanks to all of you who tested the release candidate and gave me the confidence to do this release.

Lastly, to address a question brought up by Buddy Burden and a few others: How does PPI deal with new syntax? At this point, no decision has been made on that. PPI is currently version-agnostic and simply regards what it parses as a perl document with indeterminate version requirements and global validity. There will need to be decisions made regarding two different kinds of version implications:

  • some syntax will only be parsable by perl executables with a specific version, even without explicit declaration
  • some syntax will change what it parses to, depending on declared version in the source code (see ~~)

PPI has a stated goal of "never die, even if the code is invalid, parse it as far as possible". This means new API features on PPI itself will need to be implemented to sanely handle things. Input in the PPI issues on github is very welcome on this matter.

Please Test: PPI 1.217_01 - bug fixes, speed optimizations, tests, doc improvements

You can get the latest dev release from your closest CPAN mirror, or manually from MetaCPAN:

https://metacpan.org/release/MITHALDU/PPI-1.217_01

After Adam Kennedy made his last release of PPI in February 2011 with 1.215, the contributions of Revision: Tom Wyant, Olivier Mengué, David Steinbrunner, Matthew Horsfall (alh), massive amounts of work by Mike O'Regan, more help and most importantly the blessing of Adam Kennedy, moral and substantial support by Matt Trout, and some work by myself, the first release candidate of PPI in 3.5 years is now on CPAN, soon to be a real release.

The change log has a detailed listing and the git repository is even more detailed (it even has tags if you clone it). That said, the summary of the changes is:

  • a number of fixes to how Perl is parsed, notably around the x operator and some case sensitivity
  • many speed optimizations, allowing PPI to parse big files in reasonable time (the 1MB limit is now removed)
  • many many doc fixes
  • many more tests for previously untested code
  • PPI is now on Github

If you use PPI in any capacity, please test it and let me know what your results are, BOTH bad and good. Bad results preferrably in the github issues.

My expected release time for this is the early european evening on the 15th of August.

If you would like to test it, but need more time, please also let me know. I'm fully willing to push the release date back as far as is needed.

Segfault Fixing for Dummies

Today i tried to rebase my dev branch of OpenGL.pm on the latest changes and found that a segfault in OpenGL::Array was assumed to be fixed, despite still being alive and well. With nothing (haha) better to do i decided to poke at it and see if i could fix it. I foregrounded #xs on irc.perl.org in my IRC client and set to work. My first stumbling block came surprisingly soon:

How to print debug messages in XS?

Since i can't just step through XS in the perl debugger, i had to debug via printing to the command line. However the XS in OpenGL.pm seems to swallow all output to ST…

How to compile DBD::mysql on Windows

Putting this down here both for the public and for myself as a reminder.

I still run ActivePerl v12, both because our production servers are at that version and because i see a lot of windows users at that version and lower. I use CPAN a lot and do tend to find obscure issues that break modules on v12 or cause incompatibilities.

However there's a fairly big stone in the way when going that path, since ActiveState has followed their rolling lockdown policy and with the release of Pumpkin Perl v18 locked the PPM servers for v12 (and below) to the public, leaving them only access…

Do your piece to fix TIOBE or stop talking about it

Many people talk about TIOBE and how it's bad, or irrelevant, or broken, or many other vague descriptors of why it should be ignored.

All people talking about TIOBE miss one crucial point: It is software, it has an algorithm, and it is not "bad", it is buggy. That means it can be fixed.

So either fix it, or stop talking about it.

Here's why you can fix it

The TIOBE algorithm is to search for "[language] programming" on a number of search engines, then apply a weight to the resulting count, b…