[搬运]Vivaldi 中的版本号格式
-
摘译自:《The Numbers Game: Where does Vivaldi get its version number from?》
作者:英维·佩特森
2023 年 10 月 4 日Vivaldi 中的版本号格式
在 Vivaldi 中,我们有一个由 4 个数字组成的版本:major、minor、nightly 和 build。例如当前的 Vivaldi 版本是 6.2.3105.54主要数字和次要数字
在给定的版本周期中,主版本号和次版本号(在本例中分别为 6 和 2)保持不变,并且我们通常只为更新到的每个 Chromium 版本增加次版本号(在版本 6.2 中为 Chromium 116)。我们仅在发布主要功能时增加主要版本(或者我们觉得我们在某个数字上停留的时间太长)。如果我们决定增加主要版本,我们的正常程序是在最终版本之前进行更改,通常是在我们开始发布候选版本 (RC) 时。届时,nightly版本号也随之更新。
2 . “每晚”数字
第三个数字称为“每晚”数字,因为它在我们的“主”开发分支上每天晚上都会自动递增,假设自上次更新该数字以来已经有任何代码更新。上面显示的数字 3105,意味着该数字已接近 3100 次夜间更新。嗯,差不多了。
如下所述,我们偶尔会手动递增,并且在早期(10 年前)更新脚本中存在一个错误,这意味着每次都会递增一倍。
这个数字使我们能够更轻松地跟踪更改何时发生,特别是当存在我们需要跟踪的错误时。这个数字作为“标签”添加到我们的源存储库中,因此可以很容易地返回到给定的时间片并查找相关更改(一个称为“二分法”的过程,其工作原理是在时间片的中间选择一个更改)时间片,然后测试问题是否存在,并在包含问题的部分中重复,这可以部分自动化)。这个过程可能相对较快(如果忽略构建时间),因为涉及 1000 次代码更新的时间片可以通过大约 10 个步骤进行测试。
有时我们会手动更改“nightly”数字,最常见的原因是集成了新的 Chromium 版本,但当我们准备发布主要版本更新(例如 6.0)时,我们也会这样做,这样我们就不会两个不同的主要/次要版本的同一晚。保留数字并没有什么问题,但它可以更好地跟踪实际的变化。
那些密切关注我们快照频道的人会看到,我们使用夜间数字作为公告中的标识符之一,并且在几周内它不断增加,然后“突然”停止增加。当我们在发布之前开始稳定代码时,就会发生这种情况,我们通过创建一个源代码“分支”,只添加经过审查的代码更新来做到这一点。此过程将下一个版本与“主”开发分支中的喧嚣隔离开来,并且还允许开发人员准备重大更改以开始更广泛地测试它们,而不会影响即将发布的版本。
通常,桌面版和Android版本在不同时间分支,这意味着它们具有不同的夜间版本号,但 Vivaldi 6.1 是一个例外,两个版本在同一天分支。这实际上产生了奇怪的效果,我们将在下面看到。
- 内部版本号
Vivaldi 版本号中的第四个数字是内部版本号,每次主要版本号、次要版本号和/或夜间版本号发生变化时,它都会从 1 重新开始。它让我们区分 Vivaldi 的不同版本。正常情况下,这个数字可能会达到 15 或 20,但在代码更新较多的日子里,这个数字可能会更高一些(我们尝试在每次代码更改时生成一个新的版本,尽管通常会有多个代码更改)给定的构建,因为我们没有足够的机器来构建每个更改,所以它们被捆绑在一起)。
当我们开始稳定版本时,数字将开始变高,上面的数字是 54,并且随着我们发布更多版本,这个数字会变高。当我们添加新的代码更改时,构建号不仅会增加,当我们启动不同类型的构建时,该数字也会增加。
我们的构建系统有几种配置的构建类型:
内部开发构建,我们尝试为每个代码更改获取它
桌面夜间构建,通常每晚启动(如果自上次构建以来有更新),并在快照中使用
移动夜间,也每晚开始,是移动快照的基础
不同汽车制造商的版本,例如 Polestar 和 Renault,它们也有 Nightlies 或 Weekly 版本
此外,当我们开始稳定最终版本时,每个最终版本(例如版本 6.2)都有这样的配置。当每个构建配置的构建开始时,将为该构建分配一个对该配置唯一的新版本号。
对于稳定分支,特别是具有多个产品线的 Android 分支,这意味着当我们为快照和版本开始新的构建时,构建数量可以快速增加。6.1 中出现了一个特殊情况,因为桌面版和 Android 版都有相同的每晚版本号,因此我们有一个版本号为 300 的桌面版版本!
- 更大的数字
还有第二个内部版本号范围。开发人员经常需要在将代码更改应用到主代码库之前测试它们,以(希望)确保没有任何问题。这些构建从不同的数字池中分配构建版本号,从 10000(10 年前)开始,此后每个测试构建都在增加,现在已经超过 38000。这些构建(几乎)从未作为快照发布,尽管我们在一些特殊情况下也这样做过。
哎呀!我们会犯错误。
有时,错误会发生。上面提到了我们不小心增加了夜间版本双倍的情况。最近发生了另一件事,导致最近的 iOS 版本发布。更新 Vivaldi 版本号的标准程序是,次要版本号在桌面稳定版发布时增加,这就是 6.2 版本发布时发生的情况,并指定了新的 6.3 版本。然而,我们本来要发布 iOS 版本,它使用的是 6.3 版本,但它仍然基于 Chromium 116,而不是即将推出的 Chromium 118(最近集成)。我们绝对不想做的一件事是在同一主要/次要版本的最终版本中混合两个不同的 Chromium 版本。
哎呀!因此,当我们注意到这个问题时,这让我们陷入了一个小麻烦。我们最终找到了一个“hacky”解决方案:我们在 iOS 上发布了 Vivaldi 浏览器版本 6.3,然后在集成 Chromium 118 后将版本增加到 6.4,下一个桌面和移动版本将被称为 6.4(所以会有没有 Vivaldi 6.3 桌面/Android 版本!)。
正如您所看到的,创建版本号涉及很多事情。
PS:本文已发布第四版!
(注:本文作者为Vivaldi 的开发人员和安全专家)
(机翻,人肉校订)
-
综上,目前发布的iOS平台稳定版使用116版Chromium内核,版本号为6.3。
而即将发布的桌面/安卓平台稳定版则使用了118版Chromium内核,版本号将跳过6.3直接使用6.4。