Semantic Versioning
Version numbers follow the format Major.Minor.Patch (e.g., 1.14.10 ).
Stable Software (1.0.0+)
Change type Bump Reset Example
Breaking change Major Minor and Patch to 0 1.14.10 -> 2.0.0
New feature or backwards-compatible behavior change Minor Patch to 0 1.14.10 -> 1.15.0
Bug fix or security fix (backwards-compatible) Patch Nothing 1.14.10 -> 1.14.11
Reserve patch releases exclusively for fixes. Lack-of-feature is not a bug — use minor releases for those.
Consumer guarantee: newer releases within the same major version are safe to upgrade to.
Unstable Software (0.x.x)
Software with major version 0 is unstable — no stability commitment yet.
Change type Bump Example
Bug fix or security fix Patch 0.3.2 -> 0.3.3
Everything else (features AND breaking changes) Minor 0.3.2 -> 0.4.0
-
Start development at 0.1.0 .
-
Release 1.0.0 when ready to commit to stability.
Consumer guarantee: fixes available within the same minor version.
Breaking Changes
Semver communicates breaking changes clearly — but does not make them cheap. For popular software with many downstream consumers, partial upgrades create ecosystem fragmentation.
Guidelines:
-
Avoid major version bumps for as long as possible.
-
If a major bump is unavoidable, provide a gradual migration path.
-
Do not treat semver as a license to make breaking changes.