On Tue, Jan 20, 2004 at 12:17:51PM +0100, A. Pagaltzis wrote:
> Perl does not provide for keeping around same-named modules that
> differ in some other way.

That's not true. There are many modules where for example version 1.xx has
one interface and 2.xx has a different interface and then 2.xx where xx < 37
is a slightly different to 2.xx for xx >= 37 and so on.

Unfortunately version number in Perl/CPAN (and for that matter most other
versioning systems) aren't used as usefully as they could be.

Each module has a behaviour/interface version and each of these has a
revision. What most people care about when they say "you need version x.y.z"
is the behaviour/interface version. They're saying you need the version that
does this, that and the other. They almost never care about the revision,
you should just use the latest revision of version x.y.z on the assumption
that it is the one that actually comes closest to implementing the
documented behaviour with the fewest bugs.

It's possible to represent this information in string form quite easily, for
example $IfaceVersion_$Rev would do the job, a typical instance might look
like

2.3.4_57
2.3.4_58
2.3.5_1

which would mean that 2.3.4_58 "is better (less buggy) than but has the same
intention as" 2.3.4_57. 2.3.5_1 does something slightly different from
2.3.4_xx and is not suitable as an upgrade without careful consideration by
the programmer. Unfortunately, this is not how things work at the moment
Perl tools currently think 2.3.5 is higher than 2.3.4 and may think it's ok
to use 2.3.5 where 2.3.4 was requested with possible nasty results.

What this all has to do with names is that in the scheme above, you can
easily stick an author into the version to make 2.3.5-JBLOGGS_33. No need to
extend the module namespace with author prefixes.

Not that this would ever be agreed upon, the old way is ingrained. Modules
will continue to do for example

PREREQ_PM => { Parse::RecDescent => 1.80 }

then fall over because 1.90 satisfies this requirement but is not actually
compatible,

F

Reply via email to