当前位置:   article > 正文

翻译:Swift to Add Support for Ownership, Macros, and C++ Interop(Swift将增加对所有权、宏和C++互操作的支持)_ownership swift

ownership swift

在这里插入图片描述

Swift语言工作组详细介绍了2023年及以后Swift开发的主要重点领域,包括定义内存管理的所有权模型、不可复制类型、宏系统和C++互操作性。
所有权是内存管理的一种方法,最近由于Rust而变得流行,Rust是最具定义性的语言特性之一,也是其提供内存安全保证能力的基础。
Rust使用了第三种方法:内存是通过拥有一套规则的所有权系统来管理的,编译器会检查这些规则。如果违反任何规则,程序将无法编译。所有权的所有功能都不会在程序运行时减慢程序的速度。
关于在Swift引入所有权的讨论始于2017年,并导致了所有权宣言的定义。
虽然所有权方面的工作没有取得任何进展,但Swift语言工作组正在将其重新引入,目的是为程序员提供对内存值的更多控制。这可能包括禁止隐性复制、允许所有权转让以及在不复制的情况下借用价值。此外,Swift还可以获得对不可复制类型的支持,以限制关键值的生命周期。
这些控件将为处理内存中的数据提供新的方法,将当前“不安全”构造的性能与Swift标准库特性的安全性相结合。
Swift的另一个有前途的领域是创建过程宏系统,以创建高级库和DSL。宏是一种代码生成机制,它在词法、语法或语义级别对源代码进行转换。Swift中许多可以实现为宏的现有特性包括可编码协议、字符串插值、属性包装器和结果生成器。根据Swift语言团队的说法,使用宏来构建上面列出的新功能将为该语言及其工具的替代工作腾出更多的资源。
虽然有关Swift宏的工作还处于非常早期的阶段,但关于它们在Swift中的样子已经有了一些想法。下面是一个可能的字符串宏示例:

macro(contexts: [.expression, .parameter], external:
“MyMacros.Stringify”) func stringify(_ value: T) -> (T, String)

C++互操作性旨在实现从Swift调用C++代码以及从C++代码调用Swift。鉴于其更先进的地位,这一特性可能会成为Swift官方发布的第一个特性。根据语言团队的说法,C++interop的当前实现已经支持自有值类型、平凡值类型、外部引用类型和迭代器,并为方法、指针以及l值和r值引用的基本问题提供了答案。
虽然上面描述的三个领域是最具创新性的,但Swift进化也将专注于开发现有的特性,例如并发和泛型。
特别是,对于并发性,目标将是改进Sendable和参与者提供的数据隔离,而泛型的工作将带来对可变泛型的支持,即具有可变数量占位符类型的泛型。
这里描述的新功能没有提供时间表,也不清楚它们是否会在Swift 6或更高版本中提供。随着新信息的发布,InfoQ将继续报道Swift的发展。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/223716
推荐阅读
相关标签
  

闽ICP备14008679号