Политика обратной совместимости

По мере роста экосистемы разработчиков Solana растет и потребность в четких ожиданиях в отношении взлома API и изменений поведения, влияющих на приложения и инструменты, созданные для Solana. В идеальном мире разработка Solana могла бы продолжаться очень быстрыми темпами, не вызывая проблем у существующих разработчиков. Однако необходимо будет пойти на некоторые компромиссы, поэтому в этом документе делается попытка прояснить и систематизировать процесс для новых выпусков.

Ожидания

Процесс устаревания

  1. В любом выпуске PATCH или MINOR функция, API, конечная точка и т. д. могут быть помечены как устаревшие.
  2. В зависимости от сложности обновления кода некоторые функции будут оставаться устаревшими в течение нескольких циклов выпуска.
  3. В будущем ОСНОВНОМ выпуске устаревшие функции будут удалены несовместимым образом.

Каденция выпуска

Solana RPC API, Rust SDK, инструменты CLI и BPF Program SDK обновляются и поставляются вместе с каждым выпуском программного обеспечения Solana и всегда должны быть совместимы между обновлениями PATCH конкретной версии MINOR.

Каналы выпуска

Основные выпуски (x.0.0)

Выпуски ОСНОВНЫХ версий (например, 2.0.0) могут содержать критические изменения и удаление ранее объявленных устаревшими функций. Клиентские SDK и инструменты начнут использовать новые функции и конечные точки, которые были включены в предыдущей ОСНОВНОЙ версии.

Незначительные выпуски (1.x.0)

Новые функции и реализации предложений добавляются в new версии MINOR (например, 1.4.0) и впервые запускаются в кластере Solana Testnet. При работе в тестовой сети версии MINOR считаются находящимися в канале бета-версии. После того, как эти изменения будут исправлены по мере необходимости и докажут свою надежность, «MINOR» ​​версия будет обновлена ​​​​до «стабильного» выпуска и развернута в бета-кластере основной сети.

Выпуски исправлений (1.0.x)

Функции с низким уровнем риска, некритические изменения, а также исправления безопасности и ошибок поставляются как часть выпусков версий PATCH (например, 1.0.11). Патчи могут быть применены как к «бета», так и к «стабильным» каналам выпуска.

API RPC

Выпуски патчей:

Незначительные выпуски:

Основные выпуски:

Ржавые ящики

Выпуски патчей:

Незначительные выпуски:

Основные релизы

Инструменты командной строки

Выпуски патчей:

Незначительные выпуски:

Основные выпуски:

Функции среды выполнения

Новые функции среды выполнения Solana переключаются между функциями и активируются вручную. Функции среды выполнения включают: введение новых собственных программ, системных переменных и системных вызовов; и изменения в их поведении. Активация функции не зависит от кластера, что позволяет создать уверенность в тестовой сети перед активацией в основной сети-бета.

Процесс выпуска выглядит следующим образом:

  1. Новая функция среды выполнения включена в новую версию, деактивирована по умолчанию.
  2. Как только достаточное количество стейкинговых валидаторов обновится до новой версии, переключатель функций среды выполнения активируется вручную с помощью инструкции.
  3. Функция вступает в силу в начале следующей эпохи

Изменения инфраструктуры

Узлы общедоступного API

Solana предоставляет общедоступные узлы RPC API для использования всеми разработчиками. Команда Solana приложит все усилия, чтобы сообщить о любых изменениях в хосте, порте, поведении ограничения скорости, доступности и т. д. Однако мы рекомендуем разработчикам полагаться на свои собственные узлы проверки, чтобы не допустить зависимости от узлов, управляемых Solana.

Скрипты локального кластера и образы Docker

Критические изменения будут ограничены ОСНОВНЫМИ обновлениями версии. Обновления MINOR и PATCH всегда должны быть обратно совместимы.

Исключения

Пакет SDK для JavaScript Web3

Web3.JS SDK также соответствует семантическим спецификациям управления версиями, но поставляется отдельно от выпусков программного обеспечения Solana.

Векторы атак

Если в существующем коде обнаруживается новый вектор атаки, вышеуказанные процессы можно обойти, чтобы быстро развернуть исправление, в зависимости от серьезности проблемы.