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]

时间: 2024-09-19 14:07:28

Swift 3.0 将会带来什么的相关文章

Swift 2.0初探: 值得注意的新特性

转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度的WWDC大会如期而至,在大会上Apple发布了Swift 2.0,引入了很多新的特性,以帮助开发者能更快,更简单的构建应用.我在这里也说道说道Swift 2.0中值得大家注意的新特性. guard语句 guard语句和if语句有点类似,都是根据其关键字之后的表达式的布尔值决定下一步执行什么.但与if语句不同的是,guard语句只会

我们期待的 Swift 3.0 将会是什么样?

我们期待的 Swift 3.0 将会是什么样? -- 此调查来自官方的 Swift 社区 随着诸如协议扩展.错误处理等 Swift 2.0 新引入的强大特性发布,这都意味着苹果已经明确表示,它们非常积极地听取来自开发者社区的意见来帮助完善和改进这门语言.我们调查了几位使用 Swift 的开发者朋友,询问他们对下一个版本的 Swift 有何希冀,因此他们将在类型系统.协议以及工具等方面和我们一起分享他们的想法. Sash Zats Labgoo.Wondermall 的 iOS 工程师.用户体验设

抢先看 Swift 3.0

本文讲的是抢先看 Swift 3.0, 这篇文章介绍了 Swift 3.0 的目标.发布进程和预计的时间表. Swift 3.0 是一个不兼容 Swift 2.2 语法的大版本更新.它对语法和基本库有着根本性的改变.Swift 3.0 实现的完整修改列表可以在 Swift evolution site 中查看. Swift 3.0 是首个包含 Swift Package Manager 的发布版本.现在 Swift Package Manager 还处于早期开发版本,它支持开发和发布跨平台的 S

Swift 3.0在集合类数据结构上的一些新变化总结_python

一.Array数组的更改 array数组中修改的API示例如下: //创建大量相同元素的数组 //创建有10个String类型元素的数组,并且每个元素都为字符串"Hello" //swift2.2 //var array3 = [String](count: 10, repeatedValue: "Hello") //swift3.0 var array3 = [String](repeating: "Hello", count: 10) //创

《从零开始学Swift》学习笔记(Day 3)——Swift 2.0之后增加的关键字

 Swift 2.0学习笔记(Day 3)--Swift 2.0之后增加的关键字   原创文章,欢迎转载.转载请注明:关东升的博客  看了之前的学习笔记知道了什么是关键字,现在提示各位在Swift 2.0之后增加defer.guard.repeat.catch.rethrows.hrow.throws和try关键字,其中repeat关键字替代do - while循环中的do,即中repeat - while循环.而do关键字用于错误处理.catch.rethrows.throw.throws

Swift 3.0 新增安全特性的一点普及

本文讲的是Swift 3.0 新增安全特性的一点普及, 在 Swift 发布之后,Swift 的开发者一直在强调,安全性与可选择类型是 Swift 最为重要的特性之一.他们提供了一种nil的表示机制,并要求有一个明确的语法在可能为nil的实例上使用. 可选择类型主要以下两种: Optional ImplicitlyUnwrappedOptional 第一种做法是一种安全的做法:它要求我们去拆解可选类型变量是为了访问基础值.第二种做法是一种不安全的做法:我们可在不拆解可选择类型变量的情况下直接访问

《从零开始学Swift》学习笔记(Day 7)——Swift 2.0中的print函数几种重载形式

 原创文章,欢迎转载.转载请注明:关东升的博客   Swift 2.0中的print函数有4种重载形式: print(_:).输出变量或常量到控制台,并且换行. print(_:_:).输出变量或常量到指定类型的流中,并且换行. print(_:appendNewline:).输出变量或常量到控制台,appendNewline参数是布尔值,true表示换行,false表示不换行. print(_:_:appendNewline:) .输出变量或常量指定类型的流中,appendNewline参

v聊聊 Swift 3.0 - 新版本对我们的影响

聊聊 Swift 3.0 - 新版本对我们的影响 Swift 近两年的发展势头非常的迅猛,而在它开源后,更是如井喷一样的势头,除了 iOS 平台,还支持了 Linux. 而今年下半年, Swift 3.0 也会随之发布.这次我就和大家聊一下 Swift 3.0 会有什么新东西吧. Swift 专门为版本更新相关的文档创建了一个 Guihub 主页,地址是 https://github.com/apple/swift-evolution . 这里面列出了 Swift 3.0 版本着重处理的地方,我

《Swift语言》中文版 Swift 2.0 已经完成!

<Swift语言>中文版 Swift 2.0 已经完成!<The Swift Programming Language>简体中文版升级至 Swift 2.0. 1 开源项目完成难,维护更难. 大家看到的是发布时的瞩目和荣耀,却没有看到项目本身质量不高.错误频出.这并不是翻译者和校对者的问题,他们已经付出了足够的努力.真正的问题在我,没有建立起长期的维护团队,因此后期的校对和更新都难以实施. 1.0发布之后,我们就再也没能和苹果的文档同步.语法错误.编译不通过.语言不通顺,阅读量直线