Updated 8 days ago | GitHub

Semantic Versioning

Semantic versioning is a commonly-used system of labeling software versions using sequence-based identifiers to convey the significance of changes since the previous version. Semantic versioning provides users with information to help them understand the changes and to decide when and how to upgrade.

These version numbers are often expressed as a sequence of three numbers separated by periods. The format is: (major).(minor).(patch)

For example, given an existing semantic version number of “4.1.2”:

  • The major version is “4”. Changing it to “5” would indicate backward-incompatible changes to the public API, which can break existing code that depends on it. Per the Semantic Versioning 2.0.0 spec, the size of a new feature does not decide the bump: new functionality that stays backward compatible, however large, is a minor bump. A major release MAY also include minor- and patch-level changes.

  • The minor version is “1”. Changing it to “2” would indicate new, backward-compatible functionality is being added. Per the Semantic Versioning 2.0.0 spec, a minor bump MUST be backward compatible — any change that breaks the public API requires a major version increment instead.

  • The patch version is “2”. Changing it to “3” would indicate backward-compatible bug fixes (including security patches). Per the Semantic Versioning 2.0.0 spec, patch bumps are for bug fixes only — adding new functionality (even a small one) requires a minor bump instead.

Wikipedia: “Software versioning”
Semantic Versioning Spec