* David Golden <xdaveg@gmail.com> [2011-11-29T09:13:17]
> On Tue, Nov 29, 2011 at 8:54 AM, Ricardo Signes
> <perl.p5p@rjbs.manxome.org> wrote:
> > I look forward to feedback on this.
>
> Thank you for taking the time to lay out all those issues and your
> thoughts on them. It seems fairly reasonable to me on first read.
>
> My one (hopefully) useful thought is that we should make this legal:
>
> use 5.x.y ();
Eerie! Were you around when I talked about this? I have also wanted this, and
think it's got a lot of value. I even wrote it up in a draft, after talking
about it a lot with a few people.
Here is the case I was worried about:
use 5.20.0 ();
Works great in 5.20! But in 5.24, 5.20 retroactively has "old_strings" feature
added, and now you don't ge tit.
Of course, you *do* get it if it's in the :default feature set. So the real
question is: will we have "backcompat" features that are *not* in the default
group? If yes, this becomes a problem in the above case.
Of course, it's also a case if you've written:
{ use 5.20.0; }
Also, what does this mean:
use 5.10.0 qw(say);
You're only telling feature to get the "say" feature, not the "legacy_ints"
feature. Are backcompat / default-group features only reset by importing a
version group? That is:
use 5.10.0; # -> require 5.10.0; feature->unimport; feature->import(':5.10');
use 5.10.0 qw(say); # -> require 5.10.0; feature->import('say');
(This is not a problem strictly limited to (use VERSION LIST) though. It's
there regardless, to a significant extent.)
I think a bit more tweaking about the meaning of these pragmata / imports is
needed -- but I still think this is the right track.
I also like that this syntax got us:
use 5.16.0 ':5.10';
# I need the bugfixes to globs from 5.16, but I only expect the keywords from
# 5.10, not eval_bytes etc
--
rjbs
Thread Previous
|
Thread Next