写点什么

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

2017 年 8 月 23 日

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 )关注我们。

2017 年 8 月 23 日 19:005324

评论

发布
暂无评论
发现更多内容

在2020年更受关注和追捧的JS框架

Geek_Willie

react.js Vue js Svelte

合约交易所系统开发技术搭建

薇電13242772558

区块链

架构师训练营第 1 期 第 5 周作业

李循律

极客大学架构师训练营

MySQL中事务的持久性实现原理

X先生

MySQL 数据库 sql 数据库事务 事务

永续合约系统开发源码,合约跟单软件搭建app

WX13823153201

架构师训练营 1 期第 6 周作业

木头发芽

直播预告 | CloudQuery初体验——安装及多数据源连接

CloudQuery社区

数据库 sql 安全 工具软件 dba

基于React+Koa实现一个h5编辑器

徐小夕

Java nodejs H5 React koa

精解四大集合框架:List核心知识总结

田维常

后端开发

面试官:什么是面向对象?

田维常

后端开发

面试官:什么是字节码?它最大的优势是什么?

田维常

后端开发

精解四大集合框架:Set核心知识总结

田维常

程序员 后端

这10道 Spring 常见面试题,你能搞定吗?

田维常

面试

面试时说Redis是单线程的,被喷惨了!

云流

redis 编程 程序员 计算机

专利申请其实并不难?四步教你玩转专利申请!

华为云开发者社区

专利 保护

快速掌握并发编程---深入学习ThreadLocal

田维常

笔试题:了解穷举算法吗?如何用代码实现

田维常

后端开发

MySQL数据库开发中的6个“避免”

田维常

MySQL

TypeScript魔法堂:函数类型声明其实很复杂

肥仔John

Java typescript

华为云的销售凭什么说“赢”了罗振宇?

ToB行业头条

tob

云图说|知道吗?在和你对话的那头,也许是个机器人哦~

华为云开发者社区

华为 AI 机器人

笔试题:代码如何实现“百钱买百鸡”?

田维常

面试

SpringBoot-技术专题-war包部署读取外部配置Yml

李浩宇/Alex

SpringBoot-技术专题-war包部署读取外部配置Properties

李浩宇/Alex

试用阿里网盘内测版-不限速、无广告、隐私安全我全都要

郭旭东

阿里云网盘

一个研发团队是如何坚持7年技术分享的?

PingCode

团队管理 敏捷开发 研发管理 技术分享 程序员节

TensorFlow 篇 | TensorFlow 数据输入的最佳实践

Alex

tensorflow keras input pipeline dataset

接口测试人员需要掌握的知识技能

测试人生路

接口测试

数据结构与算法系列之链表操作全集(二)(GO)

书旅

go 数据结构 算法

精解四大集合框架:Queue核心知识总结

田维常

后端开发

面试官:JDK、JRE、JVM 三者什么关系?

田维常

后端开发

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

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