发布策略¶
Crystal 版本使用主版本号、次版本号和修订号来标识。
当前主分支号为 1
。
新功能在次版本 (1.x.0
) 中添加,每三个月定期发布一次。
修订版仅包含重要的错误修复,并在必要时发布。它们通常只出现在最新的次分支中。
新版本在 crystal-lang.org/releases (RSS 订阅) 上公布。
目前没有发布新的主版本的计划。
向后兼容性¶
次版本和修订版是向后兼容的:在给定版本中定义的行为和文档化的 API 将在相同主分支的未来版本中继续工作。
因此,迁移到新的次版本通常是无缝的。
保留¶
虽然我们预计绝大多数程序会随着时间的推移保持兼容,但无法保证未来不会有任何更改会破坏任何程序。在某些不太可能的情况下,我们可能会引入破坏现有代码的更改。请放心,我们致力于将影响降到最低。
-
安全:实现中可能会出现安全问题,其解决方案需要向后不兼容的更改。我们保留解决这些安全问题的权利。
-
错误:如果 API 的行为不符合预期,依赖于错误行为的程序在修复错误后可能会被破坏。我们保留修复这些错误的权利。
-
编译器前端:可能会对编译器进行改进,引入新的警告以用于模棱两可的模式并提供更详细的错误消息。这可能会导致编译错误(在使用
--error-on-warnings
构建时)或在断言特定错误消息时导致工具故障(尽管应该避免这种情况)。我们保留进行此类改进的权利。 -
功能添加:在向语言或核心库中添加新功能时,可能会与用户代码中定义的类型、方法等的名称发生冲突。我们保留在必要时添加新名称的权利。
变更日志和发行说明突出显示了任何可能破坏现有代码的更改,即使它使用的是实验性、未记录或不受支持的功能。
实验性功能¶
兼容性保证的唯一例外是实验性功能,这些功能使用 @[Experimental]
注解明确地指定为实验性功能。在它们稳定之前(此时将删除注解),没有兼容性保证。