跳至内容

发布策略

Crystal 版本使用主版本号、次版本号和修订号来标识。

当前主分支号为 1

新功能在次版本 (1.x.0) 中添加,每三个月定期发布一次。

修订版仅包含重要的错误修复,并在必要时发布。它们通常只出现在最新的次分支中。

新版本在 crystal-lang.org/releases (RSS 订阅) 上公布。

目前没有发布新的主版本的计划。

向后兼容性

次版本和修订版是向后兼容的:在给定版本中定义的行为和文档化的 API 将在相同主分支的未来版本中继续工作。

因此,迁移到新的次版本通常是无缝的。

保留

虽然我们预计绝大多数程序会随着时间的推移保持兼容,但无法保证未来不会有任何更改会破坏任何程序。在某些不太可能的情况下,我们可能会引入破坏现有代码的更改。请放心,我们致力于将影响降到最低。

  • 安全:实现中可能会出现安全问题,其解决方案需要向后不兼容的更改。我们保留解决这些安全问题的权利。

  • 错误:如果 API 的行为不符合预期,依赖于错误行为的程序在修复错误后可能会被破坏。我们保留修复这些错误的权利。

  • 编译器前端:可能会对编译器进行改进,引入新的警告以用于模棱两可的模式并提供更详细的错误消息。这可能会导致编译错误(在使用 --error-on-warnings 构建时)或在断言特定错误消息时导致工具故障(尽管应该避免这种情况)。我们保留进行此类改进的权利。

  • 功能添加:在向语言或核心库中添加新功能时,可能会与用户代码中定义的类型、方法等的名称发生冲突。我们保留在必要时添加新名称的权利。

变更日志和发行说明突出显示了任何可能破坏现有代码的更改,即使它使用的是实验性、未记录或不受支持的功能。

实验性功能

兼容性保证的唯一例外是实验性功能,这些功能使用 @[Experimental] 注解明确地指定为实验性功能。在它们稳定之前(此时将删除注解),没有兼容性保证。