Swift 5.0 发布流程
这篇文章描述了 Swift 5.0 的目标、发布流程和预计时间表。
动机和目标
Swift 5.0 的主要目标是使该语言实现 ABI 稳定性。这将使操作系统供应商能够部署稳定的 Swift 运行时,可供可执行文件和库链接。
与 ABI 稳定性相关,模块稳定性也将是主要的焦点。这将会在 Swift 5.0 版本或后续的 5.x 版本中实现,具体取决于其准备情况。
二进制兼容性
Swift 5.0 与之前的 Swift 版本不二进制兼容。二进制兼容性允许由不同 Swift 编译器编译的 Swift 代码在运行时级别链接和互操作。
但是,未来的 Swift 版本将与 Swift 5 二进制兼容。
源代码兼容性
与 Swift 4.2 一样,绝大多数使用 Swift 4.2 编译器构建的源代码应该可以使用 Swift 5.0 编译器编译。
但是,Swift 5 编译器将不支持 Swift 3 兼容模式。Swift 4.2 是最后一个支持 Swift 3 模式的 Swift 版本。在 Swift 3 之后的版本中,语言表面和内部实现都有重要的更改,这将成为未来(和持久的)源代码和二进制稳定性的基础。
Swift 5.0 快照
Swift 5.0 发布分支的可下载快照将定期发布,作为持续集成测试的一部分。
一旦 Swift 5.0 发布,除了快照之外,还将发布官方最终构建版本。
将更改纳入 Swift 5.0
swift-5.0-branch 分支包含将在 Swift 5.0 中发布的更改。该分支的管理方式如下:
-
swift-5.0-branch分支已从master主开发分支初始创建。 -
在最终分支日期之前,
master主开发分支将定期合并到swift-5.0-branch分支中。 -
2018 年 11 月 16 日(最终分支):
swift-5.0-branch分支将最后一次合并来自master主开发分支的更改。在最终分支日期之后,将有一个“bake”时期,在此期间只有精选的关键修复程序(通过拉取请求)会被纳入发布版本。
此计划的五个显著例外是 swift-package-manager、swift-llbuild、swift-corelibs-foundation、swift-corelibs-xctest 和 swift-corelibs-libdispatch,它们将每天从 master 主开发分支合并到 swift-5.0-branch 分支,并且其最终更改截止日期将延长至 11 月 16 日之后,具体时间将在稍后公布。
| 项目 | 截止日期 |
|---|---|
| swift | 2018 年 11 月 20 日 |
| swift-package-manager | 2019 年 2 月 11 日 |
| swift-llbuild | 2019 年 2 月 11 日 |
将更改纳入 Swift 5.0 的理念
-
Swift 5.0 的所有语言和 API 更改都将通过 Swift Evolution 流程,其中记录了该版本范围内的更改标准。
-
其他更改(例如,缺陷修复、诊断改进、SourceKit 接口改进)将根据其风险和影响被接受。
-
如果低风险的测试调整有助于发布版本的验证,也将在发布分支的后期被接受。
-
随着发布版本的收敛,接受更改的标准将变得越来越严格。
受影响的存储库
以下存储库将具有 swift-5.0-branch 分支,以跟踪作为 Swift 5.0 版本一部分的源代码
- swift
- swift-clang
- swift-cmark
- swift-compiler-rt
- swift-corelibs-foundation
- swift-corelibs-libdispatch
- swift-corelibs-xctest
- swift-integration-tests
- swift-llbuild
- swift-lldb
- swift-llvm
- swift-syntax
- swift-package-manager
- swift-xcode-playground-support
发布经理
发布的总体管理将由以下人员监督,他们将在 Swift 5.0 发布版本收敛时宣布何时对更改实施更严格的控制
-
Ted Kremenek 是 Swift 5.0 的总体发布经理。
-
Duncan Exon Smith 是 swift-llvm、swift-clang 和 swift-compiler-rt 的发布经理。
-
Fred Riss 是 swift-lldb 的发布经理。
-
Ben Cohen 是 Swift 标准库的发布经理。
-
Tony Parker 是 swift-corelibs-foundation 的发布经理。
-
Brian Croom 是 swift-corelibs-xctest 的发布经理。
-
Rick Ballard 是 swift-package-manager 的发布经理。
-
Daniel Dunbar 是 swift-llbuild 的发布经理。
如有关于发布管理流程的任何问题,请随时在开发论坛上发帖,或直接联系 Ted Kremenek。
发布分支的拉取请求
为了使拉取请求在最终从 master 主开发分支重新分支后被考虑包含在发布分支中,它必须包含以下信息:
-
解释:对正在修复的问题或正在进行的增强功能的描述。这可以很简短,但应该清晰明了。
-
范围:对更改的影响/重要性的评估。例如,更改是否是破坏源代码的语言更改等等。
-
SR 问题:SR(如果更改修复/实施了 bugs.swift.org 上的问题/增强功能)。
-
风险:接受此更改对发布版本有何(具体)风险?
-
测试:已完成或需要完成哪些具体测试,以进一步验证此更改的任何影响?
-
审阅者:受影响组件的一个或多个代码负责人应审阅更改。技术评审可以由代码负责人委托,或根据需要或有用性以其他方式请求。
进入 swift-5.0-branch 分支的所有更改(自动从 master 主开发分支合并的更改除外)必须通过拉取请求,且拉取请求必须由相应的发布经理接受。