develooper Front page | perl.perl5.porters | Postings from November 2011

Re: what's "use VERSION" all about?

Thread Previous | Thread Next
From:
Ricardo Signes
Date:
November 29, 2011 07:21
Subject:
Re: what's "use VERSION" all about?
Message ID:
20111129152125.GB11678@cancer.codesimply.com
* 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


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About