你的位置:首页 > 操作系统

[操作系统]swift3.0的改变


  Swift在这2年的时间内,发展势头迅猛,在它开源后,更是如井喷一样,除了 iOS、mac 平台,还支持了 Linux。 而今年下半年, Swift 3.0 也会随之发布。https://github.com/apple/swift-evolution详细介绍了3.0的特性

 

  这个版本的主要目标增强语言的二进制接口和标准库的稳定性,作为这个过程的一部分,我们将改善swift语言以提供在体验和执行(feel and implementation)的整体的一致性,Swift 3.0将包含2个对2.X source-breaking的改变,更具体地说,这个版本集中在几个关键领域:

  一、稳定的ABI(Stable ABI)

  提供了稳定的ABI以保证可以向前兼容,这涉及到运行时的数据结构,名称矫正(name mangling),调用约定(calling conventions)等等,

  稳定的ABI也延伸到标准库,它的数据类型,和核心算法。成功的ABI的稳定性意味着将来的swift版本的应用程序和库的编译可以在swift3.0二进制级别的应用程序和库,即使源语言的发生变化。

 

  二、极强的扩展适应能力,为后续的版本打好基础(Resilience)

  所谓易碎接口嘛,是现代程序语言的一个通用问题,它的全称叫做 Fragile Binary Interface。 简单来说呢,就是 Swift 以及当前的大多数主流开发语言中的类的属性,在底层都是通过偏移来访问的,比如book.name, 我们在程序中访问一个对象的属性非常直观。 但他在编译后,实际上是这样的形式location(book) + offset(name)。访问 name 属性是通过 book 对象所在的内存地址加上一个偏移来实现的。

那么 Swift 中的类在编译后,会将它所有的属性的偏移值也都计算出来。这样会加快程序在运行时的执行速度,因为不需要在运行时再计算这些偏移量了。如果所有的类之间没有任何关联就不会有什么问题,但在实际中,我们使用类都会有继承关系。假如我们的主项目中引用了一个外部的库,我们主程序中继承了这个外部库中的类。那么如果这个库中有任何改动,我们都必须重新编译所有的类继承树上面的代码,否则在我们主程序的子类中,就会发生偏移计算错误。

简单来说呢,如果 Swift 3.0 能把 Fragile Binary Interface 处理好的话,对我们开发者最直观的感受就是: 编译速度加快

 

  三、可移植性(Portability)

  这个很简单,就是让 Swift 能移植到更多的其他平台,并且让 Swift 写出的代码,可以正确的运行在所有这些平台上。

 

  四、重新整理类型体系(Type system cleanup and documentation)

  重新设定类型转换规则,以及它们在编译器的类型检查的实施,目的是一个更小,更简单的类型系统,更严格的定义和更可靠的类型检查。

 

  五、全面支持泛型(Complete generics)

  全面泛型化,可以使得 Swift 能提供更好的扩展适应能力,特别是标准库。目前的 Swift 版本已经很好的支持了泛型的大部分特性了,这点大家在看 Swift 2.2 的 API 文档中其实已经能够发现了。但目前还并没有将泛型的特性完全实现,所以这次 Swift 3.0 打算全面支持泛型的所有特性。

 

  六、Focus and refine the language

  聚焦在语言本身,改进语言不好的地方

 

  七、API design guidelines

  这次还发布了 Swift 语言的 API 设计规范。 这个规范的目的是让大家设计出更加统一的 API,里面给出了很多代码规范,这个非常值得一看,即便我们不去构建开源库,对我们的日常代码风格也是很有帮助的。并且 Swift 3.0 会对大多数 API 根据这个规范进行重新设计。理解了这个设计规范,对我们理解 Swift 语言也是很有帮助的~




黑龙江旅游线路报价黑龙江旅游攻略大全黑龙江旅游路线推荐黑龙江自驾游攻略黑龙江旅游线路大全出国游玩别踩“雷区” 看各国奇葩法规(全文) 那些让人疯狂却又住得起的新潮酒店(全文) 惊爆眼球 巡礼全球13大最酷炫旅行创意(全文) 阳西沙扒湾民居住宿?沙扒湾附近有住的地方吗? 中秋节去华南植物园有什么活动?广州华南植物园优惠活动介绍? 2015长隆野生动物园中秋节活动?广州长隆野生动物园中秋节门票多少钱? 长隆欢乐世界中秋票价?中秋节去广州长隆欢乐世界有什么活动? 锦绣中华夜场泼水节门票在哪预订?哪里有深圳锦绣中华泼水节优惠票? 北京到红海滩风景廊道多少公里?北京到红海滩廊道怎么走? 锦州到盘锦红海滩廊道怎么走?锦州到盘锦红海滩廊道有多远? 盘锦北站到红海滩有直达车吗?盘锦北站到红海滩廊道怎么走? 宜春到九龙漂流怎么走?宜春到万载九龙原始森林漂流自驾车路线? 三亚各个景点门票是多少? 去海南吃海鲜的注意事项是什么? 去海南,网上预订酒店可靠吗? 吃海鲜能喝啤酒吗?为什么? 553-0002-851F Datasheet 553-0002-851F Datasheet 553-0002-853 Datasheet 553-0002-853 Datasheet 553-0002-853F Datasheet 553-0002-853F Datasheet 黑河去香港游 黑河去香港游 黑河去香港游 南京去港澳游 南京去港澳游 南京去港澳游 黑龙江去香港旅游 黑龙江去香港旅游 黑龙江去香港旅游