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)