Swift 3.1 发布流程

这篇文章描述了 Swift 3.1 的目标、发布流程和预计时间表。

Swift 3.1 旨在与 Swift 3.0 源码兼容。它将包含对核心语言的一些附加增强功能,以及对 Swift Package Manager、Linux 上的 Swift 的改进,以及编译器和标准库的总体质量改进。

Swift 3.1 计划于 2017 年春季发布。

源码兼容性

一个重要的目标是,绝大多数使用 Swift 3.0 编译器构建的源代码可以继续使用 Swift 3.1 编译器构建。例外情况是编译器中的错误修复,这些修复会导致编译器拒绝原本就不应该接受的代码。但在实践中,这些情况应该相对罕见。

关于 Swift 版本发布的源码兼容性意图的描述,可以在 threadswift-evolution 邮件列表中找到。

如果您遇到 Swift 3.1 编译器意外拒绝了之前使用 Swift 3.0 编译器编译的代码的情况,请提交 错误报告

Swift 3.1 的快照

之前的 Swift 版本有“开发者预览版”,例如“Preview 1”、“Preview 2”等,代表 Swift 版本在收敛时的稳定快照。开发者预览版之间的间隔通常不规律,有时没有为 Swift 社区提供足够的粒度来尝试新功能或验证版本收敛过程中的错误修复。

对于 Swift 3.1,将改为每日提供可下载的发布分支快照。快照将作为 持续集成 测试的一部分生成。因此,可下载快照的频率和粒度将更高。如果测试通过,快照将每天发布。

一旦 Swift 3.1 发布,除了快照之外,还将发布官方最终版本构建。

将更改纳入 Swift 3.1

Swift 3.1 的范围预计是有限的,希望在 2017 年初将重点转移到 Swift 4 的开发上。为了实现此目标,Swift 3.1 将仅包含 1 月 16 日之前在主线开发(即 master 分支)中的更改。在此日期之后,将有一个“bake”期,在此期间,只有经过挑选的关键修复程序才会进入 swift-3.1-branch,并且 master 将转移到 Swift 4 的开发。

分支

在操作上,master 将定期合并到 swift-3.1-branch 中,大约每两周一次,直到 1 月 16 日。两周的窗口在 master 上的热门开发和精心策划的发布分支之间提供了一个缓冲。在合并 master 之间,更改可以通过 cherry-pick(通过拉取请求)到 swift-3.1-branch 中。

此计划的一个显著例外是 swift-package-manager,它将每天从 master 合并到 swift-3.1-branch 中。

将更改纳入 Swift 3.1 的理念

受影响的存储库

以下存储库将有一个 swift-3.1-branch 分支来跟踪作为 Swift 3.1 版本一部分的源代码

请注意,swift-llvmswift-clang 存储库已经从 master 分支创建了 swift-3.1-branch,并且不会再次重新分支。

发布经理

发布的总体管理将由以下人员监督,他们将在 Swift 3.1 版本收敛时宣布何时对更改实施更严格的控制

如有关于发布管理流程的任何问题,请随时发送电子邮件至 swift-dev 或直接联系 Ted Kremenek

注意:Swift 邮件列表已关闭、存档,并已替换为 Swift 论坛。请参阅此处的公告

发布分支的拉取请求

所有提名更改以包含在发布分支中的拉取请求都应包含以下信息

受影响组件的一个或多个代码所有者应审查更改。技术审查可以由代码所有者委派,或根据需要或有用的方式请求。

所有进入 swift-3.1-branch更改(自动从 master 合并的更改除外)必须通过拉取请求,且拉取请求必须由相应的发布经理接受。