Computing the next SemVer for dlang packages with dsemver

Sönke Ludwig sludwig at outerproduct.org
Wed Oct 21 17:55:00 UTC 2020


Am 21.10.2020 um 17:41 schrieb Guillaume Piolat:
> On Wednesday, 21 October 2020 at 14:47:14 UTC, Robert burner Schadek wrote:
>> Semantic versioning is useful, but 0.x.x versioning is a pointless 
>> loophole. When a piece of D software is published, and it is published 
>> if other people can find it on dub, it is released. And released means 
>> 1.0.0 at least.
> 
> Agree. Or we won't ever have a dependable ecosystem. Please provide 
> guarantees.
> Success of D is success of building upon the ecosystem of libraries.
> 
> Something that people must consider to avoid too much major version tags 
> is:
> - delay breaking changes and pack the breaking change at once
> - **have a small (and agreeable) public API surface**, use private and 
> package identifier that are allowed to change spec
> - provide a changelog to go from a major to another major tag, no one 
> want to read your git commits
> - a system of option using `version` identifier to make something 
> similar to DMDFE's -preview. Configuration to gain compat at the expense 
> of simplicity (option count can grow wildly).

0.x.y vs. 1+.x.y is about the development process/state. Quite often a 
design is not yet fully fleshed out in the beginning and there are many 
incremental changes to the API. If 0.x.y didn't exist, that would simply 
mean that either the project gets more or less stuck with the initial 
(bad) design, or that it quickly increments major versions, effectively 
providing no more stability as in the 0.x.y case.

But otherwise I agree, there are definitely quite a few projects that 
are beyond this stage and should make the jump to 1.0.0 (a few of mine 
included).


More information about the Digitalmars-d-announce mailing list