Am 02.10.2014 14:27, schrieb Ben Boeckel via Digitalmars-d-announce:
On Fri, Sep 26, 2014 at 06:29:19 +0000, Dragos Carp via Digitalmars-d-announce
wrote:
1.2.3.x is an invalid version number. Only 3 group numbers are
allowed [1]. Though you could use prerelease and/or build
suffixes (1.2.3-0w / 1.2.3+0w).
How would you version a library which wraps another with 4 version
components? Enforced semver to the limit that only 3 components are
supported seems a little heavy-handed to me.
--Ben
The idea is to have an interoperable standard - modifying it in any way
would break that, so that we could as well completely invent our own
standard.
The way I see it is that the binding should be considered as
individually versioned. It should usually start at 1.0.0 (maybe X.0.0,
where X is the major version of the wrapped library, if that makes sense
for the original version scheme) and be incremented purely according to
SemVer. The version of the wrapped library can be documented as build
metadata, but that's it.
To me a big argument against supporting something non-standard, such as
a fourth version digit is that it facilitates blindly adopting a
libraries original version scheme, even if that may work in a completely
different way w.r.t. major, minor and patch versions.
But the idea of SemVer is that you can safely specify a version range
such as 1.2.x and be sure to only get bugfixes, or 1.x.x and only get
backwards compatible changes. Many other schemes don't have such
guarantees, so directly translating them would be the a step to chaos.