Swift 周报 第六期

周报仓库:https://github.com/SwiftCommunityRes

前言

译者言:周日立冬,北方多地迎来 2021 年的第一场雪,上海也降下大雨,此时你所在的城市降温了吗?记得添衣保暖,避免感冒生病影响工作和生活。

Xcode 13.2 Beta 版已具备并发支持,该特性将有助于解决很多 Swift 开发者的某些痛点。或许 Swift 内置的并发系统最重要的好处是,它允许以更简单的方式,并行执行多异步任务。可以想像,通过增加执行任务的速度这将节省我们更多时间。

Kristaps Grinbergs Swift 周报负责人在本期周报中公开自己将不再领导 Swift 周报项目,原文如下:

我非常高兴地编写这么优秀并且已经运营了三年的 Swift 新闻周报。我遇到了很多了不起的人,并且感谢你们所有人,我已经收获了很多! 这是为什么打出下面这句话,让我感慨万千的原因。第 200 期周报将是我运营的最后一期。我已经决定不再领导这个项目,并且怀着愉悦的兴奋,我正在寻找愿意继续管理 Swift 周报的人。

为了 Swift 社区周报持续稳定的发布更新,我们希望邀请 Swift 爱好者参与周报编辑,同时邀请赞助商对我们平台赞助支持。

入门任务

SR-15408 [Swift-DocC] 用含有空格的回调显示名称构建文档会产生一篇无法阅读的文章

译者注: 如果将带有空格的回调显示名称(如 –fallback-display-name “My Display Name”)以及有效的符号图传递给 DocC,DocC 会生成一篇以“我的显示名称”作为 H1 的文章标题并将其组织在顶级框架页面上的“文章”主题组下。

新闻和社区

新的 Xcode 13.2 Beta 增加了对 macOS 10.15、iOS 13、tvOS 13 和 watchOS 6 或更高版本的 Swift 并发支持。 这种支持包括async/awaitactor、全局 actor,结构化的并发及其任务 API。

Tim Condon 发布了 Vapor 已经支持 async/await

Konrad ktoso Malawski 写了一篇介绍 Swift Distributed Actors 的文章。

Marc Aupont 将加入 Diversity in Swift 工作组。

Swift 下载链接已移至新位置以提供更快的下载速度! 工具链将托管在 download.swift.org,它将使用与当前 URL 类似的模式。 要使用新 URL,请将 swift.org/builds/ 替换为 download.swift.org/。 从 2021 年 10 月 26 日开始,swift.org/builds URL 已重定向到新的子域。

Sarun Wongpatcharapakorn 写了一篇博文解释 Swift 中的 KeyPath

Commits 和 pull requests

Erik Eckstein 合并了一个 pull request,该请求实现了性能注释的原型,如 Swift 中的 @_noLocks@_noAllocation

Slava Pestov 合并了一个 pull request,该请求改进了对“身份一致性”的处理 [P].[P] => [P]

John McCall 合并了一个 pull request,该请求修复了高度对齐的结果类型的未来片段的对齐方式

同意的提案

SE-0325 附加包插件 API 提案已被修改并同意。

正在审查的提案

SE-0326: 多语句闭包参数/结果类型推断正在审查中.

Kristaps Grinbergs 建议通过启用闭包体的参数和结果类型推断,来改进多语句闭包推断行为。 这将令类型推断更符合开发者的预期,并且移除现存的行为壁垒,即向闭包添加一个表达式或语句会导致编译失败的结果。

SE-0327: On Actors and Initialization正在审查中。

Actors 是 Swift 中相对较新的名义类型,为其可变态提供了数据竞争安全性。数据保护是通过将每个 actor 实例可变状态一次最多隔离一个任务来实现的。引入 actorSE-0306)的提案非常庞大和详细,但忽略了创建和销毁 actor 隔离状态的一些细微之处。 该提案旨在支持一个 actor 的定义,为了弄清一个 actor 实例的数据隔离何时开始和结束,以及在一个 actorinitdeinit 函数声明中能够做什么。

SE-0328Structural opaque result 类型正在审查中。

Opaque 结果类型可以用作函数的结果类型、变量的类型或者下标的结果类型。在所有情况下, Opaque 结果类型必须是整个类型。该提案建议解除该限制,并且在“结构性”的位置中允许使用 Opaque 结果类型。

Swift 论坛

I

