0
点赞
收藏
分享

微信扫一扫

Swift 周报 第八期

前言

在 199 期的 Swift 周报中,负责人 ​​Kristaps Grinbergs​​ 向所有读者发出邀请,内容如下:

大家好! 我真心希望你们享受完感恩节,并且能够和你所爱的人一起度过这个假期。 也许你们中的一些人甚至玩过钱德勒发明的在 6 分钟内命名所有 50 个州的游戏。

感恩节之后的这段时间对 Swift 团队来说收获颇丰,今天有很多活动要讨论。 但在我们开始之前,我想利用这个机会说下一期将是我的最后一期,也许是这个项目的最后一期。 如果有人有兴趣接替我的职责,请告诉我。 我很想看到这个项目在我离开后继续存在并蓬勃发展。

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

新闻和社区

Keith Smiley 分享了有关 Swift 5.5 的更新及其​​精选分类过程​​。

John Sundell 写了​​一篇文章​​​,探讨如何使用 ​​count​​​ 与 ​​isEmpty​​ 来检查集合是否包含任意元素。

Will Lisac 在推特上表示,适用于 ​​Raspberry Pi​​​ 的 ​​Swift 5.5 Docker 镜像​​ 现已可用。

Feli 创作的精彩​​插图​​​。 她在各种会议上的​​绘画作品​​值得一看。

Max Desiatov 宣布 ​​SwiftWasm 5.5.0​​ 现已可用。

同意的提案

SE-0328​Structural opaque result​​​ 类型已被​​接受并进行了修改​​。

在审核期间,主要讨论了两个方面: - 可选类型的拼写。 提案将其保留为 ​​(some P)?​​​,尽管 ​​some P?​​​ 更简洁,可能被作为语法糖。 核心团队更同意这种保守的方法,稍后可以在对该功能有更多经验后重新考虑。 - 当返回函数类型即 ​​​f() -> (some P) -> Void​​​ 时,在“消费”而不是“生产”位置使用 ​​some​​​。 ​​some​​​ 关键字的其他用途正在讨论中,并且担心与某些未来特性存在潜在冲突。 由于在消费位置使用 ​​opaque result​​​ 类型不是特别有用(这种函数在所有情况下都是不可调用的),因此核心团队决定将这种使用子集化,目前仅在返回函数类型的返回值中要求 ​​opaque result​​ 类型。

正在审查的提案

SE-0332:​​包管理器命令插件​​正在审查中。

SE-0303 引入了在 SwiftPM 中定义构建工具插件的能力,允许在构建过程中自动调用自定义工具。 该提案扩展了该插件支持以允许定义自定义命令插件——用户可以直接从 SwiftPM CLI 或从支持 Swift 包的 IDE 调用的插件,以便对其包执行自定义操作。

SE-0331: ​​从不安全的指针类型中删除 Sendable​​正在审查中。

SE-0302 引入了 ​​Sendable​​​ 协议,包括对各种语言结构的 ​​Sendable​​​ 要求,各种标准库类型对 ​​Sendable​​​ 的一致性,以及非公共类型隐式符合 ​​Sendable​​ 的推理规则。

​Sendable​​ 的使用经验表明,这种表述是不必要的危险,并且会对隐式一致性产生意想不到的负面影响。

SE-0333:正在审查 ​​withMemoryRebound​​。

函数 ​​withMemoryRebound(to:capacity:_ body:)​​​ 执行一个闭包,同时将一定范围的内存临时绑定到与被调用者绑定的类型不同的类型。 我们建议解除 ​​withMemoryRebound​​ 的一些显着限制,并允许重新绑定到更大的类型集,以及从原始内存指针和缓冲区重新绑定。

请注意,此提案与 SE-0334 同时运行,这也与不安全的指针可用性有关。

SE-0334:正在审查​​指针可用性改进​​。

该提案为 ​​UnsafePointer​​​ 及其 ​​Mutable​​​ 和 ​​Raw​​ 变量引入了一些质的改进。

  1. 添加一个 API 以获取一个​​UnsafeRawPointer​​ 实例,该实例从其起点前进到给定的对齐方式。
  2. 在给定​​UnsafePointer<T>​​​ 的情况下,添加 API 以获取指向聚合​​T​​ 的存储属性的指针。
  3. 添加比较任意两种类型的指针的能力。

请注意,此提案与 SE-0333 同时运行,这也与不安全的指针可用性有关。

Swift 论坛

I

Ethan Kusters 开始讨论​​在静态托管环境中支持托管 DocC 档案​​。

这篇文章讨论了 Swift-DocC 和 Swift-DocC-Render 的增强功能,这将允许开发人员构建无需自定义路由即可托管的 DocC 档案。 这是专门为使 DocC 能够在其他静态托管环境中使用而设计的,最显着的是 GitHub Pages。

此更改旨在作为解决紧迫需求的快速解决方案,并提供普遍的好处。 但请注意,我们已经听到社区的反馈,他们希望 Swift-DocC 直接发出静态 HTML,并且此功能在优先级列表中居高不下。

II

Sam Deane 提出了一个想法来​​实现一个默认的可初始化协议​​。

Kristaps Grinbergs 遇到过工厂类型的情况,最终制定了一个协议来表示“可以使用不带参数的默认 ​​init​​ 构造这种类型”。

Kristaps Grinbergs 发现他感到惊讶: (a) 这个协议是否已经存在于标准库中的某个地方,以及 (b) 如果 ​​init()​​ 存在,Swift 是否可以自动使任何类型符合它。

III

一个好的​​提醒​​​, ​​库 Swift Numerics​​ 确实存在。

Guillaume Lessard 提出了使缓冲区切片更有用的​​提案​​,尤其是在缓冲区的部分初始化方面。

​UnsafeBufferPointer​​​ 系列的子序列具有 ​​UnsafeBufferPointer​​​ 的所有 ​​[Mutable]Collection​​ API,但没有它们特定于缓冲区的 API。 这使得缓冲区的部分初始化以及其他任务变得困难。

推荐博文

LeetCode 系列

该系列的文章中有 5 篇 Top 100 高频题

​​LeetCode - #1 两数之和​​

难度水平:容易,公司面试使用频率如下:

公司

频率

Amazon

★★★★★★

Facebook

★★★★★

Airbnb

★★★★★

Microsoft

★★★★★

LinkedIn

★★★★

​​LeetCode - #2 两数相加​​

难度水平:中等,公司面试使用频率如下:

公司

频率

Microsoft

★★★★

Amazon

★★

Airbnb

★★

​​LeetCode - #3 最长未重复子字符串​​

难度水平:中等,公司面试使用频率如下:

公司

频率

Amazon

★★

​​LeetCode - #4 求两个有序数组的中间值​​

难度水平:困难

​​LeetCode - #5 求最长的镜像字符串​​

难度水平:中等,公司面试使用频率如下:

公司

频率

Amazon

★★

难度水平:容易、中等、困难

公司使用频率:1 ~ 6 颗 ★

关于我们

Swift社区是由 Swift 爱好者共同维护的公益组织,我们在国内以微信公众号的运营为主,我们会分享以 Swift实战SwiftUlSwift基础为核心的技术内容,也整理收集优秀的学习资料。

欢迎关注公众号:Swift社区


举报

相关推荐

0 条评论