develooper Front page | perl.perl5.porters | Postings from June 2021

Re: "platforms" and "support"

Thread Previous | Thread Next
Neil Bowers
June 15, 2021 19:44
Re: "platforms" and "support"
Message ID:
Hi Kimoto-san,
> Can you tell me more details about this. I can't understand the meanings. tier is difficult word to understand for me.

I’ll try and describe the problem, and what we want to do.

Perl builds on many different operating systems (OSes). In the hints directory[1] you’ll find 82 hints files, for 70 different named OSes. Beyond a hints file, the OS may be checked with $^O in the testsuite, and there may be #ifdef’s in the C code. And maybe even an object file included in the Perl distribution!

But not all of those platforms are equal. Linux is widely used, and we put a lot of effort into making sure it builds and passes all tests. But for some OSes we don’t even know whether 5.34.0 will build on it – some hints files were last edited years ago.


We want to define a number of "levels" or "tiers" of support. I’ll describe one possibility below, based on what’s in the document I shared[2].

The top tier is those platforms we’d consider "battled-tested", to borrow Curtis’s phrase: Linux, Windows, MacOS, and maybe one or two more? For these platforms we have reliable CI testing whenever something is committed to blead, and core developers have access to them. We consider Perl to be very reliable on these. We’d try and ensure good coverage on CPAN Testers as well, for example.

The next level down is pretty solid, but maybe one or two tests might fail, and maybe not all developer releases might get tested on these platforms. Maybe this is HP/UX, AIX, {Open,Free,Net}BSD, and others? We would like to consider these reliable.

And then we have operating systems where there appears to be support of some kind, but there’s no guarantee. OpenVOS (hints file might be here. Many of the hints files were submitted by a volunteer, and we hope that it works ok. Perl may or may not be reliable.

Any other platform is unknown. I.e. there’s no hint file and no support for it in the code or the tests. Google’s Fuchsia[3] is currently at this level. You may or may not be able to build Perl from source on such a platform.

But it’s not just about the operating system. When Perl was configured, did you turn on threads? 64 bit? longdouble or quadmath? Were you using the default C compiler, or gcc? MacOS built with all the default configuration options may be in the top tier, but with threads or quadmath may be in the 3rd tier.

Why is this useful?

End users might want to know how reliable Perl is on their platform. If they run `perl -v` and it tells them "this is a tier 2 configuration", then we can refer to a doc that explains what that means, and explains the implications in terms of potential reliability.

If a developer release fails a bunch of tests, these tiers help us know how much we should care, and how urgently we should fix the problem. This should help us prioritise.

This model should also let people know what they want to do if they want Perl to be more reliable on their platform. What’s needed to move Fuchsia from tier 4 to tier 3? And what about for tier 2? It will also give us a framework for talking about dropping support. Let’s say there a bunch of hairy code in the internals just for an old operating system, and removing it will make the code cleaner. For example, the hint file is for AtheOS. We can probably drop this, since the OS was discontinued and all support dropped years ago. If a platform is currently tier 1, how quickly should we be allowed to drop it down to 3?

What next?

First we need to agree on the general outline: how many levels are useful, without being too complicated for end users? We then need to agree on the definitions for each level, and once we’ve done that, do a first pass at assigning all known platforms/configurations to a level. We’ll probably argue back and forth on that, and in the process may increase or decrease the number of levels and/or tweak their definitions. And I think it would be helpful if perl -v could tell the user what tier their Perl is on.

Please shout if any of the above isn’t clear, and I’ll try to resolve that.



Thread Previous | Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About