BT

你的观点很重要! 快来参与InfoQ调研吧!

Swift 5确立了目标,定义了新的演进过程

| 作者 Sergio De Simone 关注 5 他的粉丝 ,译者 罗远航 关注 0 他的粉丝 发布于 2017年8月24日. 估计阅读时间: 3 分钟 | ArchSummit社交架构图谱:Facebook、Snapchat、Tumblr等背后的核心技术

亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的邮件和网页通知

Swift 5预计将于2018年发布,Swift 5将会带来更好的ABI稳定性,并将进一步关注API弹性(resilience)和内存所有权(memory ownership)。新的演进过程将有助于确保Swift 5将开发重点放在其既定目标上。

ABI稳定性在早先的Swift发布版本中被推迟之后,目前已经成为Swift 5中一个必要的功能。Apple工程师、Swift维护者Teb Kremenek这样写道:“对于第三方框架开发人员来说,ABI稳定性是至关重要的,并且为了扩大Swift在Apple公司内部的使用范围,ABI稳定性的实现不能再被推迟了,并且它将会成为Swift 5的重中之重。”然而,Swift 5对ABI稳定性的官方定义不包括模块稳定性,模块稳定性被认为是一个难以达成的目标,可能不会出现在下个版本的Swift语言中。模块稳定性涉及到模块文件的格式,它定义了编译器是如何表示框架中的公共接口的。因此,只有当开发代码依赖于一个二进制模块并且其不可用性不会影响到运行时加载共享库的时候,模块稳定性才是必需的。为了让ABI稳定性可控,必须要确定出一些底层实现的细节,其中包括标准库中所使用的通用特性,如条件性符合(conditional conformances)以及协议递归约束(recursive protocol requirements);API弹性,确保库API能够在保持其ABI稳定性的同时进行演进;另外还有内存所有权(memory ownership)

Swift 5另外一个主要目标是源稳定性(source stability),这使得Swift 5编译器能够接受使用之前版本的Swift编写的代码。为此,只有当满足以下三种情况时,才会接受源代码的更改:当实际语法很明显会引发问题时;当新语法明显更好时;当存在现有代码自动迁移路径时。源稳定性将会支持Swift 4的代码,也有可能支持Swift 3的代码。

对于字符串人机工程学(string ergonomics)领域的额外改进也被列入计划,它可以使字符串更易于使用,除此之外,还有对标准库的改进,它为新的并发模型奠定了基础。

最后但同样重要的是,Swift 5的演进过程已经被重新定义,避免过多的演进提案对ABI稳定性的专注度造成影响。特别是从2018年3月1日起,每个新提案都需要一个可行的实现,其中包括测试用例。缺少可行实现的提案也可以被提交,但是不会被审查通过。

查看英文原文:Swift 5 Sets its Goals, Defines New Evolution Process


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

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT