"2.0!" tip suggested by jez is more confusing than helpful IMO. Anyway, I'd like to have bsmedberg's blessing before this tip appears on a reference article. --Nickolay 09:54, 11 June 2006 (PDT)
A version string consists of one or more version parts, separated with dots.
Each version part is itself parsed as a sequence of four parts:
<number-a><string-b><number-c><string-d>. Each of the parts is optional. Numbers are integers base 10 (may be negative), strings are ASCII.
This doesn't make complete sense to me. If "[e]ach of the parts is optional [in a version part]"... then ALL of the parts are optional (ie, it consists of [0..4] parts).
From this, the version string itself, which consists of one or more version parts, could still be empty, as a version part may consist of 0 parts.
Additionally, I have found that the version part, in practice, must start with a numeric, not an alpha. Or, at least, an all-alpha version part is not allowed. If "each of the parts is optional", then
<string-b> should be a valid version part, with
<number-a><number-c><string-d> being optional. But an extension version string of the format
0.4.3.bs (four parts, final part alpha-only) was recently rejected by AMO as invalid, with no detailed specification given. But
0.4.3bs (three parts, final part alphanumeric, with initial numeric) was accepted.
So, should it be changed to
Each version part is itself parsed as a sequence of four sub-parts:
<number-a><string-b><number-c><string-d>. After the initial
<number-a>, each of the sub-parts is optional. Numbers are integers base 10 (may be negative), strings are ASCII.
(I also added the distinguishing "sub-" prefix for the version-part breakdown).
Or am I mixing up version schemas?