On Fri, Oct 9, 2009 at 7:43 AM, David Golden <xda...@gmail.com> wrote:
> 04. Formalize allowed version number formats
>
> Proposal:
>
> Formalize the spec for version numbers as "decimal or normalized
> dotted-integer (leading "v" and at least 3 components).  (Dagolden)
>
> Comments:
>
> * It's not clear whether/how to include alpha versions (with underscores)
>  in the spec as they generally cannot be resolved by the toolchain
>  (Dagolden)

I have mixed feelings about this still.  I'd like to rely on
version.pm's normalization so we don't re-implement it, but I really
don't like it's alpha comparison logic.  I think alpha's should
compare "numerically" without regard for alpha status, which is really
just distribution-level meta information about whether it should be
indexed or not.

Disallowing underscores in META would be a way to enforce this, but
then comparing version in META and version in $VERSION is harder.

> * Version comparison for "greater than" must be both possible and fully
>  described in all possible combinations, as things like Module::Install
>  need to handle duplicate dependency assertions. For example, part of the
>  M:I internals silently assert "requires File::ShareDir 1.23". If the user
>  then manually asserts "requires File::ShareDir v1.24.1" M:I needs to be
>  able to determine which to keep and which to discard.
>  (AdamKennedy)

I agree in principle, but I disagree on "all possible combinations".
We shouldn't try to specify heuristics to deal with the ways people
screw up version numbering.  (e.g. 1.23 => v1.230.0 which is greater
than v1.24.1).   As long as we specify dotted-tuple-with-leading-v or
decimal as allowed formats, we know how to compare those
(notwithstanding 64-bit precision  decimal conversion bugs).  Dotted
tuple without leading v we can assume to be a badly formatted tuple
and we can be liberal.  (*must* emit strict to spec, *may*/*should*
interpret 1.2.3 as v1.2.3)

-- David

Reply via email to