Fundamentals 7 min read

Semantic Versioning Guidelines and Version Numbering Rules

This article explains the diverse version‑numbering styles of common software, highlights the problems caused by inconsistent naming, and provides a detailed guide to Semantic Versioning 2.0.0/3.0.0 rules, including major, minor, patch increments, pre‑release and development identifiers, and common modifier terms.

Java Captain
Java Captain
Java Captain
Semantic Versioning Guidelines and Version Numbering Rules

First, look at some common software version numbers:

Linux Kernel: 0.0.1, 1.0.0, 2.6.32, 3.0.18… When expressed as X.Y.Z, an even Y indicates a stable version, an odd Y indicates a development version.

Windows: windows 98, windows 2000, windows xp, windows 7… The biggest characteristic is chaotic and irregular.

SSH Client: 0.9.8.

OpenStack: 2014.1.3, 2015.1.1.dev8.

From the above we can see that different software version‑number styles vary; as system scale grows and dependencies increase, a lack of a consistent naming scheme can cause Dependency Hell. Therefore, when releasing a version, the version number naming should follow a set of rules. Semantic Versioning 2.0.0 defines a simple set of rules and conditions to constrain version configuration and growth. This article selects and organizes version‑naming guidelines based on Semantic Versioning 2.0.0 and 3.0.0.

Version Number Naming Guidelines

The version format is X.Y.Z (also called Major.Minor.Patch). The increment rules are:

X represents the major version; it must be incremented when API compatibility changes.

Y represents the minor version; it must be incremented when new features are added without affecting API compatibility.

Z represents the patch version; it must be incremented for bug fixes that do not affect API compatibility.

Detailed rules are as follows:

X, Y, Z must be non‑negative integers without leading zeros and must increase numerically, e.g., 1.9.0 → 1.10.0 → 1.11.0.

A version 0.Y.Z indicates the software is in early development and the API may be unstable; 1.0.0 indicates a stable API.

When API compatibility changes, X must be incremented and Y and Z reset to 0; when adding functionality (without affecting API compatibility) or when the API is deprecated, Y must be incremented and Z reset to 0; when fixing bugs, Z must be incremented.

Pre‑release versions indicate instability and possible compatibility issues; format: X.Y.Z.[a‑c][positive integer], e.g., 1.0.0.a1, 1.0.0.b99, 1.0.0.c1000.

Development versions are often used in CI/CD pipelines; format: X.Y.Z.dev[positive integer], e.g., 1.0.1.dev4.

Version ordering compares major, then minor, then patch numerically (e.g., 1.0.0 < 1.0.1 < 1.1.1 < 2.0.0). For pre‑release and development versions: 1.0.0.a100 < 1.0.0, 2.1.0.dev3 < 2.1.0; when letters are present, ASCII ordering applies (e.g., 1.0.0.a1 < 1.0.0.b1).

Note: Once a version is published, its contents must not be altered; any changes require a new version release.

Some Modifier Terms

alpha: internal version

beta: test version

demo: demonstration version

enhance: enhanced version

free: free version

full version: complete or official release

lts: long‑term support version

release: release version

rc: release candidate, soon to become official

standard: standard version

ultimate: flagship version

upgrade: upgraded version

Original source: http://t.cn/REyxWlO

Java Group QR
Java Group QR

Java Group

WeChat ID: javatuanzhang

Daily sharing of Java technical knowledge

QR Code
QR Code

Long press to recognize QR code

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

release-managementsemantic versioningdependency hellsoftware versioningversioning guidelines
Java Captain
Written by

Java Captain

Focused on Java technologies: SSM, the Spring ecosystem, microservices, MySQL, MyCat, clustering, distributed systems, middleware, Linux, networking, multithreading; occasionally covers DevOps tools like Jenkins, Nexus, Docker, ELK; shares practical tech insights and is dedicated to full‑stack Java development.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.