查看源代码 支持、兼容性、弃用和删除

简介

本文档描述了关于支持的版本、兼容性、弃用以及功能删除的策略。

变更

本文档及其描述的策略是在 Erlang/OTP 21 中引入的。

支持的版本

一般来说,bug 只在最新的版本上修复,新功能则在正在开发的下一个版本中引入。但是,当由于内部原因我们在较旧的版本上修复 bug 时,这些也会被提供并宣布。

只接受在我们的 git 仓库maintmaster 分支上的 Pull 请求。maint 分支包含计划在最新的 OTP 版本上的下一个维护补丁包中进行的更改,而 master 分支包含计划在即将到来的 OTP 版本中进行的更改。

兼容性

我们努力保持尽可能高的兼容性,即使在没有提供兼容性保证的情况下也是如此。

系统的不同部分在兼容性方面将采取不同的处理方式。以下项目描述了如何处理系统的不同部分。

  • Erlang 分布式 - Erlang 节点可以在至少两个先前版本和两个后续版本之间进行通信。

  • 编译的 BEAM 代码、NIF 库和驱动程序 - 编译的代码可以在至少两个后续版本上加载。为了实现 Erlang 代码的最高性能,请确保使用与其部署版本相同的版本进行编译。

    不支持在先前版本上加载。

  • API - 在版本之间兼容。

  • 编译器警告 - 在版本之间可能会发出新的警告。

  • 命令行参数 - 在版本之间可能会发生不兼容的更改。

  • OTP 构建过程 - 在版本之间可能会发生不兼容的更改。

在某些情况下,即使在版本之间应该兼容的系统部分中,也可能会引入不兼容的更改。可能触发这种不兼容更改的事情包括:

  • 安全问题 - 可能需要引入不兼容的更改来解决安全问题。这种不兼容性可能会在补丁中出现。

  • Bug 修复 - 我们不会保持 bug 兼容性。bug 修复可能会引入不兼容的更改。这种不兼容性可能会在补丁中出现。

  • 严重的先前设计问题 - OTP 的某些部分是很久以前设计的,并不一定考虑了当今的计算环境。因此,这些设计选择的后果可能相当重大,影响性能、可伸缩性等等。如果我们确定这些后果过于严重,我们可能会实施不兼容的更改。此类更改永远不会在补丁中引入,而是在后续版本中引入。

外围、跟踪和调试功能比语言本身以及运行期间使用的核心库的功能更容易发生不兼容的更改。

文档中有一个关于不兼容性的页面

弃用

当引入更新、更推荐的替代方案时,会发生功能的弃用。弃用并不意味着未来会删除该功能,除非在弃用通知中明确声明即将删除。

弃用的功能将被记录为已弃用,并尽早地在发行说明中突出显示。如果合适,编译器会在使用已弃用的功能时发出警告。

文档中有一个关于弃用的页面

  • 弃用 - 列出所有已弃用的功能。

删除

可能需要删除遗留解决方案。在这种情况下,它们将在足够长的时间内逐步淘汰,以便用户进行调整。在删除功能之前,它将被弃用至少一个版本,并明确宣布即将删除。

外围、跟踪和调试功能比语言本身以及运行期间使用的核心库的功能更容易被删除。

文档中有两个关于删除的页面