SoloVer 2

SoloVer is a simple and expressive versioning specification. Unlike SemVer's three-part versioning system, it uses a single number.

<version_number>[<postfix>]

Versioning Rules

  1. Increments: The version number is incremented for each new release.

  2. Postfixes: Additional information can be appended after the version number, separated by a minus or plus character.

Characters other than the regex above mean parsing the version must stop.

  1. Precedence:

    1. Higher version numbers is after a lower number.
    2. + postfix is after no postfix. Hotfixes.
    3. - postfix is before no postfix. Pre-releases.
    4. Postfixes are sorted alphanumerically.
    5. Longer postfix comes after shorter ones.

Commentary

Ordering example: 0 < 1-alpha < 1-beta < 1 < 1+hotfix1 < 1+hotfix2 < 2-preview < 2 < 3.

Think of calculus: "x minus something" is less than x and "x plus something" is greater than x.

Ordering gotchas because "alphanumerically" is stupid simple:

We intentionally do not try to communicate "backward compatibility" as there is no objective and satisfying definition anyways. As a provider, you should document changes properly. As a user, you should test anyways.

SoloVer is not "semantic" but the semantics of SemVer are limited anyways: API-compatibility is not enough and it is only a promise of unspecified strength.

SoloVer is simple because it uses a single incremented number.

SoloVer is expressive because it offers a way to postfix something after the version number.

Changelog

Alternatives

Thanks to all the lobste.rs comments collecting the alternatives.

a simple and expressive versioning specification