Semantic Versioning: A Guide to Version Numbers in Software

Anton Bendrikov
5 min readJan 23, 2024

After starting a new job as a Software Engineer, one of the things I was tasked with was to create a new Python package publishing mechanism. Package versioning is something I have seen many times before but have never thought about consciously.

How do the package versions work? When should you go from version 0.1.0 to 0.2.0 and when should you change to 1.0.0? Why are there 3 numbers in the first place?

In the ever-evolving landscape of software development, version numbers play a crucial role in communicating changes, updates, and compatibility. One widely adopted standard that aims to bring clarity and order to versioning is Semantic Versioning, often abbreviated as SemVer.

In this comprehensive guide, we’ll explore what Semantic Versioning is, why it is needed, how it works, and provide practical examples to help you navigate version numbers in the realm of software development.

What is Semantic Versioning?

Semantic Versioning is a versioning convention designed to bring meaning and structure to version numbers. It was introduced by Tom Preston-Werner, the co-founder of GitHub, in 2010. The primary goal of SemVer is to communicate changes in software in a standardized and predictable way.

--

--

Anton Bendrikov

🇺🇦 Senior Software Developer working in a Hedge Fund. Write about everything programmy (Python, C++, Erlang...).