1. 版本控制
Rails 遵循 语义版本控制 的变体
补丁 Z
仅包含错误修复,无 API 更改,无新功能。安全修复程序除外。
次要版本 Y
新功能,可能包含 API 更改(相当于语义版本控制中的主要版本)。破坏性更改会在之前的次要版本或主要版本中附带弃用通知。
主要版本 X
新功能,很可能包含 API 更改。Rails 的次要版本和主要版本之间的区别在于破坏性更改的程度,通常保留给特殊场合。
2. 新功能
新功能仅添加到主分支,不会在补丁发布中提供。
3. 错误修复
次要版本将在其系列首次发布后的一年内接收错误修复。例如,如果理论上的 1.1.0 于 2023 年 1 月 1 日发布,它将接收错误修复直至 2024 年 1 月 1 日。在此之后,它将被视为不受支持。
错误修复通常添加到主分支,并在有足够需求时向后移植到最新发布系列的 x-y-stable 分支。当 x-y-stable 分支中添加了足够多的错误修复后,就会从中构建一个新的补丁版本。例如,理论上的 1.2.2 补丁版本将从 1-2-stable 分支构建。
对于不受支持的系列,错误修复可能会偶然出现在稳定分支中,但不会在官方版本中发布。建议将您的应用程序指向使用 Git 的稳定分支以获取不受支持的版本。
4. 安全问题
次要版本将在其系列首次发布后的两年内接收安全修复。例如,如果理论上的 1.1.0 于 2023 年 1 月 1 日发布,它将接收安全修复直至 2025 年 1 月 1 日。在此之后,它将达到其生命周期结束。
这些发布是通过获取上次发布的版本、应用安全补丁并发布来创建的。然后将这些补丁应用到 x-y-stable 分支的末尾。例如,理论上的 1.2.2.1 安全发布将从 1.2.2 构建,然后添加到 1-2-stable 的末尾。这意味着如果您运行的是最新版本的 Rails,则可以轻松升级到安全发布。
安全发布中将仅包含直接的安全补丁。由安全补丁引起的非安全相关错误的修复可能会在某个版本的 x-y-stable 分支上发布,并且只会根据错误修复策略作为新 gem 发布。
安全发布从上次安全发布分支/标签中创建。否则,安全发布中可能会出现破坏性更改。安全发布应仅包含确保应用程序安全所需的更改,以便应用程序更容易保持升级。
5. 生命周期结束的发布系列
当一个发布系列达到其生命周期结束时,您有责任处理错误和安全问题。我们可能会提供修复的向后移植并将其合并,但不会发布新版本。我们建议将您的应用程序指向使用 Git 的稳定分支。如果您不习惯维护自己的版本,则应升级到受支持的版本。
6. 发布计划
我们旨在每六个月发布一个包含新功能的版本。在极少数情况下,如果一年内没有发布版本,我们将延长之前版本的支持期,直到下一个版本发布。
7. npm 包
由于 npm 的限制,我们无法将第 4 位数字用于 Rails 提供的 npm 包 的安全发布。这意味着,与等效 gem 版本 7.0.1.4 相比,npm 包的版本将为 7.0.104。
版本将计算为 X.Y.Z0A,其中 A 是安全发布。