Schmorp's POD Blog a.k.a. THE RANT
a.k.a. the blog that cannot decide on a name

This document was published 2015-06-06 03:14:18, and since then has not been materially modified.

Stableperl FAQ

This article doubles as the FAQ for stableperl and Canary::Stability, used by many of my modules.

I am using the newest perl release, but I get the message that it is unsupported?

You probably installed one of my modules which use the Canary::Stability module. None of my modules support the standard perl 5.22.0 release - the last stable release supported is 5.20.

Does this mean the module will not work?

No, in most cases, it will work. Currently only Coro will definitely not work with 5.22.0, while most or even all of my other modules will probably still work.

So as long as everything seems to work (and/or the testsuite runs successfully), you are most likely in business and can ignore the warning.

What it does mean, and I am quite serious about this, is that I don't want to hear about problems with perl 5.22.0 or any later release - these are simply not supported. They might work perfectly fine, but you are definitely on your own.

If you have an issue, either downgrade to a supported version (e.g. 5.20.x) or use stableperl.

But I need a 5.22 feature?

Hardly, but don't despair, I maintain a drop-in replacement for perl 5.22.0, called stableperl. It has the tiny required changes to make modules compile again.

See the stableperl article for details.

Why don't you support perl 5.22?

Simply because the new set of perl 5 porters (the people maintaining the standard version of perl 5) have an abysmal track record of providing stable releases. They ignore the long-standing policy of keeping compatibility to existing code, and regularly break dozens or even hundreds of modules in new releases, often at a whim, stating they break things as they wish.

I plan to write something in more detail about this, using references, but at the moment, I am too depressed by this and in any case, I have to save perl, so stay tuned for a later article on this subject.

What is stableperl?

This is explained better in the stableperl article.

What is Canary::Stability?

This is a module that is used by many of my modules during configuration time (when you invoke Makefile.PL). It checks compatibility of my modules with your version of perl, and decides whether your configuration is supported or not.

Since this is a policy issue and partially depends on actions taken by other people, I moved this code into a separate module, so it can be changed easily.

Your Canary::Stability module breaks my build process because oif the prompt!

Canary::Stability uses the prompt function of ExtUtils::MakeMaker, which is what many other modules use, and can be overridden by setting the environment variable PERL_MM_USE_DEFAULT=1.

You can also specifically override that prompt by setting PERL_CANARY_STABILITY_NOPROMPT=1 in your environment. The manpage lists even more options.

Should I use Canary::Stability myself?

Probably not - it embodies my own personal policy, or more to the point, my own idea of when the stability canary should alert.

What does the Canary::Stability module name mean?

In older times, miners often took a bird, usually a canary, into the mine. In case of a gas accident, the bird often fell asleep or died first, warning the miners.

Likewise, the Canary::Stability module should warn early about unstable or incompatible perl versions, before big damage has been done.

While this goal has only been partially achieved (the module was implemented only after it should have alerted the first time) it was long time in planning, and the name stuck.