[EMAIL PROTECTED] writes:

>  Saying C<1.2.1> specifies an I<exact> match on the version number,
>  not a minimum match.  To match more than one version, put a range
>  operator in parens:
>  
> +    use Dog:ver(1.2.1..*);

That[*0] strikes me as a common trap for the unwary.  In Perl 5 if you
rely on a feature (or bugfix) from a particular version of a module you
can specify that version and the code will continue to work with future
versions -- which is a reasonably pragmatic approach, effectively saying
"until proven otherwise I'll presume that any future releases of this
module won't break this functionality".

So I fear that people will do the same thing in Perl 6.  Which,
initially, will appear to work.  But then, some months later, somebody
upgrades the installed version of a module (or the program gets deployed
on another computer, which happens to have a more recent version
installed), and suddenly the program will break.

In summary, I feel uneasy about the combination of:

* In many (most?) cases the breakage will be arbitrary, in that the
  module would've worked fine had it been allowed to run rather than
  being stopped by the version-checker.

* It's a change from what was good practice in Perl 5.

* The bug _cannot_ hurt straight away, only at some point in the future
  (and often by actions of somebody who isn't the programmer).

Any of those separately is liveable with, but together it's a bit much!

  [*0]  And I recognize from the lack of leading "+" symbols on the text
  it isn't a recent change; my apologies for not spotting it earlier.

Smylers

Reply via email to