一个来自 @justkwin 关于 Foundation 如何使用 URL 结束来表示 file.paths 的小历史教训

II

Anders Bertelrud 提出了添加包管理器命令插件的提案

SE-0303 引入了第一种 SwiftPM 插件,专注于使用自定义构建工具调用扩展构建系统的能力(特别是为了生成源代码)。 那些插件一直计划成为第一种被 SwiftPM 支持的插件。

Kristaps Grinbergs 想提出一个提案草案,为 SwiftPM 添加另一种更通用目的的“命令插件”。 这些类型的插件可以由用户直接调用,用于源代码格式化、文档生成、测试报告生成等。命令插件不一定与构建系统有任何关系。

这些自定义命令插件一个重要的方面是它们可以要求插件主机(SwiftPM 或支持包的 IDE)按需生成专门的信息,或着初始化构建或测试运行。 这是提案草案中最需要仔细审查的部分。 在使 API 足够丰富以令其尽可能有用,同时也使其足够通用以不仅在 SwiftPM 中而且 IDE 中支持 Swift 包,这里有一个相悖的因素。

III

Guillaume Lessard 提出了一项提案,该提案将实现指针族初始化改进

UnsafeMutablePointer 系列中的类型通常需要手动管理内存分配,包括对其初始化状态的管理。 涉及的状态是在分配后:

  1. 未绑定和未初始化时(当在 UnsafeMutableRawPointer.allocate() 返回)
  2. 绑定到一个类型,并且未初始化(从 UnsafeMutablePointer<T>.allocate() 返回)
  3. 绑定到一个类型,并且初始化

无论何时它未曾被初始化,内存都能够安全地销毁。

不幸的是,不是每一个 UnsafeMutablePointer 系列中的类型有这个必要功能,以用于全面管理它内存初始化的状态。 我们打算在本提案中解决这个问题,并提供在各种更广泛的情况下管理初始化状态的功能。

IV

Kelvin Ma 展开了一个关于 AsyncStream 构造函数的讨论,该构造函数也返回其 Continuation

有没有什么方法我们可以向 AsyncStream 添加一个 API,它直接返回 Continuation,从而我们就不必把它的闭包“调来调去”?

一般来说,我也觉得 AsyncStream 真的很难使用,因为迭代在创建了 AsyncStream 的同一个任务中发生,甚至是没有并发迭代时曾出现。 这使“订阅” actor 对象生成的事件变得困难,即使订阅方法被标记为 nonisolated

V

Adam Fowler 积极将 MQTTNIO加入 SSWG 包列表中.

MQTT 是一种通常用于与 IoT(物联网)设备进行通信的消息传递协议。 它是一种轻量级的发布/订阅消息传输,旨在具有较小的代码占用空间和网络带宽。

VI

Cory Benfield 向我们更新了关于 SwiftNIO Swift 版本支持。

SwiftNIO 团队已将其作为我们工作流程的主要支柱,以尝试在相当长的时间内支持 Swift 版本。大多数用户没有利用这一点,更愿意继续使用最新版本的 Swift,但我们认为重要的是你要有信心,新编写的应用程序将在未来获得一些有意义的支持。

VII

Victoria Mitchell 写了一篇关于扩展 Swift-DocC 以支持 Objective-C 的文档。

DocC 的架构目前仅支持 Swift 一个语言的渲染符号文档。然而,有些跨语言项目可以从将多个“语言变体”收集到同一组文档中受益,例如可以被 Swift 中调用的 Objective-C API,反之亦然。

关于我们

公众号是由 Swift 爱好者共同维护,我们会分享以 Swift 实战、SwiftUI、Swift 基础为核心的技术内容,也整理收集优秀的学习资料。欢迎关注公众号:Swift社区,后台点击进群,联系我们获取更多内容。

Swift社区

感谢 SwiftWeekly 与我们的合作,开启 Swift 周报中文版发布之旅。周报仓库:https://github.com/SwiftCommunityRes

后续还会翻译大量资料到我们公众号,有感兴趣的朋友,可以加入我们,扫码添加微信


fzhanfei
-------------本文结束感谢您的阅读-------------

本文标题:Swift 周报 第六期

文章作者:Swift社区

发布时间:2021年10月25日 - 11:10

最后更新:2021年11月08日 - 15:11

原始链接:https://fanbaoying.github.io/Swift-周报-第六期/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

坚持原创技术分享,您的支持将鼓励我继续创作!