use Perl Log In
Putting the ``Backwards'' in ``Backwards Compatibility''?
Every time we upgrade Perl, it seems that something breaks. Sometimes that something is very small, but occasionally it's large like "@" in strings. Sometimes it's on purpose; usually it isn't. But what is the ideal? What can we -- and users -- reasonably expect from Perl?
This is a subject I'm obviously interested in because I'm working on Topaz, which will become Perl 6 if it works out. And reimplementing a whole language makes breakage almost inevitable. So since some things are going to break, it could be argued that we shouldn't worry about it. And maybe that's true for an upgrade from Perl 5 to Perl 6... In particular, Larry has said that for Perl 6, everything that's officially deprecated in Perl 5 is fair game for deletion.
But there's another perspective that's worth considering. I recently had a mail exchange with a programmer who loves Perl but decided not to use it for his product, because he couldn't rely on every Perl program he writes today continuing to work for the indefinite future on all upcoming versions of Perl.
I think there are three major questions raised by this story.
- Is it appropriate to expect all Perl programs to work forever with all future versions of Perl?
- If not, what does that mean for Perl advocacy? Should we really be encouraging people to use Perl for systems that are deployed far from maintenance programers?
- Would it be worthwhile to resynchronize the documentation and the regression tests so that every documented behavior is tested?
I invite perspectives on these issues from everyone....
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
Full
Abbreviated
Hidden
Loading... please wait.

C? (Score:1, Interesting)
Perl might be in worse shape than C in this regard, but it is something to ponder.
But C can be compiled... (Score:1, Interesting)
Maybe what we're seeing is that byte-compiled Perl is more important for reliability than anything else.
Clean out the cruft (Score:1, Interesting)
However, so what? If someone has some code that won't work in Perl 6, they can keep running perl 5.x indefinitely. It's not like we're taking anything away from anyone. Odds are fairly high that if something breaks, they'd be well advised to rewrite it anyway. I'd rather have a language that was well maintained and up to date, with efficient code, than one that was b
-- Kirby
Re:Clean out the cruft (Score:1, Interesting)
What if a security problem arises with Perl 5 ten years from now. Will we care? Do we care if someone finds a (new) security problem today with Perl 4?
I think it's inevitable that, at some point, bit rot will set in and Perl 5 itself will be deprecated. The key questions are (1) how long that can be delayed, (2) how long we think it should be delayed, and (3) how that should affect what we do and recommend for users.
Re:But C can be compiled... (Score:1, Interesting)
Re:But C can be compiled... (Score:1, Interesting)
A raw count of old binaries doesn't really address the point, IMO, because the whole universe of computing has expanded so quickly that even if all old binaries were still used, they'd be outnumbered by the new ones.
More to the point: For those who have chosen as their goal the creation of code that works for
Re:But C can be compiled... (Score:1, Interesting)
Yes, some people will. And I'd have to say that unless you can compile a Perl program, th
Ten-year-old MPE programs are common (Score:1, Interesting)
Working under MPE, we have a lot of programs compiled 10 years ago which are still happily working every day. I'm pretty sure we even have one or two which were compiled in the 70s and which still run today.
For a shop like ours with lots of inhouse code, the idea that upgrading the language may suddenly cause widespread breakage is a pretty scary thing.
At the very least, getting the test suite as complete as possible so that we can tell people what is going to break is important.
Re:Ten-year-old MPE programs are common (Score:1, Interesting)
If modern MPE is anything like the MPE IV (?) I used in the early 80s, it's extraordinarily stable--just the kind of system you'd expect to be upgraded about once per decade.
I heard a story about an MPE system that got turned off in the middle of a really long COBOL compilation. When the system was repowered, the OS started doing lots of active disk stuff but didn't generate any output. Thinking that it was wedged, the operator write-protected the hard drive in
Can the likelyhood of breakage be classified? (Score:1, Interesting)
Maybe a line should be drawn clearly in the documentation between what you can rely on and what behaviour is considered "undefined" or a "mere side-effect of a particular operation which you really can't rely on".
Hmm. It is an interesting question.
Maybe "Perl" should be defined separately (somehow) from "perl". Much like there a
Re:Can the likelyhood of breakage be classified? (Score:1, Interesting)
We already have some classification of breakage.
Re:Can the likelyhood of breakage be classified? (Score:1, Interesting)
>subroutines without using "&" is asking for trouble.
I thought it was asking for non-avoidance of prototypes and cleaner looking code. Sigh.
Break, Broke, Broken (Score:1, Interesting)
RE: Backwards Compatibility (Score:1, Interesting)
Some thoughts ... (Score:1, Interesting)
Besides, aren't deprecated features the icky stuff like allowing the user to set what the first element of an array is, etc. that really should go away anyhow?
It's true that Perl is now being used in large-scale projects in many cases, sometimes replacing huge chunks of C/C++/Java, but one would suspe
Re:Ten-year-old MPE programs are common (Score:1, Interesting)
The story you tell sounds typical. I was recently talking to a linux fan about the stability of the box and went back and pulled the power loose from our 947. The box, of course, went immediately silent. Then I plugged the power back in. Once the drive spun up, and was active for a short
Re:Can the likelyhood of breakage be classified? (Score:1, Interesting)
CPAN Compatability (Score:1, Interesting)
This is not always the case, especially with a major update like perl 5.6. However, I think making sure things on CPAN don't break is not a worthy goal for perl porters; it is a worthy goal for CPAN authors and CPAN testers [cpan.org].
Oh, and the CGI module ships with perl; I think it is clear that it will a
Re:Can the likelyhood of breakage be classified? (Score:1, Interesting)
I wonder if it might be possible to reverse the current rules someday. It's probably more robust over the long term to default to calling a subroutine with the same name as an operator.
Re:Some thoughts ... (Score:1, Interesting)
Your point about CPAN is well-taken. I think cpan-testers will help a lot.
As for interfacing with C, I'm expecting to create a compatibility layer so many existing XSs can continue to work, albeit with some efficiency hit. Fortunately, writing the equivalent of an XS for Topaz will be a lot simpler than XSs today.
Silent Changes are the Worst (Score:1, Interesting)
I know I don't mind language changes much, as long as there are no silent killers.
Re:But C can be compiled... (Score:1, Interesting)
At work I use Solaris, and we expect things to continue as they've been for quite a long while. At home I use Linux, and I don't get bothered when things stop working. It is a cultural issue. Some people prefer that everything remains stable, even at the expense of new features/functions. I usually prefer to update code and spend the time keeping my software up-to-date if I feel that I'm getting something for it (p6 must be better than p5). If I may (ov
Peoples failings shouldnt hold back development (Score:1, Interesting)
Is it appropriate to expect all Perl programs to work forever with all future versions of Perl?
Well yes and no. I mean that there was a lot of chat in comp.lang.perl.misc [perl.misc] after the release of 5.6.0 that would indicate that people never tested the new version of Perl with their existing programs before going live with the new release - this is quite simply bad practice. People blundering into the installation of a new version of anything without a proper implementation plan deserve everything they get
Re:Can the likelyhood of breakage be classified? (Score:1, Interesting)
Backwards compatibility's a must (Score:1, Interesting)
All the ones that use documented features, yep. It's one of the things that marks a solid, well-engineered piece of sofware
The existence of maintenance programmers is reasonably irrelevant here. Perl's a language, and that's a low-level-enough thi