# Каналы релизов {#release-channels}

CLI Tuist поставляется через три канала с разными гарантиями стабильности. Рекомендуемый вариант установки — **stable**, который обновляется медленно: он не продвигается при каждом слиянии новой возможности, поэтому обновление больше не означает поглощение пакета несвязанных изменений. Ранние пользователи по-прежнему могут запускать сборки для каждого коммита на канале **canary**, а канал **release candidate** позволяет командам предварительно тестировать будущую ветку до её перевода в статус стабильной.

## Каналы {#the-channels}

| Канал | Формат версии | Частота обновлений | Разрешается по умолчанию? |
| --- | --- | --- | --- |
| Canary | `X.Y.0-canary.N` (например, `4.201.0-canary.42`) | Каждый коммит в `main` | Нет — требуется явное подключение |
| Release candidate | `X.Y.0-rc.N` (например, `4.200.0-rc.1`) | Создаётся из `main` каждый понедельник, тестируется ~1 неделю | Нет — требуется явное подключение |
| Stable | `X.Y.Z` (например, `4.200.0`, `4.200.1`) | Продвигается каждый понедельник после успешного тестирования | **Да** |

Сборки Canary и Release Candidate публикуются как предварительные релизы. Такие инструменты, как Mise и Homebrew, исключают предварительные релизы при разрешении `latest`, обычной установке или привязке к ветке, поэтому вы попадёте на них только при явном запросе.

### Canary {#canary}

Каждый коммит в `main` публикует сборку canary. Canary всегда представляет собой **следующую невыпущенную минорную версию**: как только ветка выделяется для релиза, `main` переходит к следующей минорной версии (например, с `4.200.0-canary.42` на `4.201.0-canary.1`). Canary — правильный канал для ранних пользователей, которые хотят получать сигналы как можно раньше или проверить, что исправление, которое вы сообщили или внесли, работает должным образом до попадания в стабильную версию.

### Release candidate {#release-candidate}

Когда минорная версия готова к выпуску, её ветка замораживается на защищённой ветке `releases/<major>.<minor>.x` и публикуется как `X.Y.0-rc.1`. Ветка заморожена по функциональности; в неё включаются только критические исправления и исправления регрессий, причём каждое принятое исправление увеличивает номер RC (`-rc.2`, `-rc.3`, …). После успешного завершения периода тестирования ветка переводится в статус стабильной.

### Stable {#stable}

Stable — рекомендуемый канал, на который ссылается вся документация. Стабильная минорная версия (`X.Y.0`) публикуется только после успешного тестирования кандидата в релизы и **не** продвигается при слиянии новых возможностей в `main`. Патчи (`X.Y.1`, `X.Y.2`, …) в стабильной ветке содержат только обратно портированные исправления, но никогда не включают новые возможности.

## Выбор версии {#choosing-a-version}

С помощью [Mise](/en/guides/install-tuist) (рекомендуется):

```bash
mise use tuist@latest              # Latest stable (recommended)
mise use tuist@4.200               # Pin to a stable line; receives backported fixes only
mise use tuist@4.200.1             # Pin to an exact stable patch
mise use tuist@4.201.0-rc.1        # Opt into a release candidate to soak it
mise use tuist@4.201.0-canary.42   # Opt into a specific canary build
```

При использовании Homebrew команда `brew install --formula tuist` всегда устанавливает последнюю стабильную версию; предварительные релизы не распространяются через эту формулу.

## Рекомендуемая стратегия {#recommended-strategy}

1. **Зафиксируйте стабильную ветку**, например `tuist@4.200`. Эта ветка получает только обратно портированные исправления, но не новые возможности, поэтому ежедневные обновления остаются низко рискованными.
2. **Осознанно внедряйте новые возможности.** Когда вы будете готовы к следующей минорной версии, протестируйте её на канале release candidate, а затем перенесите фиксацию на новую стабильную ветку.
3. **Попробуйте canary** в некритичной среде, если вы ранний пользователь и хотите получать сигналы как можно раньше.

## Поддержка и обратное портирование {#support-and-backports}

В любой момент активно поддерживаются две стабильные ветки:

| Ветка | Получает |
| --- | --- |
| Текущая (`X.Y.x`) | Исправления регрессий и уязвимостей безопасности |
| Предыдущая (`X.(Y-1).x`) | Только критические исправления и исправления уязвимостей безопасности |
| Более старые | Нет — обновитесь до поддерживаемой ветки |

Исправления сначала попадают в `main` (canary). Исправления регрессий и уязвимостей безопасности обратно портируются в текущую стабильную ветку, а предыдущая ветка получает только критические исправления и исправления уязвимостей безопасности. Другие исправления ошибок не обратно портируются; они выходят со следующей минорной версией. Когда новая ветка переводится в статус стабильной, та, что была текущей, становится «предыдущей», а та, что была «предыдущей», перестает получать обратные порты.

Независимо от канала, сервер Tuist остается [совместимым](/en/cli/compatibility) с любой версией CLI, выпущенной за последние 3 месяца, поэтому фиксация на стабильной ветке никогда не выведет вас за пределы окна поддержки, если вы обновляетесь в течение этого периода.
