在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相关推荐

  1. 回顾2009,展望2010。

    回顾2009,展望2010. 2009即将过去,总结2009年,计划2010年. 2009年12月31日. 转载于:https://www.cnblogs.com/finehappy/archive/ ...

  2. 回顾2012;展望2013

    同样的话题,但是却在不同的时间,不同的地点,感触却也良多.回顾2012:展望2013虽说是老话题.但对于我来说是一年向下一年的一个跨度.今天是2012年12月19日凌晨05:16分 转载于:https ...

  3. Module System of Swift (简析 Swift 的模块系统)

    原文地址: http://andelf.github.io/blog/2014/06/19/modules-for-swift/ Swift 中模块是什么?当写下 Swift 中一句 import C ...

  4. swift linux服务器,Swift on Linux —— Hello, world!

    前言 我们已经介绍了如何在 Linux 上安装 Swift 编译.运行环境,现在我们从一个工程开始讲解如何在 Linux 上创建.编译.运行一个 Swift 程序. Swift 工程结构 一个 Swi ...

  5. 向公司爱康宣传栏投稿:回顾过去,展望未来

    回顾过去,展望未来 过去的这一年,是忙碌的一年,也是收获的一年.在领导的帮助带领下,以及和同事们的共同努力,我顺利地做好了自己的工作.从学习软件重构.软件优化,再到完善代码管理.代码走查.版本管控,每 ...

  6. 一个码农的2015回顾和2016展望

    一个码农的2015回顾和2016展望 前言 最近各地降温比较狠,面对霸王级寒潮大魔王,唯有解封封印多年的霸王级秋裤方可应对!大家注意保暖! 忙这忙那的,不过还是感觉啥也没忙,心里还是空空的,也许是件好 ...

  7. 回顾2011,展望2012

    系列文章: <回顾2011,展望2012> <回顾2012,展望2013> <回顾2013,展望2014> <回顾2014,展望2015> <回顾 ...

  8. 人工智能的冰与火之歌:回顾2016,展望2017(余凯)丨硬创公开课

    作者:机智的大群主 链接:https://zhuanlan.zhihu.com/p/24501489 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 2016 年,人 ...

  9. 预告:人工智能的冰与火之歌:回顾2016,展望2017(主讲人:余凯)丨硬创公开课...

    2016 年,人工智能在美好理想和残酷现实的夹缝中野蛮生长. 当从业者们认为,人工智能时代是"技术为王"的时代,但面对价格战.商务战.公关战时,技术似乎不再是唯一的信仰. 当从业者 ...

  10. 奋笔疾书与CSDN携手回顾 2021,展望 2022

    目录 1 最大的改变 2 学习的新技术 3 职业规划 4 我与CSDN的故事 5 新年新目标     2017-02-14加入CSDN,四年之前的自己,懵懂无知,相比起其他博主在本科期间就开启自己的博 ...

最新文章

  1. asp.net性能常用优化
  2. 用mysql随机查询表a10条数据_ES简介
  3. 【转】登录后自动显示未读快件
  4. [云炬ThinkPython阅读笔记]第一章 程序之道
  5. base环境卸载python_20小时快速学习python数据分析实践1——相关软件一系列安装和基本操作熟悉(第0-1h)...
  6. 数平精准推荐 | OCR技术之数据篇
  7. LeetCode—213. 打家劫舍 II
  8. Java是如何实现自己的SPI机制的?
  9. 5.Springcloud的Ribbon组件的集成及实现轮询负载均衡方式
  10. 解决Vscode编辑器不能打开多标签页问题
  11. java 发送 json数据_Java web中怎样取得Android通过post发送的json数据
  12. linux live usb下载,LinuxLive USB Creator
  13. 桌面云之深信服VMP平台搭建
  14. Eclipse简单字体设置
  15. java 给pdf加水印
  16. Chrome浏览器检查工具栏缩小
  17. 【2021】【论文笔记】红外及THz下的细胞膜生物效应——效应是现象,作用是机理——THz对医学的好处
  18. 本科课程【虚拟现实引擎Unity3D】实验3 - 烘焙光影贴图与动画应用
  19. 三步走,帮你整理微信运营思路
  20. mysql语句按时间顺序排序_SQL语句怎么写?先按时间排序,再按姓名排序?

热门文章

  1. C#中get和SET
  2. 高效实用Kafka-Kafka是什么
  3. 我用休眠做并发控制,搞垮了下游服务
  4. hadoop 实现序列化
  5. springboot拦截器与过滤器详解
  6. java文件上传总结
  7. 关于RabbitMQ以及RabbitMQ和Spring的整合
  8. 第一款Micropython图形化编辑器—Python Editor
  9. ES6中的迭代器(Iterator)和生成器(Generator)(一)
  10. 借助精益找回敏捷的质量