On Sat, Jul 25, 2009 at 06:58:42AM -0700, John Peacock wrote: > On 7/25/09 1:52 AM, Dave Mitchell wrote: >> In general we try strongly to avoid making code that works suddenly start >> emitting warnings under later releases of the same maintenance branch. >> >> However, I don't understand what the particular issue of using v-strings >> to initialize version objects is?
You didn't answer this question. I am generally ignorant of the specifics of version and version strings. I don't understand in general why bare 1.2.3 strings are deprecated (I'm sure there's a good reason for it, I'm just not familiar with it). And in particular, I don't understand why its particularly egregious to use one in version->new(). Understanding the latter would give me a clearer insight as to whether to allow such a warning in maint. >> But whatever, I really don't want a new warning for 5.10.1 at this very >> late stage in the game. >> >> > None of the third-party modules in the core changed their warning > profile between 5.10.0 and 5.10.1-to-be? That's not what I said. I said "at this late stage in the game". i.e. the one thing I'm not going to go is to add a new warning to a core pragma *one day* before RC1 is released. > I fully support not making the > bare v-string code warn except in blead and hence for 5.12.0. I'd > really rather keep the warning in version.pm just the same. > > However, it is your call completely - I just added the warning to > bleadperl (but didn't update any tests). Outside of the version.pm > tests, there was only a single warning from t/pod/diag.t and a couple of > warnings seen from the Module::Build tests (which would also have to be > adjusted since it depends on version.pm and expectations have changed). > > I'm traveling today, so I can do whatever needs doing when I get home > tonight. I'd prefer to apply this change: > > diff --git a/util.c b/util.c > index 0d524e9..f088e73 100644 > --- a/util.c > +++ b/util.c > @@ -4260,8 +4260,12 @@ Perl_scan_version(pTHX_ const char *s, SV *rv, > bool qv) > if ( alpha && saw_period && width == 0 ) > Perl_croak(aTHX_ "Invalid version format (misplaced _ in number)"); > > - if ( saw_period > 1 ) > + if ( saw_period > 1 && qv == 0) { > qv = 1; /* force quoted version processing */ > + if(ckWARN(WARN_SYNTAX)) > + Perl_warner(aTHX_ packWARN(WARN_SYNTAX), > + "v-string without leading 'v' deprecated for version objects"); > + } > > last = pos; > pos = s; > > plus the test fixups to blead and then have that go into maint. If you > aren't comfortable with that, I'll just update just the POD and you can > pull that. I'm inclined to make an immediate CPAN release after 0.77 > (to match what is in 5.10.1) to include that warning, however, because I > agree with David Golden that the clarity it provides is valuable... Well, nearly four weeks ago I pulled from blead into maint a "version 0.77", which is what I understood was equivalent to what would eventually be released onto CPAN as 0.77, less the pod which still needed writing. So what I'm hoping is that sometime soon a "0.77" appears on CPAN, which contains no functional changes from blead, just pod additions. Someone then pulls that into blead, then I pull it into maint, and it gets released as 5.10.1. Then, you add extra stuff to blead, release it as 0.78 etc, and at my leisure I decide whether to incorporate it into maint. Is it possible for you to release a 0.77 without functional changes from blead? If not, what changes are they? And what's the connection with Module::Build? -- Technology is dominated by two types of people: those who understand what they do not manage, and those who manage what they do not understand.