回顾Swift 3,展望Swift 4
在Swift 3 late 2016版本临近发布之际,苹果公司开发者工具部门高级总监Chris Lattner发给“Swift-evolution”邮件列表一篇长文。文中对Swift 3的开发过程进行了回顾,并给出了对Swift 4的期望。
\\
在对Swift 3的回顾中,Lattner主要侧重于说明开源软件开发的成效及所存在的缺点。他特别指出,相对于“封闭式设计”而言,“开放式设计”速度慢且更难预测,但是最终结果却是“显著地改善”了。对于开发而言,使开发社区专注于有限数量的主题上,以及使核心团队参与到最前线的关系讨论中,这两者是至关重要的。此外,Lattner还指出,在开发中具备明确的目标将有助于工作重点的确定,并可避免出现在设计范围之外完成的子项目。
\\
基于上述观点,Lattner阐明了Swift 4所将具有的两个首要设计目标,即“自3.0版本起,交付具有源码稳定性承诺的版本,以及为标准库提供ABI稳定性”。鉴于此,可预见核心团队直到2017年春都将忙碌于第一阶段。该阶段的工作主要是针对影响现有ABI或者是导致现有标准库特性发生重要改变的特性。下面列出了核心团队在第一阶段中将优先实现的一些特性:
\\
- 源码稳定性,例如编译器选项-std=swift3,使用该选项可有条件地启用更多的目前正在开发但尚不稳定的功能; \\
- 适应性,提供在不影响ABI稳定性的前提下使公用API持续演进的方法; \\
- 标准库所需的通用改进,例如:条件性符合(conditional conformances)、递归协议约束(recursive protocol requirements),以及其它的一些改进; \\
- 对字符串的重评估,目的在于改进Swift的字符串编程模型,使得该模型做到与Perl字符串处理一样的好。 \\
- 内存所有权模型(可选项)。该模型受Cyclone或Rust的内存所有权模型启发,目的在于实现性能的可预测性和确定性。更多细节可参考这里。\
一旦第一阶段的进展达到顶峰,第二阶段将根据所剩余的时间对新特性进行界定和规划。在第二阶段中会考虑以下特性:
\\
- 反射,包括一个面向用户的、用于数据和方法反射的API; \\
- 一流的并发,包括:actor、同步/等待、原子性、内存模型及其它一些相关主题。不幸的是,据拉特纳所说,在Swift 4版本中将无法按时实现这个新的并发模型; \\
- 更多的通用改进。但正如泛型声明中所述,这些改进并非是ABI稳定性所特需的; \\
- .swiftmodule稳定性,以便于被第三方的二进制框架所使用; \\
- 新的脚本语言特性,例如:正则表达式、多行文字的字符串等; \\
- 属性行为,目的是在语言内核之外,提供一种定义lazy、observers、synchronization等属性行为的灵活模型。\
Lattner最后指出,还有许多在第二阶段中需要考虑的特性,例如:子模块、数值类型间的隐式类型提升、C++ API的引入、健康宏系统、尾部调用约定、支持枚举类型、“throws”类型化、用户自定义属性、抽象方法或类、更好的SIMD支持、数据并行支持、高级类类型等。
\\
核心团队预期在2017年秋季能发布Swift 4。
\\
查看英文原文:Looking Back on Swift 3 and Ahead to Swift 4
\\
感谢夏雪对本文的审校。
\
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号:InfoQChina)关注我们。
回顾Swift 3,展望Swift 4相关推荐
- 回顾2009,展望2010。
回顾2009,展望2010. 2009即将过去,总结2009年,计划2010年. 2009年12月31日. 转载于:https://www.cnblogs.com/finehappy/archive/ ...
- 回顾2012;展望2013
同样的话题,但是却在不同的时间,不同的地点,感触却也良多.回顾2012:展望2013虽说是老话题.但对于我来说是一年向下一年的一个跨度.今天是2012年12月19日凌晨05:16分 转载于:https ...
- Module System of Swift (简析 Swift 的模块系统)
原文地址: http://andelf.github.io/blog/2014/06/19/modules-for-swift/ Swift 中模块是什么?当写下 Swift 中一句 import C ...
- swift linux服务器,Swift on Linux —— Hello, world!
前言 我们已经介绍了如何在 Linux 上安装 Swift 编译.运行环境,现在我们从一个工程开始讲解如何在 Linux 上创建.编译.运行一个 Swift 程序. Swift 工程结构 一个 Swi ...
- 向公司爱康宣传栏投稿:回顾过去,展望未来
回顾过去,展望未来 过去的这一年,是忙碌的一年,也是收获的一年.在领导的帮助带领下,以及和同事们的共同努力,我顺利地做好了自己的工作.从学习软件重构.软件优化,再到完善代码管理.代码走查.版本管控,每 ...
- 一个码农的2015回顾和2016展望
一个码农的2015回顾和2016展望 前言 最近各地降温比较狠,面对霸王级寒潮大魔王,唯有解封封印多年的霸王级秋裤方可应对!大家注意保暖! 忙这忙那的,不过还是感觉啥也没忙,心里还是空空的,也许是件好 ...
- 回顾2011,展望2012
系列文章: <回顾2011,展望2012> <回顾2012,展望2013> <回顾2013,展望2014> <回顾2014,展望2015> <回顾 ...
- 人工智能的冰与火之歌:回顾2016,展望2017(余凯)丨硬创公开课
作者:机智的大群主 链接:https://zhuanlan.zhihu.com/p/24501489 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 2016 年,人 ...
- 预告:人工智能的冰与火之歌:回顾2016,展望2017(主讲人:余凯)丨硬创公开课...
2016 年,人工智能在美好理想和残酷现实的夹缝中野蛮生长. 当从业者们认为,人工智能时代是"技术为王"的时代,但面对价格战.商务战.公关战时,技术似乎不再是唯一的信仰. 当从业者 ...
- 奋笔疾书与CSDN携手回顾 2021,展望 2022
目录 1 最大的改变 2 学习的新技术 3 职业规划 4 我与CSDN的故事 5 新年新目标 2017-02-14加入CSDN,四年之前的自己,懵懂无知,相比起其他博主在本科期间就开启自己的博 ...
最新文章
- asp.net性能常用优化
- 用mysql随机查询表a10条数据_ES简介
- 【转】登录后自动显示未读快件
- [云炬ThinkPython阅读笔记]第一章 程序之道
- base环境卸载python_20小时快速学习python数据分析实践1——相关软件一系列安装和基本操作熟悉(第0-1h)...
- 数平精准推荐 | OCR技术之数据篇
- LeetCode—213. 打家劫舍 II
- Java是如何实现自己的SPI机制的?
- 5.Springcloud的Ribbon组件的集成及实现轮询负载均衡方式
- 解决Vscode编辑器不能打开多标签页问题
- java 发送 json数据_Java web中怎样取得Android通过post发送的json数据
- linux live usb下载,LinuxLive USB Creator
- 桌面云之深信服VMP平台搭建
- Eclipse简单字体设置
- java 给pdf加水印
- Chrome浏览器检查工具栏缩小
- 【2021】【论文笔记】红外及THz下的细胞膜生物效应——效应是现象,作用是机理——THz对医学的好处
- 本科课程【虚拟现实引擎Unity3D】实验3 - 烘焙光影贴图与动画应用
- 三步走,帮你整理微信运营思路
- mysql语句按时间顺序排序_SQL语句怎么写?先按时间排序,再按姓名排序?