Swift 4 进入最后阶段,ABI 稳定性被推迟

  • Sergio De Simone
  • 罗远航

2017 年 2 月 28 日

话题:移动AppleiOS语言 & 开发

Apple 公司透露了 Swift 4 的发布进程,Swift 4 将会在 2017 年 4 月发布。此次发布的焦点在于 Swift 4 提供了对于核心语言和标准库的重大改进,同时也实现了对之前源代码的兼容性。Ted Kremenek 是 Apple 公司 Swift 团队的新负责人,他取代的是曾经的项目负责人 Chris Lattner,他解释说,ABI(应用程序二进制接口)兼容性的实现一开始是在设计准则之中的,现如今将要推迟发布。

Swift 4 做了许多重大改变,因此 Swift 4 与 Swift 3 并没有十分良好的代码兼容性。然而,Swift 语言一经推出,它的编译器就支持兼容性模式,使用-swift-version-3编译选项就能编译大多数 Swift 3 的源码,在 Swift 4 中还修复了错误代码也能在旧编译器中编译通过的漏洞。-swift-version-4编译选项将会支持所有在 Swift 4 设计准则中提到的新特性。重要的是,Swift 的编译器将会在刚刚提到的编译选项中支持以下特性,它能够将框架和已经编译好的模块链接在一起,只要它们是使用同样的编译器选项编译出来的。

Kremenek 还提到,在相关原理被改正之前,Swift 推迟了对 ABI 稳定性问题的解决,这样做能够避免 ABI 不稳定的风险。

Swift 的创始人 Chris Lattner 是这样评论Kremenek 的声明的:

看到了之前提出的年计划,我就认为这是一个很务实的决定。ABI 的稳定性对于 Apple 公司比对于大多数的开发者来说更重要,因此我很高兴看到你把社区的需求(改进编译时间、编译器稳定性等等)放到了第一位,对于 Swift 来说,保证长久成功的关键就是去做正确的事情。

推迟了改进 ABI 稳定性的目标并不意味着这项工作就此停止,Lattner 希望能够将 ABI 稳定性在 Swift 5 的早期开发阶段列入计划。Kremenek 将会尽快发布一个关于改进 ABI 稳定性的报表,上边会显示所有有关 ABI 稳定性的未完成任务以及当前的任务状态。

进入第二阶段的变更更有可能被纳入到发布版本里。例如,任何新的语法规则或 API 无疑要比当前的好,任何影响源代码兼容性的改进必须要对现有代码提供迁移方案等等。直到软件发布经理创建了最终的代码分支,所有的开发内容才会出现在master代码主分支中,预计这项工作将于 2017 年初夏完成。从那时起,只有特定的修复内容会加入到最终的发布版本中。

查看英文原文:Swift 4 Enters Final Stage, Defers ABI Stability


感谢薛命灯对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

移动AppleiOS语言 & 开发