Semantic Versioning
External
Internal
Overview
Semantic versioning means attaching meaning to a version label. The version label is used to communicate how the piece of software it is attached to changed in relation to other versions of the same piece of software. The essential components of a semantic versioning-compliant version label are:
<major>.<minor>.<patch>[-pre-release-label][+build-metadata]
Concepts
Public API
The semantic versioning-compliant version labels carry meaning about the public API of the piece of software they are attached to. The public API describes how the software is consumed by its clients.
Major Version
The major version component is used to indicate backward incompatible public API changes.
The major versions start at 0, which means that the software is in development phase and no guarantees can be made about the stability and the backward compatibility of of the public API. The major version is set to 1 (and consequently minor and patch versions to 0.0) when the software is first released publicly. From that moment on, the major version is incremented when the a version that comes with backward-incompatible public API changes is released. When the major version is incremented, the minor version and the patch version are both reset to 0.
Minor Version
The minor version component is used to indicate backward compatibly functionality additions.
When the minor version is incremented, the patch version is reset to 0.
Patch
Pre-Release Version
Build Metadata
Version Lock
Version Promiscuity
Versioned Artifact Immutability
https://semver.org/#spec-item-3