Перейти к содержимому
4 / 15

Семантическое версионирование и суффикс v2: почему мажорная версия попадает в путь импорта

Go требует семантического версионирования и трактует его буквально: мажорная версия меняет путь импорта. Модуль example.com/lib версии v2 и выше обязан объявляться как example.com/lib/v2, и импортироваться так же. Правило называется «импорт совместимых версий»: если путь одинаков, версии обязаны быть совместимы, а раз несовместимы — путь должен отличаться. Практическая ценность в том, что v1 и v2 становятся разными модулями и могут сосуществовать в одном графе; иначе алгоритм выбора минимальной версии, оставляющий по одной версии на модуль, привёл бы к неразрешимому конфликту. Версии v0 считаются нестабильными: ломать API в них разрешено, суффикс не нужен. Есть и практические следствия: тег в репозитории для v2v2.0.0, а сам модуль либо лежит в подкаталоге v2/, либо имеет /v2 в директиве module на ветке. Псевдоверсии вида v0.0.0-20260831... появляются, когда тега нет вовсе.

Семантическое версионирование и суффикс v2: почему мажорная версия попадает в путь импорта | JScriptiser