Продължете към съдържанието
Начало » Блог » Семантично версиониране (Semantic Versioning)

Семантично версиониране (Semantic Versioning)

Семантично версиониране: Какво е и защо е важно?

Семантичното версиониране (на англ. Semantic Versioning или SemVer) е стандартизиран начин за номериране на версиите на софтуер, който улеснява разработчиците и потребителите да разбират какви промени настъпват между различните версии на даден продукт.


Какво е семантично версиониране?

Семантичното версиониране използва формат от вида:

MAJOR.MINOR.PATCH

Например: 2.5.1

Какво означават числата?

  • MAJOR (главна версия): Се променя при несъвместими промени, които могат да счупят съществуващия код.
  • MINOR (второстепенна версия): Се променя при добавяне на нови функционалности, които не нарушават съвместимостта.
  • PATCH (кръпка): Се променя при поправка на бъгове, без да се добавят нови функции.

Пример

Ако имаш библиотека с версия 1.4.2 и направиш следното:

  • Поправиш бъг → новата версия ще бъде 1.4.3
  • Добавиш нова функция, без да чупиш съвместимост → 1.5.0
  • Направиш сериозна промяна, която не е съвместима с предишната версия → 2.0.0

Защо е важно?

Прогнозируемост

Потребителите знаят какво да очакват от нова версия – дали просто съдържа поправки или включва промени, които може да наложат промени в техния код.

Съвместимост

Системите за управление на зависимости (npm, pip, Composer и др.) използват SemVer, за да определят дали една версия е съвместима с друга.

По-добра комуникация

Екипите и потребителите имат ясен език за обсъждане на промените – „това е MINOR ъпдейт“, „имаме MAJOR breaking change“ и т.н.


Официални правила (SemVer 2.0.0)

  • Версията винаги трябва да има формат X.Y.Z, където X, Y и Z са цели положителни числа.
  • Не трябва да се използват водещи нули (напр. 01.0.0 е невалидна).
  • Предварителни версии и метаданни могат да бъдат добавени:
    • Пример: 1.0.0-alpha, 2.1.0-beta+build123

Какво не е SemVer?

  • Това не е гаранция за качество – версия 1.0.0 може да има много бъгове.
  • Не всички проекти следват SemVer точно – някои използват собствени схеми или “релативно версиониране” (например 2024.05.19).

Примери от практиката

  • Node.js: стриктно следва SemVer
  • Laravel (PHP): използва SemVer за своите основни версии
  • React (JS): обикновено спазва SemVer, но breaking промените понякога се обявяват в MINOR версиите (със силна документация)

Семантичното версиониране е повече от просто номер – това е договор между разработчика и потребителя. Следването на SemVer показва зрялост на проекта, добра документация и мисъл за стабилност.