2023 年 Swift 项目进展

Swift 项目正在进行许多令人兴奋的工作,由于这些工作发生在许多不同的代码仓库、pull request 和论坛帖子中,因此很难跟踪所有进展。为了让社区更好地了解全局,核心团队调查了项目中的各个工作组和开发者,收集了他们在接下来一年中的工作重点信息。

请记住,这里的所有内容都不能保证会包含在项目的任何特定版本中——计划和优先级会随着时间推移而变化。 这也不是项目中正在发生的所有事情的详尽列表。 但是我们希望您觉得这些内容有趣且信息丰富,如果您对其中任何领域有疑问,请随时联系并询问更多详情。

社区组织

长期以来,Swift 拥有相当中心化的结构,核心团队直接监督项目的许多不同领域。

核心团队最近开始重组,以便更多责任由专门的工作组承担

这些新的工作组加入了长期存在的 Swift on Server多元化 工作组,并使人们更容易通过加入致力于其兴趣的工作组来做出贡献。

核心团队正在研究创建更多的工作组,包括一个致力于提高 Swift 在跨平台上的可用性的工作组。

核心团队更新

Mishal Shah 将加入核心团队。作为 Swift 项目许多底层基础设施的领导者和倡导者,在相当长一段时间内,Mishal 在支持 Swift 项目的发展方面发挥了至关重要的作用。

语言开发

语言工作组致力于在五个主要的语言领域取得进展

  1. 并发。 完成对 Sendableactors 提供的严格数据隔离的语言支持。 这包括弥补许多已知的线程安全漏洞,例如围绕全局变量和某些跨 actor 调用的漏洞。 它还包括可能添加语言特性来解决严格隔离带来的一些可用性问题,例如允许非 Sendable 值在受限情况下在隔离域之间移动。

  2. 泛型。 开始认真研究可变泛型语言特性。 这是一个预计需要多年才能完成的主要特性。 最初的重点是设计核心语言模型,并实现支持它的基本编译器和运行时基础设施。 一个早期的里程碑将是允许元组类型在它们的元素符合协议(如 Equatable)时有条件地遵循这些协议。

  3. 所有权.

    • 开发特性以使程序员能够显式控制内存中值的所有权。 这包括禁止隐式复制、在上下文之间转移所有权以及显式“借用”值而不复制它们的功能。

    • 添加对不可复制类型的基本支持。 这将提供通过限制关键值的生命周期来实现高性能的新方法。 这些控制将提供使用内存中数据的新方法,将当前“不安全”构造的性能与 Swift 标准库特性的安全性相结合。

  4. 。 开发过程宏的基础知识,以进一步增强富库和 DSL 的创建。 这项工作将从创建愿景文档开始,以阐述宏在 Swift 中可以实现的目标以及它们如何融入语言。

  5. C++ 互操作性.

    • 编写文档,阐述如何使 C++ API 可从 Swift 使用以及反之亦然的设计愿景。

    • 稳定当前已原型化的互操作性特性,以便从 Swift 中使用 C++,其中包括拥有的值类型、平凡的值类型、API 模式(例如外部引用类型和迭代器)以及围绕方法、指针以及左值和右值引用的一些基本问题。

    • 稳定当前已原型化的互操作性特性,以便从 C++ 中使用 Swift,包括 Swift 值类型、引用类型和函数如何暴露给 C++。

由此工作产生的任何语言更改都将按照 Swift 演进流程 进行提案和审查。

语言工作组还致力于改进和澄清演进流程,并将发布管理提案时使用的流程的详细文档,以及提案作者和审阅者的指南。

最后,语言工作组计划最终确定即将到来的 Swift 6 语言模式的预期语言更改。 Swift 定期引入新的语言模式,以便语言可以进步,而不会破坏现有代码的源代码兼容性。

构建系统集成和改进

编译器开发团队正在努力改进编译器与构建系统以及自身其他调用的交互方式

软件包注册表

Swift 软件包管理器的开发重点是与社区合作,开始开发开源软件包注册表服务器实现。 目标是创建将 Swift 软件包生态系统从基于源代码控制过渡到基于注册表所需的技术组件,从而增强生态系统的安全性和可靠性。 我们将与社区运营的项目(例如 Swift Package Index)合作,以确保在注册表带来的好处之外,还能实现出色的软件包发现功能。

实现改进

编译器开发者专注于实现层面的几项改进

文档工作组

新成立的文档工作组很高兴推动 Swift 生态系统中更好的文档体验。 在接下来的一年中,工作组将改进工具以满足文档需求,并指导为 Swift 项目文档做出贡献的新努力。

为了鼓励 Swift 生态系统中更多更好的文档,工作组的举措将是双重的

  1. 简化使用 Swift-DocC 开始编写和发布文档的流程。 一个目标是使开发人员无需配置额外的插件即可生成文档。

  2. 扩展 Swift-DocC 的范围以支持多目标项目配置和长篇散文内容。 对于由多个库组成的软件包,支持为整个软件包而不是其每个单独的库发布文档。

工作组还将支持新开源的 “The Swift Programming Language” 书籍的开发,目标是用新仓库的内容替换现有的发布管道。 这项工作将包括定义为 Swift 语言编写优秀文档的指南,以及为 Swift 生态系统定义文档指南的长期目标,类似于 API 命名指南。

网站工作组

新成立的网站工作组 专注于从多个方面增强 swift.org 网站

Swift on Server 工作组

Swift on Server 工作组继续专注于推进 Swift 在服务器和 Linux 上的状态,与社区合作创建高质量的库和工具,并提高在行业中的知名度。 工作组专注于以下几个领域

可微 Swift

在支持 AI/ML 应用方面,可微 Swift 的工作仍在继续,重点关注多项改进

参与其中

如果您有兴趣参与其中,有很多方法可以做到。

语言更改会经历演变过程,因此请密切关注您感兴趣的工作的讨论主题、提案和提案审查

如果您对这篇文章中的任何项目有疑问或反馈,请联系相应的工作组或在与这篇文章关联的论坛帖子上提问。