Skip Menu |

This queue is for tickets about the Config-Std CPAN distribution.

Report information
The Basics
Id: 104496
Status: resolved
Priority: 0/
Queue: Config-Std

People
Owner: BRICKER [...] cpan.org
Requestors: liam.gretton [...] gmail.com
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: 0.903



Subject: Use of 'require v5.7.3' causes warning
Date: Mon, 18 May 2015 12:45:51 +0100
To: bug-Config-Std [...] rt.cpan.org
From: Liam Gretton <liam.gretton [...] gmail.com>
In Std.pm there is the following line right near the start: require v5.7.3; # RT#21184 In current Perls this throws a warning: v-string in use/require non-portable at /path/to/Config/Std.pm line 6 Could this be removed now that 5.7 is very old? Or at least changed to use 5.007_003; Regards, Liam
Subject: Re: [rt.cpan.org #104496] Use of 'require v5.7.3' causes warning
Date: Mon, 18 May 2015 11:10:03 -0400
To: bug-Config-Std [...] rt.cpan.org
From: Bill Ricker <bill.n1vux [...] gmail.com>
​Thanks for the report, Liam ! ​ v-string in use/require non-portable at /path/to/Config/Std.pm line 6 Show quoted text
>
​Dropping features from the language: such a good idea. Gracefully warning in deprecation is better than just removing it but still. ​ Show quoted text
> Could this be removed now that 5.7 is very old? Or at least changed to > > ​​ > use 5.007_003; >
Sure, ​one or the other​. We don't want bogus warnings and definitely need to fix this before v.string gets removed entirely (deprecation generally leads to that)! I do want to keep some documentation of our assumed requirement. It's sad that the version# format we switched *from* just before perl-5.6 is now the way to be adequately backwards-compatible to alert the lingering perl-5.6.1's still out in legacy-land that they're not supported. ​(One hopes the Solaris servers with Perl-5.6.0/5.6.1 out in IT legacy-farms are getting retired. When i left "Big IT" two years ago, we still had a few ...) The odds of someone updating modules on such ancient legacy is getting lower and lower -- the whole point of not updating OS or Perl is to not break what isn't broke -- so we could in theory just comment it out, but this is where the YAML metadata gets it, would like to keep some documentation of requirement. -- Bill Ricker bill.n1vux@gmail.com https://www.linkedin.com/in/n1vux
On 2015-05-18 08:10:44, bill.n1vux@gmail.com wrote: Show quoted text
> ​Thanks for the report, Liam ! ​ > > > v-string in use/require non-portable at /path/to/Config/Std.pm line 6 > > ​Dropping features from the language: such a good idea. > Gracefully warning in deprecation is better than just removing it but > still.
The warning says nothing about deprecation. It says it's not portable (i.e. will not work the same across all architectures). See 'perldoc perlport' for more. Show quoted text
> > Could this be removed now that 5.7 is very old? Or at least changed to > > use 5.007_003;
"use 5.007003" will also work just fine everywhere. Show quoted text
> Sure, ​one or the other​. We don't want bogus warnings and definitely need > to fix this before v.string gets removed entirely (deprecation generally > leads to that)!
Again, you're incorrectly assuming this is a deprecation. Show quoted text
> The odds of someone updating modules on such ancient legacy is getting > lower and lower -- the whole point of not updating OS or Perl is to not > break what isn't broke -- so we could in theory just comment it out, but > this is where the YAML metadata gets it, would like to keep some > documentation of requirement.
requires => { ..., perl => '5.007003' } in your Build.PL also suffices.
Subject: Re: [rt.cpan.org #104496] Use of 'require v5.7.3' causes warning
Date: Mon, 18 May 2015 17:43:52 -0400
To: bug-Config-Std [...] rt.cpan.org
From: Bill Ricker <bill.n1vux [...] gmail.com>
Thank you for the clarification, Karen. Show quoted text
> The warning says nothing about deprecation.
I did indeed incorrectly misread the original bug-report's reference to "Modern Perls" as literal not ironic, infering that this was new behavio(u)r and thus part of the march forward. (Chiding me to re-build bleadperl and retest is usually in order, so i jumped to conclusion in the usual but wrong direction.) A reproduction note of what Perl version ellicited the message would have helped. Apparently this is referring to a warning that added in 5.10.0 and removed in 5.10.1. (!!) http://perldoc.perl.org/perl5101delta.html Using perlbrew exec and a variety of vintages, did not see this at all $ perlbrew exec perl -w -e 'use v5.7.3;' and was wondering if this uselessly only appeared on afflicted architectures. But no. I just didn't have a *full* enough set in perlbrew. $ time nice perlbrew --notest install perl-5.10.0 $ perlbrew exec --with perl-5.10.0 perl -w -e 'use v5.7.3;' perl-5.10.0 ========== v-string in use/require non-portable at -e line 1. Bingo. Probably a few dev releases in 5.9.x would have it too, but that's it for non-devel-releases. So this message occurs on exactly one un-patched version of the first modern perl, but not in the patched version stable yet still EOL/EOS version (5.10.1). [ The normal rule is do not use the Dot-Uh-Oh version, ever ! 5.10.0 was less Dot-uh-Oh than 5.6.0 was but ... why would anyone use it today? I do hope Liam found this warning from a use-fatal, all-versions test-report for his modules, not because he's still got a perl-5.10.0 in the lab. ] Show quoted text
> It says it's not portable (i.e. will not work the same across all architectures). > See 'perldoc perlport' for more.
Do you mean the part about | The v-strings are portable only up to v2147483647 (0x7FFFFFFF), that's how far EBCDIC, or more precisely UTF-EBCDIC will go. or | Do not use either the bare result of pack("N", 10, 20, 30, 40) or bare v-strings (such as v10.20.30.40 ) | to represent IPv4 addresses: both forms just pack the four bytes into network order. perhaps ? Neither of which appears relevant to 'use v5.7.3;' and this 'v-string in use/require non-portable' message. 'use' and 'require' ought to be able to compare v-strings correctly on any arch, the compiler knows what it's doing with 'require', unlike with IPv4 addresses. If you do know of an arch where using a either form of v-string in a use (or require) is an arch-problem, e.g. 'use v5.6.3;' or 'use 5.6.3', this warning should be reinstated in bleadperl and perlport updated. But i doubt that's the case. ( I likely would have noticed when i was running DEC ALPHA to have 64-bit Perl available. ) And as long as it's taken to get from v5 to v6, i don't fear Perl version 2-Billion any time soon !-) (That's far from the funkiest thing with EBCDIC ... binary FTP from mainframe can be a real surprise.) According to https://www.mail-archive.com/perl5-changes@perl.org/msg19517.html this message was not an arch portability warning per se, but rather a backward compatibility warning about code "portability" that the ancient 5.005 family (once widely installed in BigIT legacy farms ...) would not process the once-new v5.6.0 v-strings. (And much earlier, 5.005 was even new once; i recall still having Perl 4 for one script, Perl 5.4 for newish stuff, and the newest 5.5 in testing. It's painful to remember before 5.8.8 ...) So this not only is not a real problem now, it wasn't real by the time the warning was added: if a CPAN module with 'use v5.6.0;' fails syntactically in Perl 5.5.x, it should have errored semantically anyway, and mismatch has been sucessfully detected. :-) The only possible harm would be writing 'use v5.5.3;' which would not work on 5.005_003 but *should*; but one shouldn't write that if one doesn't have a 5.5.x in the test suite. This warning would have made sense had it been added in v5.6.0 (and better phrased), but being only added in v5.10.0, it was quickly retracted as non-sensical. Show quoted text
> > > Could this be removed now that 5.7 is very old? Or at least changed to > > > use 5.007_003;
Show quoted text
> "use 5.007003" will also work just fine everywhere.
Since they are semantically identical, yes indeed. The _ is invisible once parsed, it is only an aid to the human writer and reader. (And the _ could be confusingly misplaced to mess with the reader ... use 5.00_70_03; #s till work fine! (Or to denote non-western divisions as 1 CRORE = 1_00_00_000 in India usage, which is a feature.) Show quoted text
> Again, you're incorrectly assuming this is a deprecation.
I'm glad to be wrong :-) . This is much better situation than i mis-understood. Show quoted text
> > ... > > this is where the YAML metadata gets it, would like to keep some > > documentation of requirement.
> > requires => { ..., perl => '5.007003' } in your Build.PL also suffices.
Thank you, that saves me a bit of digging. For this *boring* (trivial) a minimum requirement, that seems like the right place to put it. But since it's only a warning and only is evoked in 5.10.0 *exactly*, it also does not feel high urgency. I'd be interested how impactful this is in Liam's world, Karen's world(s), or elsewhere. -- Bill Ricker bill.n1vux@gmail.com https://www.linkedin.com/in/n1vux
Subject: Re: [rt.cpan.org #104496] Use of 'require v5.7.3' causes warning
Date: Tue, 19 May 2015 07:19:51 +0100
To: bug-Config-Std [...] rt.cpan.org
From: Liam Gretton <liam.gretton [...] gmail.com>
On 18/05/2015 22:44, Bill Ricker via RT wrote: Show quoted text
> Apparently this is referring to a warning that added in 5.10.0 and > removed in 5.10.1. (!!) > http://perldoc.perl.org/perl5101delta.html
Apologies for omitting that info. Yes, the Perl version in use here is indeed 5.10.0. It's what ships in SLES 11 up to at least SP3 and also the forthcoming SP4 by the looks of it. Show quoted text
> I'd be interested how impactful this is in Liam's world, Karen's > world(s), or elsewhere.
Not fatal by any means, it just causes a warning.
On Mon May 18 17:44:28 2015, bill.n1vux@gmail.com wrote: Show quoted text
> [ The normal rule is do not use the Dot-Uh-Oh version, ever ! > 5.10.0 was less Dot-uh-Oh than 5.6.0 was but ... why would anyone > use it today?
I had never heard of the term Dot-Uh-Oh until I read this. I like it! I can’t speak for 5.6.0, but 5.10.0 was one of the buggiest versions ever, that broke everything. Quite unlike 5.24.0, which is quite stable. I do actually use in production.
On Sun Oct 08 15:28:48 2017, SPROUT wrote: Show quoted text
> On Mon May 18 17:44:28 2015, bill.n1vux@gmail.com wrote:
> > [ The normal rule is do not use the Dot-Uh-Oh version, ever ! > > 5.10.0 was less Dot-uh-Oh than 5.6.0 was but ... why would anyone > > use it today?
> > I had never heard of the term Dot-Uh-Oh until I read this. I like it! > > I can’t speak for 5.6.0, but 5.10.0 was one of the buggiest versions > ever, that broke everything.
In fact, it was the bugginess of 5.10.0 and the fact that regressions were not getting fixed fast enough that got me interesting in contributing to perl. Sorry, this is getting a bit off-topic.
Subject: Re: [rt.cpan.org #104496] Use of 'require v5.7.3' causes warning
Date: Sun, 8 Oct 2017 16:52:59 -0400
To: bug-Config-Std [...] rt.cpan.org
From: Bill Ricker <bill.n1vux [...] gmail.com>
On Sun, Oct 8, 2017 at 3:29 PM, Father Chrysostomos via RT <bug-Config-Std@rt.cpan.org> wrote: Show quoted text
> Sorry, this is getting a bit off-topic.
As long as it amuses both of us, off-topic is just fine :-) Show quoted text
>> I had never heard of the term Dot-Uh-Oh until I read this. I like it! >> >> I can’t speak for 5.6.0, but 5.10.0 was one of the buggiest versions >> ever, that broke everything.
IIRC Dot-uh-oh comes from vendor OS revs, not from Perl 5.6.0 or 5.10.0, but it applies ! I forget if I coined it or brazenly swiped the phrase, but I happily use it whenever it applies. Show quoted text
> In fact, it was the bugginess of 5.10.0 and the fact that regressions were not getting fixed fast enough that got me interesting in contributing to perl.
For that, Father, we give thanks. Show quoted text
> Quite unlike 5.24.0, which is quite stable. I do actually use in production.
Yes, since P5 got on a release schedule, the .0's have been pretty solid. Possibly because fewer new features per .0 if more .0s, and not-ready stuff can hold over to next year? But I do see .0 in Production as a DevOps smell, even if it's not a DotUhOh. It suggests the app is running off OS's /bin/perl, so upgrades are out of app's control; or if not, that nobody is doing upgrades. And hence not security patching either. Security patching the prod perl is a lot easier if patching is routine ! To avoid Perl breakage when OS is upgraded, and to allow patching to stay current, i recommend to my IT clients to use /bin/perl (or /usr/bin/perl whichver) only for things for which 'perl -v' didn't matter (simple scripts, no non-Core dependencies) and to carry their own $app/bin/perl when it did, e.g. non-core XS modules where a change in ABI brought by a OS upgrade would break the site_perl library (DBI/DBD or what-have-you). -- Bill Ricker bill.n1vux@gmail.com https://www.linkedin.com/in/n1vux