Swift 5 发布!

Swift 5 发布!

Swift 5 发布!

2019年3月25日

Ted Kremenek

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 版本中。您的应用将更容易构建,体积更小,因为它们不必包含这些库。

请参阅以下博客文章了解更多详情

ABI 稳定性和更多

ABI 稳定性之后 Apple 平台上的 Swift 演进

标准库更新

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 演进过程的以下包管理器提案

SE-0219 包管理器依赖镜像

SE-0236 包管理器平台部署设置

SE-0238 包管理器目标特定构建设置

迁移到 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 分支将保持开放,但在相同的发布管理流程下,用于累积潜在的未来错误修复“点”版本的更改。

撰写人

Ted Kremenek

Ted Kremenek 是 Swift 核心团队的成员,并在 Apple 管理语言和运行时组。

UTF-8 String Linux 上 Swift 的线程清理器

养生小贴士

cnc编程学徒大概学多久要学什么
💡 小知识

cnc编程学徒大概学多久要学什么

📅 07-01 👍 705
英雄联盟天启者皮肤手感排行,征服者卡尔玛价格及特效一览
帮助中心 - 陌陌
💡 小知识

帮助中心 - 陌陌

📅 07-12 👍 248