首先,Xcode 10.2 已经支持了 Swift 5,而 Xcode 11 会支持 Swift 5.1,其实 SwiftUI 的背后就有 Swift 5.1 的新 API。
关于 ABI 和 SPM 就不再赘述了,下面是 Session 中提到的一些 Swift 5.1 中的新内容和改进。
Performance
- 代码大小缩小了 10%
- 如果开启了 Optimized for Size,代码大小会缩小15%
NSDictionary
到Dictionary
的桥接提高了1.6倍NSString
到String
的桥接提高了15倍String
的默认编码由 UTF-16 改为了 UTF-8- 基于 SwiftNIO 的 HTTP RPS 提高了 20%
Swift Tooling and Open Source
- 提供了官方的 Swift Docker Image
- SourceKit,一个提供代码编译、跳转到定义和重构的工具集
- Language Server Protocol,配合 SourceKit 可以让任何遵守这个协议的编辑器都能编辑 Swift,比如 Vim
Language and Standard Library
- 增加了 implicit return from single expressions
- 增加了对成员变量的 synthesized default values
- 改进了针对向量运算的 API:SIMD
- String Interpolation 的速度提升了,而且可以增加 interpolation 的行为了,比如本地化
- 增加了一个关键字
some
,用于修饰 Opaque Result Types,具体使用方法请看这篇 泛型语法改进第一弹 —— Opaque Result Types - Property Wrapper Types,就是把具有相同逻辑的property 的读写包装起来,比如 UserDefaults 的操作,这样就可以减少许多冗余代码
- 可以用 Swift 定义 DSL 了,SwiftUI 的语法其实就是一种 DSL