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)

* 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)

* SUPER 1.16 declares some dependencies as the empty string instead of
  zero.  This apparently causes problems for some part of the toolchain.
  We should clarify that empty string (and undef) are not allowed.  I
  believe the toolchain special cases 0 to mean "any" even if a module does
  not define $VERSION, but we should specify that behavior explicitly as
  well.  (Dagolden)

Reply via email to