Skip to content

向后兼容性策略

随着 Solana 开发者生态系统的不断壮大,对影响构建在 Solana 上的应用程序和工具的 API 及行为变化的明确预期需求也在增加。在理想的情况下,Solana 的发展可以以非常快的速度进行,而不会对现有开发者造成任何问题。然而,一些妥协是不可避免的,因此本文档致力于阐明和规范新版本发布的流程。

预期

  • Solana 软件发布包含 API、SDK 和 CLI 工具(有少数例外)。
  • Solana 软件发布遵循语义版本控制,更多细节见下文。
  • 次要版本发布的软件将在同一主版本内保持兼容

弃用过程

  1. 在任何 补丁次要 版本中,功能、API、端点等可能会被标记为弃用。
  2. 根据代码升级难度,一些功能将在几个发布周期内保持弃用状态。
  3. 在未来的 主要 版本中,弃用功能将以不兼容的方式移除。

版本发布节奏

Solana RPC API、Rust SDK、CLI 工具和 SBF 程序 SDK 都会随每个 Solana 软件发布进行更新和发布,并应在特定 次要 版本发布的 补丁 更新之间始终保持兼容。

发布渠道

  • edge(前沿版):包含最新前沿功能的软件版本,没有向后兼容性政策。这些版本通常用于实验和开发最前沿的功能。
  • beta(测试版):运行在 Solana 测试网集群上的软件版本。用于测试新功能和改进,尚未达到完全稳定的阶段。
  • stable(稳定版):运行在 Solana 主网 Beta 和开发网络集群上的稳定版本。这些版本经过充分测试和验证,适用于生产环境。

主要发布 (x.0.0)

主要 版本发布(例如 2.0.0)可能包含重大更改和之前弃用功能的移除。客户端 SDK 和工具将开始使用上一 主要 版本中启用的新功能和端点。

次要发布 (1.x.0)

新功能和提案实现将添加到新 次要 版本发布(例如 1.4.0)中,并首先在 Solana 的测试网集群上运行。在测试网上运行期间,次要 版本被视为 beta 发布渠道。经过必要的修补和可靠性验证后, 次要 版本将升级到 stable 发布渠道,并部署到主网 Beta 集群。

补丁发布 (1.0.x)

低风险特性功能、非破坏性更改以及安全和错误修复将作为 补丁版本发布的一部分(例如 1.0.11)。补丁可能适用于 beta 和 stable 发布渠道。

RPC API

补丁发布:

  • 错误修复
  • 安全修复
  • 端点/功能弃用

次要发布:

  • 新的 RPC 端点和功能

主要发布:

  • 移除弃用功能

Rust 包

补丁发布

  • 错误修复
  • 安全修复
  • 性能改进

次要发布

  • 新 API

主要发布

  • 移除弃用 API
  • 向后不兼容的行为更改

CLI 工具

补丁发布

  • 错误和安全修复
  • 性能改进
  • 子命令/参数弃用

次要发布

  • 新的子命令

主要发布

  • 切换到上一主要版本中引入的新 RPC API 端点/配置
  • 移除弃用功能

运行时功能

新的 Solana 运行时功能是通过功能开关手动激活的。运行时功能包括:引入新的本地程序、系统变量(sysvars)和系统调用(syscalls);以及它们的行为变化。功能激活与集群无关,这样可以在主网 Beta 激活之前在测试网上进行验证。

发布过程如下:

  1. 新的运行时功能包含在新版本中,默认情况下未激活。
  2. 一旦足够的权益验证器升级到新版本,通过指令手动激活运行时功能开关。
  3. 功能在下一个周期(epoch)开始时生效。

基础设施更改

公共API节点

Solana 提供公开可用的 RPC API 节点供所有开发者使用。Solana 团队将尽最大努力传达主机、端口、速率限制行为、可用性等的任何更改。然而,我们建议开发者依赖自己的验证者节点,以减少对 Solana 运营节点的依赖。

本地集群脚本和 Docker 镜像

重大更改将仅限于 主要 版本更新。次要补丁 更新应始终向后兼容。

例外

Web3 JavaScript SDK

Web3.JS SDK 也遵循语义版本控制规范,但与 Solana 软件发布版本分开发布。

攻击向量

如果在现有代码中发现新的攻击向量,根据问题的严重性,上述流程可能会被绕过,以便快速部署修复。

CLI 工具输出

CLI 工具的 JSON 输出(输出 --json)兼容性将被保留;然而,面向读者的输出可能会发生变化。这包括输出以及可能的帮助、警告或错误消息。