Семантическое версионирование — это понятный способ нумерации версий ПО, который помогает разработчикам, тестировщикам и пользователям быстро понимать: что изменилось и есть ли риск поломать совместимость.
Формат простой: MAJOR.MINOR.PATCH
Пример: 2.4.7
- MAJOR — меняется, если внесены обратимо несовместимые изменения
Например, удалили старый API-метод или изменили формат ответа сервиса. - MINOR — увеличивается, если добавили новую функциональность без поломки совместимости
Например, добавили новый endpoint, сохранив старые. - PATCH — обновляется при исправлении багов без изменения внешнего поведения API
Например, исправили утечку памяти или некорректную валидацию.
Почему это важно 💡
- упрощает управление зависимостями
- снижает риск неожиданных поломок после обновлений
- делает релизы предсказуемыми для команды и клиентов
- помогает CI/CD и package-менеджерам корректно выбирать версии
Как версионировать правильно:
- Не меняйте версию хаотично
Если изменение ломает совместимость — это всегда новый MAJOR, даже если правка кажется маленькой. - Новая фича — не PATCH
Частая ошибка: выкатывать новый функционал как исправление. Это должен быть MINOR. - PATCH — только безопасные фиксы
Если после «фикса» клиентский код нужно переписывать, это уже не patch-релиз. - До версии 1.0.0 всё нестабильно
Обычно 0.x.x используют для активной разработки, где API ещё может сильно меняться. - Используйте pre-release метки
Если релиз ещё не финальный:
1.3.0-alpha, 1.3.0-beta, 1.3.0-rc.1
Это полезно для тестирования и раннего доступа. 🧪 - Добавляйте build metadata при необходимости
Пример: 1.4.2+build45
Такая метка помогает внутреннему учёту, но не должна влиять на совместимость.
Примеры:
- 1.2.3 → 1.2.4 — исправили баг
- 1.2.3 → 1.3.0 — добавили новый функционал
- 1.2.3 → 2.0.0 — сломали совместимость
Частые ошибки ⚠️
- выпускать breaking changes в minor-релизе
- скрывать новые фичи в patch
- не документировать изменения
- не вести changelog
Хорошая практика: вместе с версией публиковать changelog, где явно указано:
- Added
- Changed
- Fixed
- Removed
Итог: семантическое версионирование — это не просто цифры в релизе, а контракт с пользователем. Если соблюдать правила SemVer, обновления становятся прозрачными, а продукт — зрелым и удобным в поддержке. ✅
👀 Загляните в подборку каналов про IT — там много полезного по разработке, DevOps, архитектуре и карьерному росту.