在正式发布Swift 4.2之后,Swift团队现在启动了发布过程的最后阶段,把注意力集中在了Swift 5上。Swift 5计划于2019年初发布,
其目标是在保持源代码兼容性的同时,实现ABI稳定性。
ABI稳定性大致可以理解为跨Swift版本的“二进制兼容性”。ABI稳定性允许将框架链接到程序,而不管使用了哪个编译器版本来编译它们,只要两个编译器生成的代码都符合即将到来的Swift ABI。对于第三方框架开发者以及在苹果公司内部推广Swift应用来说,这是一个关键的特性。ABI稳定性最初计划在Swift 3中实现,但后来由于大量的新语言特性正在开发而延迟。
如前所述,ABI稳定性不包括苹果所说的模块稳定性,后者可以描述为与未来编译器版本兼容的库的接口。换句话说,ABI稳定性影响的是框架运行时链入程序的能力,模块的稳定性关注的是在使用更新版本的编译器(例如Swift 6)构建程序时可以使用使用旧版本的编译器(例如Swift5)构建的库。模块稳定性肯定是需要的,因为它可以简化开发人员在多个账户下的开发,但并不关键。目前还不清楚,模块稳定性是否会加入Swift 5。
Swift 5还包括若干新语言特性,其中有些已经实现,因此,这些特性毫无疑问会加入这个版本中,其中包括:
- “本体键路径(Identity key path)”:这提供了一种方法,使开发人员可以使用self伪属性引用符合该路径的整个值。
- count(where:):这提供了在满足布尔表达式的Sequence中计算元素个数的可能性。
- 原始字符串分隔符:它允许开发人员将任何需要转义的字符包含在以"""分隔的字符串中,而不是使用单引号(")。
其他特性仍然在开发之中,包括扁平化来自try?的嵌套选项、simd vectors、用户定义的动态“callable”类型,等等。
所有新的语言特性都不会破坏源代码的兼容性,也就是说,大多数兼容Swift 4.2编译器的源代码都应该使用Swift 5.0编译器进行编译。不过,4.2版本之前的Swift版本不是源代码兼容的,至少应该升级到Swift 4.2版本。开发团队将定期发布趋近5.0版本的可下载快照。