суббота, 20 марта 2021 г.

Модули в Golang: термины

Ограничение сборки (build constraint): условие, определяющее, используется ли исходный файл Go при компиляции пакета. Ограничения сборки могут быть выражены суффиксами имени файла (например, foo_linux_amd64.go) или комментариями ограничений сборки (например, // +build linux,amd64).

Список сборки (build list): список версий модуля, который будет использоваться для команды сборки, такой как go build, go list или go test. Список сборки определяется из файла go.mod основного модуля и файлов go.mod в транзитивно необходимых модулях с использованием минимального выбора версии. Список сборки содержит версии для всех модулей в графе модулей, а не только тех, которые относятся к конкретной команде.

Каноническая версия (canonical version): правильно отформатированная версия без суффикса метаданных сборки, кроме +incompatible. Например, v1.2.3 является канонической версией, а v1.2.3+meta - нет.

Текущий модуль (current module): синоним основного (main) модуля.

Файл go.mod: файл, который определяет путь к модулю, требования и другие метаданные. Появляется в корневом каталоге модуля.

Путь импорта (import path): строка, используемая для импорта пакета в исходный файл Go. Синоним пути к пакету.

Основной (main) модуль: модуль, в котором вызывается команда go. Главный модуль определяется файлом go.mod в текущем или родительском каталоге.

Основная версия (major version): первое число в семантической версии (1 в v1.2.3). В выпуске с несовместимыми изменениями необходимо увеличить основную версию, а для вспомогательной (minor) версии и версии исправления (patch) необходимо установить значение 0. Семантические версии с основной версией 0 считаются нестабильными.

Подкаталог основной версии (major version subdirectory): подкаталог в репозитории управления версиями, соответствующий суффиксу основной версии модуля, в котором может быть определен модуль. Например, модуль example.com/mod/v2 в репозитории с корневым путем example.com/mod может быть определен в корневом каталоге репозитория или в подкаталоге основной версии v2.

Суффикс основной версии (major version suffix): суффикс пути к модулю, соответствующий номеру основной версии. Например, /v2 в example.com/mod/v2. Суффиксы основной версии требуются в версии 2.0.0 и новее и не допускаются в более ранних версиях.

Выбор минимальной версии (MVS, minimal version selection): алгоритм, используемый для определения версий всех модулей, которые будут использоваться в сборке.

Второстепенная версия (minor version): второе число в семантической версии (2 в v1.2.3). В релизе с новой обратно совместимой функциональностью необходимо увеличить второстепенную версию, а для версии исправления (patch) необходимо установить значение 0.

Модуль (module): набор пакетов, которые выпускаются, контролируются версиями и распространяются вместе.

Кеш модулей (module cache): локальный каталог, в котором хранятся загруженные модули, расположенный в GOPATH/pkg/mod.

Граф модуля (module graph): направленный граф требований к модулю, основанный на основном модуле. Каждая вершина в графе - это модуль; каждое ребро является версией оператора require в файле go.mod (при условии, что операторы replace и exclude в файле go.mod основного модуля).

Путь к модулю (module path): путь, который идентифицирует модуль и действует как префикс для путей импорта пакетов внутри модуля. Например, "golang.org/x/net".

Прокси модуля (module proxy): веб-сервер, реализующий протокол GOPROXY. Команда go загружает информацию о версии, файлы go.mod и zip-файлы модуля с прокси-серверов модуля.

Корневой каталог модуля (module root directory): каталог, содержащий файл go.mod, определяющий модуль.

Подкаталог модуля (module subdirectory): часть пути к модулю после корневого пути репозитория, которая указывает подкаталог, в котором определен модуль. Если не пусто, подкаталог модуля также является префиксом для тегов семантической версии. Подкаталог модуля не включает суффикс основной версии, если он есть, даже если модуль находится в подкаталоге основной версии.

Пакет (package): набор исходных файлов в одном каталоге, которые скомпилированы вместе.

Путь к пакету (package path): путь, который однозначно определяет пакет. Путь к пакету - это путь к модулю, соединенный с подкаталогом внутри модуля. Например, "golang.org/x/net/html" - это путь пакета для пакета в модуле "golang.org/x/net" в подкаталоге "html". Синоним пути импорта.

Версия исправления (patch version): третье число в семантической версии (3 в v1.2.3). В релизе без изменений в общедоступном интерфейсе модуля версия исправления должна быть увеличена.

Предварительная версия (pre-release version): версия с дефисом, за которой следует ряд идентификаторов, разделенных точками, сразу после версии исправления, например v1.2.3-beta4. Предварительные версии считаются нестабильными и не считаются совместимыми с другими версиями. Предварительная версия сортируется перед соответствующей версией выпуска: v1.2.3-pre предшествует v1.2.3.

Псевдоверсия (pseudo-version): версия, которая кодирует идентификатор ревизии (например, хеш коммита Git) и временную метку из системы контроля версий. Например, v0.0.0-20191109021931-daa7c04131f5. Используется для совместимости с немодульными репозиториями и в других ситуациях, когда версия с тегами недоступна.

Версия релиза (release version): версия без суффикса предварительного выпуска. Например, v1.2.3, а не v1.2.3-pre.

Корневой путь репозитория (repository root path): часть пути к модулю, соответствующая корневому каталогу репозитория системы управления версиями.

Отозванная версия (retracted version): версия, от которой не следует полагаться либо потому, что она была опубликована преждевременно, либо потому, что после публикации была обнаружена серьезная проблема.

Семантический тег версии (semantic version tag): тег в репозитории управления версиями, который сопоставляет версию с определенной ревизией.

Каталог vendor (vendor directory): каталог с именем vendor, который содержит пакеты из других модулей, необходимые для сборки пакетов в основном модуле. Поддерживается go mod vendor.

Версия: идентификатор неизменяемого снимка (snapshot) модуля, записанный буквой v, за которой следует семантическая версия.


Читайте также:


Комментариев нет:

Отправить комментарий