Swift 5.1 通过扩展 Swift 5 的稳定特性来增强 Swift 5的优点,Swift
5.1 在编译时引入模块稳定性。有了模块稳定性(Module
stability),可以创建和共享二进制 framework,以便兼容 Swift
的未来版本。Swift 5.1
还扩展了语言和标准库的功能,增加了一些新特性,如属性包装器( property
wrapper)、不透明返回类型(opaque result type)、成员查找(key path member
lookup)以及字符串的新 API。总之,Swift 5.1 的新特性使设计更好的 API
和减少普通样板代码量变得更加容易。具体如下:

IT之家9月21日消息日前,苹果正式发布了其Swift编程语言的下一个迭代,现在已是第四版。Swift4承袭了Swift3的全部优势,兼容此前基于Swift3写就的全部代码,并旨在提供更高的稳定性。

模块稳定性

Swift 5.1 允许创建二进制
framework,且可与其他人共享。模块稳定性定义了一个新的基于文本的模块接口文件,该文件里说明了二进制框架的
API。

同时,Swift4对标准库进行了改进,并增加了存档和序列化等功能。

标准库更新

Swift 5.1 中的标准库包括以下新特性:

  • 支持处理和更新集合类型上的差异
  • 增加在分配数组存储之前初始化和访问数组的灵活性
  • 新的 API 使用 String 会更容易,包括创建和处理 contiguous
    string、用于处理 Unicode 文本的帮助程序和用于 String.Index 和 Range
    的泛型构造器
  • 用于使用 SIMD 类型的各种增量 API
    改进,包括对扩展向量、reduction 操作和向量 swizzle 的支持
  • 支持需要唯一标识符的实体的可标识协议

Swift4带来了更快、更容易使用的String实现,可以保持Unicode的正确性,并增加对创建、使用广告管理子串的支持,它提高了开发者创建、使用和管理集合类型的能力,它支持结构化枚举类型的归档并允许对外部格式进行类型安全的序列化,包括JSON和plist。

其他语言和编译器更新 

澳门新葡萄京官网注册 ,Swift 5.1 包括以下新的语言特性:

  • 属性包装器引入了通用语法,用于定义属性值的自定义访问模式,包括(但不限于)延迟初始化方法(Delayed
    initializer)、原子操作、特定于线程的存储与复制即写行为等
  • 不透明返回类型(opaque result
    type)允许使用泛型类型来支持符合同一协议的不同类型,或者在 api
    中隐藏实现细节信息
  • return 关键字不是单个表达式闭包所必需的
  • Self 现在可以用于类和值类型
  • 编译器现在使用默认构造器合成属性的默认值

如上文所述,Swift4与Swift3兼容,编译器现配有两种语言模式,即Swift3.2和Swift4.0,在Swift3.2模式下,编译器将接收大部分使用较旧的语言版本构建的源码,为保持兼容性,以前存在的API更新将不会出现在此模式下。苹果也表示,Swift4的功能在这种模式下可用。

SwiftSyntax 更新 

SwiftSyntax 已经被重构,通过直接使用
Swift
编译器的解析器来提高它的性能。此外,通过重构内部数据结构,提高了语法树访问和相关操作的性能,从而提高了效率。

在Swift4.0模式下,开发者可以利用所有的语言和API变化,但是大多数项目都需要一些代码迁移,尽管如此,苹果认为从Swift3到Swift4的过渡还是相对温和的。

语言服务器协议

MacOS 和 Ubuntu 的 Swift 5.1 OSS 工具包包括 SourceKit-LSP
的二进制文件,它是 Swift 和基于 C
的语言服务器协议(LSP,Language
Server Protocol)的实现。

Swift 5.1与 Swift 5 兼容,且兼容 Swift 4.2 和 Swift
4/4.1。详情见发布公告。

下载:

  • Linux:Ubuntu 18.04、Ubuntu 16.04 和 Ubuntu 14.04
    的官方二进制文件可供下载。
  • 苹果(Xcode):SWIFT 5.1 作为 Xcode
    11
    的一部分,此外还有工具链可以下载:swift.org。
  • 源码

(文/开源中国)    

在苹果的平台上,Swift4作为Xcode9的一部分,你可以在Mac App
Store中下载到,同时,苹果已经为Ubuntu 16.10、Ubuntu 16.04和Ubuntu
14.04编译了官方的二进制文件,你可以下载、安装并学习。