Swift 5 发布!
Swift 5 现已正式发布!
Swift 5 是该语言发展历程中的一个重要里程碑。得益于 ABI 稳定性,Swift 运行时现在已包含在当前和未来版本的 Apple 平台操作系统中:macOS、iOS、tvOS 和 watchOS。Swift 5 还引入了新功能,这些功能是未来版本的基础,包括 String 的重新实现、运行时强制执行对内存的独占访问、新的数据类型以及对动态可调用类型的支持。
您可以试用 Paul Hudson 整理的 playground 中的一些新功能。
语言更新
稳定的 ABI 和二进制兼容性
在 Apple 平台上,Swift 5 的 ABI 现在被声明为稳定。因此,Swift 库现在已集成到未来发布的每个 macOS、iOS、tvOS 和 watchOS 版本中。您的应用将更容易构建,体积更小,因为它们不必包含这些库。
请参阅以下博客文章了解更多详情
标准库更新
Swift 5 中的标准库包括以下新功能
- 使用 UTF-8 编码重新实现的 String,通常可以提高代码速度(有关此更改的更多背景信息,请参阅 UTF-8 String 博客文章)
- 改进了对字符串字面量中原始文本的支持(有关此改进的更多背景信息,请参阅 String Literals 博客文章)
- Result 和 SIMD 向量类型已添加到标准库
- 增强了字符串插值,为从数据构造文本增加了更多灵活性
- 改进了 Dictionary 和 Set 的性能
Swift 5 实现了来自 Swift 演进过程的以下标准库提案
- SE-0200 增强字符串字面量分隔符以支持原始文本
- SE-0211 将 Unicode 属性添加到 Unicode.Scalar
- SE-0214 将 DictionaryLiteral 类型重命名为 KeyValuePairs
- SE-0215 使 Never 符合 Equatable 和 Hashable
- SE-0218 向 Dictionary 引入 compactMapValues
- SE-0221 字符属性
- SE-0225 向 BinaryInteger 添加 isMultiple
- SE-0228 修复 ExpressibleByStringInterpolation
- SE-0229 SIMD 向量
- SE-0232 从标准库的 Collection 层级结构中删除一些自定义点
- SE-0233 使 Numeric 改进新的 AdditiveArithmetic 协议
- SE-0234 删除 Sequence.SubSequence
- SE-0235 将 Result 添加到标准库
- SE-0237 引入 withContiguous{Mutable}StorageIfAvailable 方法
- SE-0239 向 Range 类型添加 Codable 一致性
- SE-0241 弃用字符串索引编码偏移量
其他语言和编译器更新
Swift 5 默认对调试和发布版本都强制执行对内存的独占访问(有关此更新的更多信息,请参阅 Swift 5 独占性强制执行 博客文章)。Swift 5 还支持动态可调用类型,这有助于提高与 Python、JavaScript 和 Ruby 等动态语言的互操作性。
Swift 5 还实现了来自 Swift 演进过程的以下语言提案
- SE-0192 处理未来的枚举案例
- SE-0213 通过强制转换进行字面量初始化
- SE-0216 引入用户定义的动态“可调用”类型
- SE-0224 在编译条件中支持“小于”运算符
- SE-0227 标识键路径
- SE-0230 展平 ‘try?’ 产生的嵌套可选类型
包管理器更新
Swift 包管理器在 Swift 5 中包含许多新功能,包括依赖镜像、特定于目标的构建设置、自定义部署目标以及生成代码覆盖率数据的能力。此外,swift run
命令现在包含在 REPL 中导入库的功能,而无需构建可执行文件。
Swift 5 实现了来自 Swift 演进过程的以下包管理器提案
迁移到 Swift 5
Swift 5 与 Swift 4、Swift 4.1 和 Swift 4.2 源码兼容。
为了帮助从早期版本的 Swift 迁移到 Swift 5,Apple 的 Xcode 10.2 包含了一个代码迁移工具,可以自动处理许多必要的源代码更改。还有一个 迁移指南 可供参考,指导您完成许多更改,特别是那些不太机械化且需要更直接审查的更改。
文档
上提供了 Swift 5 更新版本的 The Swift Programming Language。它也可以在 Apple Books 商店 免费获取。
平台
Linux
Ubuntu 18.04、Ubuntu 16.04 和 Ubuntu 14.04 的官方二进制文件可供下载。
Apple (Xcode)
对于 Apple 平台上的开发,Swift 5 作为 Xcode 10.2 的一部分发布。
工具链也可供下载,请访问 。
源代码
Swift 5 的开发在 GitHub 上以下仓库的 swift-5.0-branch 分支中进行跟踪
- swift
- swift-clang
- swift-clang-tools-extra
- swift-cmark
- swift-corelibs-foundation
- swift-corelibs-libdispatch
- swift-corelibs-xctest
- swift-libcxx
- swift-llbuild
- swift-lldb
- swift-llvm
- swift-package-manager
- swift-stress-tester
- swift-syntax
- swift-xcode-playground-support
- swift-compiler-rt
- swift-integration-tests
标签 swift-5.0-RELEASE
指定了这些仓库中构成 Swift 5 最终版本的特定修订版本。
swift-5.0-branch
分支将保持开放,但在相同的发布管理流程下,用于累积潜在的未来错误修复“点”版本的更改。