Swift 3.0 将会带来什么
Swift 近两年的发展势头非常的迅猛,而在它开源后,更是如井喷一样的势头,除了 iOS 平台,还支持了 Linux。 而今年下半年, Swift 3.0 也会随之发布。这次我就和大家聊一下 Swift 3.0 会有什么新东西吧。
Swift 专门为版本更新相关的文档创建了一个 Guihub 主页,地址是github.com/apple/swift-evolution
这里面列出了 Swift 3.0 版本着重处理的地方,我来帮大家总结一下:
更稳定的 ABI
所谓 ABI 就是二进制接口, 是更加底层的机制。 我们都熟知 API,是应用程序接口,比如 fun open(path: String) , 这时一个函数签名,只要我们的程序在编译的时候能找到这个方法签名的实现就可以编译通过。这样,我们想改变这个方法的具体实现的时候,并不需要修改我们调用层的代码,只需要将这个方法的实现替换成另外一个库就可以了。
而 ABI 就更加底层了,它是基于语言和系统层面的。如果 Swift 3 对 ABI 的优化做的足够好的话,我们就可以之间在之后的版本中引用老版本 Swift 语言编译的库了。就不用怕 Swift 语言升级之后,很多第三方库都需要修改的问题了。
相信有从 Swift 1.x 迁移到 Swift 2 体验的同学们对这个感触会更深~ 当然,这是 Swift 3 的一个目标,能不能实现就要看社区的力量了。
解决易碎接口问题
所谓易碎接口嘛,是现代程序语言的一个通用问题,它的全称叫做 Fragile Binary Interface。 简单来说呢,就是 Swift 以及当前的大多数主流开发语言中的类的属性,在底层都是通过偏移来访问的,比如book.name, 我们在程序中访问一个对象的属性非常直观。 但他在编译后,实际上是这样的形式location(book) + offset(name)。访问 name 属性是通过 book 对象所在的内存地址加上一个偏移来实现的。
那么 Swift 中的类在编译后,会将它所有的属性的偏移值也都计算出来。这样会加快程序在运行时的执行速度,因为不需要在运行时再计算这些偏移量了。如果所有的类之间没有任何关联就不会有什么问题,但在实际中,我们使用类都会有继承关系。假如我们的主项目中引用了一个外部的库,我们主程序中继承了这个外部库中的类。那么如果这个库中有任何改动,我们都必须重新编译所有的类继承树上面的代码,否则在我们主程序的子类中,就会发生偏移计算错误。
简单来说呢,如果 Swift 3.0 能把 Fragile Binary Interface 处理好的话,对我们开发者最直观的感受就是: 编译速度加快。
关于 Fragile Binary Interface 更详细的内容,大家如果有兴趣的话可以参考这里:en.wikipedia.org/wiki/Fragile_binary_interface_problem
可移植性
这个很简单,就是让 Swift 能移植到更多的其他平台,并且让 Swift 写出的代码,可以正确的运行在所有这些平台上。
全面支持泛型
目前的 Swift 版本已经很好的支持了泛型的大部分特性了,这点大家在看 Swift 2.2 的 API 文档中其实已经能够发现了。但目前还并没有将泛型的特性完全实现,所以这次 Swift 3.0 打算全面支持泛型的所有特性。
发布 API 设计规范
这次还发布了 Swift 语言的 API 设计规范。 这个规范的目的是让大家设计出更加统一的 API,里面给出了很多代码规范,这个非常值得一看,即便我们不去构建开源库,对我们的日常代码风格也是很有帮助的。并且 Swift 3.0 会对大多数 API 根据这个规范进行重新设计。理解了这个设计规范,对我们理解 Swift 语言也是很有帮助的~
总结
Swift 是一个快速发展的语言,开源社区源源不断的给它注入力量。从这次 3.0 的发布内容来看,它正在尝试解决编程语言最前沿的问题,比如 Fragile Binary Interface, 大家有兴趣可以关于它的相关资料,这里就不再赘述。
====================================分割线================================
文章转载自 开源中国社区[http://www.oschina.net]

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Stagefright 补丁不完整,新 0day 漏洞发现
安全公司 Zimperium 发现了一个影响9.5亿 Android 设备的严重漏洞 Stagefright,攻击者可利用特制的彩信控制目标手机,整个过程 不需要机主操作。Zimperium 研究员 Joshua Drake 递交的补丁经 Google 审查后已经推送给 Nexus 设备。但另一家安全公司 Exodus 的研究人员发现,Stagefright 补丁不完整, 没有正确处理32位和64位整数之间的差异,补丁对32位长度有效,但在某些情况下对64位长度无效。Google 已经释出了新的补丁,并计划在下个月的 OTA安全更新中推送给 Nexus 设备。安全公司 MWR Labs 的研究人员在 Android Admin 应用(com.google.android.apps.enterprise.cpanel)中发现了一个新0day漏洞,允许恶意应用绕过沙盒机制的限制读取任意文件。 文章转载自 开源中国社区 [http://www.oschina.net]
- 下一篇
微软放弃部分 MSN 应用,因其人气不高
最近,微软宣布 MSN Food & Drink、MSN Health & Fitness 和 MSN Travel 三款应用都会在近期停止服务或者支持。微软已经公布了这三款应用在 Windows、iOS 与 Android 三大平台上暂停服务的时间表。 MSN Food & Drink:2015年9月28日; MSN Health & Fitness:2015年11月1日; MSN Travel:2015年9月28日。 至于为何会暂停这三款MSN应用,微软也给出了说法: 公司会定期评估业绩来确保我们把精力放在用户认为最有价值的地方。但我们会继续支持那些受用户喜欢的 MSN 应用,包括 News、Weather、Sports 和 Money,它们将会继续在 Windows 10 上服务大家,并继续保持跨平台。 除了三款 MSN 应用外,微软还决定放弃能将图片进行3D处理的应用 Photosynth。简单来说,微软就是想放弃那些人气不高的应用来精简业务。 由于微软不会再支持这些应用,这就意味着我们在 Windows 10 中不会再看到它们。但如果你是从 W...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8编译安装MySQL8.0.19
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7