End users see version strings like this:
"1.0.0" ^ ^ ^ | | | | | '- micro version number | '- minor version number '- major version number
The first number is "major version number". The second number is the "minor version number" -- it gets bumped whenever we make a new release that adds or changes functionality. The third version is the "micro version number" -- it gets bumped whenever we make a new release that doesn't add or change functionality, but just fixes bugs (including performance issues).
Early-adopter end users see version strings like this:
"1.0.0a1" ^ ^ ^^^ | | ||| | | ||'- release number | | |'- a=alpha, b=beta, c=release candidate, or none | | '- micro version number | '- minor version number '- major version number
The optional "a" or "b" stands for "alpha release" or "beta release" respectively. The number after "a" or "b" gets bumped every time we make a new alpha or beta release. This has the same form and the same meaning as version numbers of releases of Python.
Developers see "full version strings", like this:
"1.0.0a1-dev-r55" ^ ^ ^^^ ^ ^ | | ||| | | | | ||| | '- nano version number | | ||| '- "dev" if this is a development version (not a release version) | | ||'- release number | | |'- a=alpha, b=beta, c=release candidate or none | | '- micro version number | '- minor version number '- major version number
The presence of "-dev" means that this is a development version. There are no guarantees about compatibility, etc. This version is considered to be more recent than the version without this field (e.g. "1.0.0a1").
The next number is the "nano version number". It is meaningful only to developers. It gets generated automatically from darcs revision control history by "make-version-from-darcs-history.py". It is the count of patches that have been applied since the last version number tag was applied.