Questions tagged [semantic-versioning]

De-facto standard for using multi-part version numbers like {major}.{minor}.{patch-level} followed optionally by pre-release labels.

SemVer defines a de-facto standard for managing multipart doted version numbers in the form:

{major-version}.{minor-version}.{patch-level} 

The version number can be followed by a pre-release label.

Examples:      0.3.0      development version before any initial release
               1.0.0      first public release
               2.1.155    release with a patch level 
               3.0.0-rc1  pre-relese candidate for next major version

SemVer was originally defined for managing versions of software providing a public API, with the intent to improve component dependency management.

The numbering scheme is broadly used, including with adapted semantics for software without public API.

125 questions
70
votes
1 answer

How does semantic versioning apply to programs without API?

In http://semver.org/ — which in my perception seems to be the most widely used convention in versioning — it is recommended to increase the major version number when a change that breaks/modify the API is introduced. There are two related scenarios…
user148056
25
votes
3 answers

How to change the semantic version number when reverting the last major change

I am trying to plan a system which validates the compability of different components by comparing their semantic versioning number, especially the major release number (since it indicates API changes and backwards compability). I came across the…
Josef
  • 387
11
votes
3 answers

Is a breaking change bug fix a semver patch or a major?

Your package has a bug. Its API in some scenarios doesn’t follow the documentation and the intended behaviour. It has been that way since it was v1.0.0. You fix it to match the documentation. Should the next release be: Major / 2. Minor / 3.…
7
votes
2 answers

Semantic Versioning

If a change compiled/built but the semantics were different would it be considered a major change? For example, suppose a time string returned was the same format but now was CET rather than, say, IST and that interpreting it as IST now produced…
KDW
  • 79
5
votes
1 answer

Should I treat additional linter restrictions as breaking backwards compatibility?

I'm maintaing a linter library, so this it's basically a set of rules checked against some code one can pass to it. Say, we have rule A which checks some set of cases. Now imagine that some commit extends this set - by extend I mean that the…
shabunc
  • 2,414
3
votes
3 answers

In SemVer, am I allowed to change the in-practice behaviour of undefined behaviour usages

I maintain a small (tiny!) .NET library. It has a few ill-defined edge cases, which I call out explicitly in the docs. Places, where the "correct" behaviour is not self-evidently well-defined, so I explicitly said For invocations like this, the…
Brondahl
  • 139
2
votes
2 answers

How do I properly apply semantic versioning if I have more than three components in my version?

I am preparing a software package for internal consumption in my organization. It will be published on our internal non-public npm feed. The used technology (npm) requires me to adhere to semantic versioning by format, though I would also like to…
F-H
  • 131
2
votes
2 answers

How to bump version (SemVer conform) after updating underlying database

I have a service that uses a package which is basically just a wrapper around an ElasticSearch index. I had to update the index as new data is added on a yearly basis. The source of the data needs to be added to the wrapper, which means releasing a…
TomMP
  • 131
1
vote
1 answer

How do deal with bugs in semantic versioning introduced in old branches

My question relates to semantic versioning (specifically as specified here). Say I have some feature I introduced in version 1.10.0 and then some time later (let's say the project has advanced to version 1.50.0 for the sake of argument) I discovered…
tom
  • 129
1
vote
1 answer

Is adding support for another operation system a minor version or a patch?

Let's say I use Semantic Versioning for a my project. I'm developing it under FooOS, but the language uses virtual machine(either interpreted language or bytecode based) so any operation system can run it. The thing is, the project interacts heavily…
Idan Arye
  • 12,077
0
votes
6 answers

Should modifying a hash function be considered a breaking change?

Semver specifies to update the major version on a backwards incompatible change. Would modifying the behavior for the hash function of a custom type fall under this category? I asked a couple friends, and they mostly generally agreed that it…
0
votes
2 answers

Can a library reach v1.0 when its dependencies haven't?

Some widely used libraries are still versioned 0.x, which under semantic versioning, means they might break the API at any time. Examples of such libraries: numba v0.46, 1.2 million downloads on conda-forge pandas v0.26, 6.7 million…
gerrit
  • 1,090
  • 1
  • 8
  • 21
0
votes
1 answer

How does a software engineer version two minor updates at the same time?

In a web app I am building, I might finish two distinct minor features at the same time: Implementation of a new web page, and implementation of the notification bar. After merging both of these into master on GitHub, and resolving any existing…
Marvin
  • 195
0
votes
1 answer

Does doc comments count as declaring a public API?

I've been reading about semantic versioning. Software using Semantic Versioning MUST declare a public API. This API could be declared in the code itself or exist strictly in documentation. So, does doccomments above the public methods of my…
Adinan
  • 21