编译器发布周期
OCaml 版本号的含义
OCaml 版本遵循类似 Linux 的版本字符串方案。OCaml 版本字符串由三个数字组成,后面可选跟上前期版本或开发标签(%i.%i.%i[~alpha%i|~beta%i|~rc%i|+%s]
)。例如,4.14.1、5.1.0~alpha2 和 5.3.0+dev0-2023-12-22 都是有效的 OCaml 版本。
-
第一个版本号(4 在 4.14.1 中)是 OCaml 的主版本号。当 OCaml 语言添加主要新功能时,此版本号会更新。例如,OCaml 5 添加了共享内存并行和效应处理器,OCaml 4 引入了 GADT(广义抽象数据类型)。
-
第二个版本号(14 在 4.14.1 中)是 OCaml 的次版本号。对于每个新的 OCaml 版本,此数字都会增加。特别是,OCaml 的新次版本可能会包含重大更改。但是,我们尽量最大程度地保持向后兼容性。
-
最后一个数字(1 在 4.14.1 中)是修补程序版本号。更新到最新的修补程序版本始终是安全的,这些修补程序版本旨在完全向后兼容,并且仅包含重要或非常安全的错误修复。
-
前期版本标签
~alpha%i
、~beta%i
、~rc%i
(5.1.0~alpha2 中的 ~alpha2)描述了当前正在测试的编译器的前期版本。有关更详细的解释,请参见 [下文](## 前期版本)。 -
开发标签
+tag
指示编译器的开发版或实验版。5.3.0+dev0-2023-12-22 中的 +dev0-2023-12-22 是编译器用于其开发版本的 +dev%i-%date 形式标签的一个示例。
新版本何时发布?
从 OCaml 4.03 开始,我们使用基于时间的发布计划:每六个月发布一个新的 OCaml 次版本。
例如,在撰写本文时,OCaml 的下一个计划发布版本为
- OCaml 5.2:大约在 2024 年 4 月
- OCaml 5.3:大约在 2024 年 10 月
时间安排是近似的,因为当出现不可预见的问题时,我们经常会延迟发布以确保质量。因此,发布通常会延迟,通常最多延迟两个月。
我们可能会在任何时间发布错误修复版本。
错误修复版本
如果我们发现会严重妨碍使用最初发布版本的错误,则会发布错误修复版本。在这种情况下,我们通常会回传在发布后集成到主干中的安全错误修复。
大多数错误修复版本是 M.m.1 版本,这些版本在 M.m.0 次版本发布后一两个月发布,以修复在预发布测试中未发现的重要错误。
强烈建议用户尽快切换到最新的错误修复版本。我们尽最大努力避免任何回归,从而简化了此操作。
特殊 LTS 版本
从 OCaml 4 切换到 OCaml 5 需要完全重写 OCaml 运行时。这在以下方面对 OCaml 5 版本的稳定性产生了负面影响:
- 支持的架构
- 支持的操作系统
- 性能稳定性
- 运行时错误数量
为了方便使用稳定版本,我们例外地将 OCaml 4.14 维护为 OCaml 的长期支持版本。将来会发布 OCaml 4.14 的新错误修复版本,直到 OCaml 5 被认为足够成熟。
欢迎用户反馈哪些来自 OCaml 5 的修复也应该包含在 4.14 中。
一旦 OCaml 5 稳定下来,对 OCaml 4.14 的扩展支持将停止。目前,我们预计将支持 OCaml 4.14 直到 OCaml 5.4(大约在 2025 年 4 月)。