Swift 2023:强调并发、泛型和C++互操作性,开发Swift解析器
语言工作组 —— 发展语言和标准库
网站工作组 —— 管理
swift.org
网页内容文档工作组 —— 组织文档工具和库的开发
C++ 互操作性工作组 —— 孵化语言提案以提高与 C++ 的互操作性
并发。完成对
Sendable
和 actors 提供的严格数据隔离的语言支持。计划包括关闭许多已知的线程安全漏洞,例如围绕全局变量和某些 cross-actor 调用的漏洞。它还包括配备一些功能来解决因 strict isolation 而产生的可用性问题,例如允许 non-Sendable 在受限情况下在隔离域之间移动。泛型。语言工作组打算致力于可变参数泛型语言特性工作。这是一项预计需要多年才能完成的主要功能,最初侧重于设计核心语言模型并实现编译器和运行时基础架构以支持它。一个早期的里程碑将是允许元组类型在其元素符合 Equatable 等协议时有条件地符合协议。
所有权。
开发功能让程序员明确控制内存中值的所有权。
添加对 non-copyable 类型的基本支持。这将提供通过限制关键值的生命周期来实现高性能的新方法。这些控件将启用处理内存中数据的新方法,将当前 “不安全” 构造的性能与 Swift 标准库功能的安全性相结合。
宏。着眼于进一步支持创建丰富的库和 DSL。这项工作将从创建 vision document 开始,为宏能够在 Swift 中实现什么以及它们如何融入语言进行设计。
C++ 互操作性。
编写文档,阐述如何使 C++ API 在 Swift 中可用,反之亦然。
稳定当前在 Swift 中使用 C++ 的原型互操作性功能,包括 owned value types、trivial value types、API 模式(例如外部引用类型和迭代器),以及一些关于方法、指针、l-value 和 r-value 引用的一些基本问题。
稳定当前用于从 C++ 使用 Swift 的原型互操作性功能,包括 Swift 值类型、引用类型和函数 exposed 给 C++ 的方式。
开发一个 Swift 解析器,它是用纯 Swift 编写的,并且具有当前 C++ 实现的功能。这开辟了工具开发的新方向,最终将取代 C++ 解析器。
通过将类型推理实现迁移到支持 multi-statement closure 推理的更具可扩展性的基础架构,提高结果 result builders 的类型检查性能。
通过与类型检查器更紧密地集成,提高 code completion 和 lookup-dependent 工具(例如快速帮助和跳转到定义)的可靠性,尤其是在不完整或不明确的代码中。
在某些情况下,通过消除对转换 thunk 的需要,在转换函数时生成更少的代码,尤其是在将 closures 传递给通用函数和导入函数时。
通过解释 type layout 的 compact encoding 而不是发出 specialized functions,在 copying 和 destroying 复杂的结构和枚举时生成更少的代码。
添加 SIL 优化器支持新语言功能和与 object lifetimes 和 copies 相关的可预测优化。团队正在设计一套新的 low-level SIL 实用程序,以在整个现有优化管道中保持所有权不变性。这将导致可靠的诊断和可预测的性能。
在 Swift 中重写当前的过程间 side-effect 和 escape analyses,替换当前的 C++ 实现。新的实现提供了更准确的结果并且明显更简单。
往期推荐
马斯克晒出Twitter架构图
微软WSL 1.0发布
50万用户无人付费,Kite停止开发
点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦~