ETOOBUSY đ minimal blogging for the impatient
A couple thoughts about Perl 7
TL;DR
A couple thoughts about Perl 7.
NOTE the link to Perl 7 is to a post by R. Signes on the Perl Steering Commitee. Probably not the best link to put, but itâs what got me think about it.
Iâve never been involved with Perl development. Maybe I tried to send a few documentation patches that got rejected, which of course was wrong đ
So, I can offer the point of view of one:
- amateur (little projects, mostly for personal or side-work stuff);
- eager to remain adequately educated (reading about the good and the bad sides of things);
- enthusiast (itâs fun!!!)
user of Perl (5).
The Principle of Least Surprise
The Principle of Least Surprise more or less guides us to do
stuff (like taking a design decision) that will not confuse people. If
all stable releases of Perl have an even minor version, we would
be much surprised if version 5.35
ever became something for general
use (beyond the fact that the versioning approach is stated clearly).
I skimmed through some of the discussions on Perl 7 but didnât see it cited explicitly. I hope this is because itâs so much ingrained in peopleâs minds that itâs not necessary to put it on the table.
Anyway, this brings us to the following topic.
Semantic Versioning
Semantic Versioning 2.0.0 has the following summary:
Given a version number MAJOR.MINOR.PATCH, increment the:
- MAJOR version when you make incompatible API changes,
- MINOR version when you add functionality in a backwards compatible manner, and
- PATCH version when you make backwards compatible bug fixes.
Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.
Iâm not sure whether Perl 5 stuck to this rule so far, but Iâm inclined to say no because the deprecations did not end up with a major version bump eventually.
Anyway, Perl 5 somehow adopted a looser version of this approach, striving to keep as much backwards compatibility as possible, at the expense of ease of evolution. I think that R. Signesâs post makes it very clear.
Which means: when that â5â is changed to something else, something big is happening.
Putting this together
If the community/steering commitee/whatever wants to go towards a new version of the more âclassicalâ Perl Iâm fine.
If you have to make changes that break compatibility with the past, please do them at the very beginning. Having Perl 7 be the same as Perl 5, but with different defaults, means that youâre confusing people now (a major version upgrade where nothing really changes under the hood?!?) and youâre going to confuse people later (Perl 7.2 broke my code base that was working perfectly with Perl 7.0!).
Unless, of course, youâre planning to go for Perl 8 rather soon and this Perl 7 stuff is only a pivot.
I know that about 15 years of Perl 6 design now put some pressure on Perl 7 to happen fast, but that was an exceptionally big whale and it still takes about 9 months (on average) to deliver a child. So please, take your time and donât end up in a doubly-confusing situation.
JAPH