Redian新闻
>
Swift 2023:所有权、宏和 C++ 互操作

Swift 2023:所有权、宏和 C++ 互操作

公众号新闻


作者 | Sergio De Simone
译者 | 平川明知山
策划 | 丁晓昀

Swift 语言工作组已经详细说明了 2023 年及以后 Swift 重点发展的主要领域,其中包括定义内存管理的所有权模型、不可复制类型、宏系统和 C++ 互操作。

所有权是一种内存管理方法,最近由于 Rust 而变得流行起来。它是 Rust 最具有决定性的语言特征之一,是其提供内存安全保证的基础。

Rust 使用了第三种方法:内存是通过一个所有权系统来管理的,该系统有一套编译器检查规则。如果违反了任何规则,程序就不会编译。所有权的所有特性都不会拖慢程序运行时的速度。

关于在 Swift 中引入所有权的讨论始于 2017 年,并最终定义了所有权宣言。

虽然关于所有权的工作没有取得任何进展,但 Swift 语言工作组将其带回来,目的是为了让程序员对内存中的值有更多的控制权。这可以包括禁止隐式复制、允许所有权转移以及在不进行复制的情况下借用值。此外,Swift 可以支持不可复制类型,以限制临界值的生命周期。

这些控制将实现在内存中处理数据的新方法,将当前“不安全”结构的性能与 Swift 标准库功能的安全性相结合。

Swift 另一个有前途的领域是创建一个过程宏系统,以创建高级库和 DSL。宏是一种代码生成机制,可以在词法、句法或语义层面对源代码进行转换。Swift 中现有的一些功能可以实现为宏,如 Codable 协议、字符串插值、属性封装器和结果构建器。根据 Swift 语言团队的说法,使用宏来构建像上面列出的那些新特性,可以释放出更多的资源,用于语言及其工具相关的其他工作。

虽然 Swift 宏的相关工作仍处于非常早期的阶段,但关于它们在 Swift 中应该是什么样子,人们已经有一些想法。下面是一个可能的 stringify 宏的例子:

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

C++ 互操作旨在实现从 Swift 调用 C++ 代码,以及从 C++ 调用 Swift 代码。由于这个特性的相关工作进展得比较快,所以它有可能会首先出现在 Swift 官方版本中。根据 Swift 语言团队的说法,当前的 C++ 互操作实现已经支持自有值类型、普通值类型、外部引用类型和迭代器,并为方法、指针、l- 值和 r- 值引用有关的基本问题提供了答案。

虽然上述三个领域最具创新性,但 Swift 的演进也将专注于改进现有的功能,比如并发和泛型。

特别是在并发方面,其目标将是改善 Sendable 和 actors 提供的数据隔离,而泛型方面的工作将带来对变量泛型的支持,即拥有不同数量占位符类型的泛型。

重写 Foundation 框架

Swift 团队已着手开始 Foundation 框架的一个新的开源实现。新的实现完全采用 Swift 编写,旨在通过消除 Objective-C 和 Swift 之间的转换成本来提升性能,并对其进行模块化和清理。

因为采用了原生的 Swift 实现,Foundation 框架不再需要在 C 和 Swift 之间进行转换。

正如苹果工程师 Tony Parker 在 Swift 论坛上所解释的那样,性能方面带来的好处是非常显著的。

使用 Swift 重新实现的日历应用的速度是 C 的 1.5 到 18 倍(在创建、日期计算等各种测试基准中调用 Swift)。

Foundation 框架是大多数 macOS 和 iOS 应用程序的基石,提供了大量的抽象,包括 NSObject、NSString、NSArray 和 NSDictionary 等等。

Foundation 最初是用 Objective-C 编写的,很大程度上利用了它的动态特性,由于 Swift 与 Objective-C 运行时的互操作性,Foundation 目前可以用于运行苹果操作系统上的 Swift 应用程序。不过,对于其他支持 Swift 但只有原始 GNUstep Objective-C 运行时的平台(如 Linux)来说就不是这样了。为了规避这一限制,苹果在开源 Swift 时推出了 swift-corelibs-foundation,一个 Core Foundation 的 Swift 包装器,一个位于 Foundation 核心的底层 C API,并提供了映射到 Foundation 的“桥接”抽象,包括 CFString、CFDictionary 等。

如前所述,使用 Swift 重写将是一个重构 Foundation 框架的机会。目前,有五个不同的包进行了重新设计,包括 FoundationEssentials、FoundationInternationalization、FoundationNetworking、FoundationXML 和 FoundationObjCCompatibility。开发者可以只引入特定应用程序实际需要的依赖项。例如,一个从头开始开发应用程序并且想要切断与 Darwin Foundation 层所有联系的开发者,可以完全跳过 Obj-C 兼容层。

在做出重写 Foundation 决定的同时,苹果正在调整 C、Objective-C 和 Swift 层之间的顺序,并让 Swift 层成为 Foundation 的基础。这将有机会删除一些目前可以直接由 Swift 语言和标准库提供的特性,如 NSCoding 和 NSKeyedArchiver,取而代之的是 Codable,或者 Lock、OperationQueue,以及其他被 Swift 结构化并发取代的并发原语。不过,这些特性将由 Darwin 平台上的一个单独包提供,以确保与现有代码兼容。

这一声明在 Swift 论坛上引发了许多评论,其中大多数都暗示重新考虑现有的几个 API 的便利性,确保 Swift 类型(如 Codable)或结构化并发足够强大,以便在核心基础层完全取代 Obj-C 类型。

可以预见的是,Foundation 重写是一项中期的努力,目前还没有宣布具体的时间表,苹果正在邀请 Swift 社区加入讨论,一起定义它的未来。

对于 Swift 的发展,InfoQ 将继续跟踪报道。

参考链接:

https://www.infoq.com/news/2022/12/apple-swift-foundation-rewrite/

相关阅读:

C++ 开发,这些 GUI 库一定不要错过!(https://xie.infoq.cn/article/d3843ba34967a2c33e81a0664

学 C++ 的以后都能从事哪些岗位?(https://xie.infoq.cn/article/a90dfad02a8148e0f2c1c8cb4)

现代化工具链在大规模 C++ 项目中的技术实践 (https://www.infoq.cn/article/KsctTt5cIpCCl5T2SmtJ )

C/C++ 的类型转换 (https://xie.infoq.cn/article/1b1bd56c2ca2580200c9276aa)

声明:本文为 InfoQ 翻译,未经许可禁止转载。

点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!

今日好文推荐

解读数字化的2022:不再追求大而全的“军备竞赛”,用聚焦来提高转型“成功率”

如何更好地干掉微服务架构复杂性?

争相上市、抢夺本土市场,未来三五年数据库将迎来大洗牌 | 解读数据库的2022

颠覆开发模式的创新发布背后,我看见了云计算的下一个十年

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
Taylor Swift演唱会真的来了!不是演习!速来抢票前线!突发!暴雪重击温哥华,全城已经瘫痪!政府:所有人留在家中!机场所有航班取消!秋日里,那些另类的苹果树校友活动丨珍存2022 迎接2023:清华经管EMBA内蒙古校友会2022-2023云端迎新年活动太火爆!Taylor Swift 南加巡演 Eras Tour增加三场!11/18开票拼手速Taylor Swift “时代之旅”巡回演唱会将来明州Taylor Swift(霉霉)新专辑歌名,个个都是高级单词!赶紧学一波!画外丰子恺至暗时代来了?摩洛哥十日游之八,名园、怪树、海鲜市场增速超20%,国产操作系统“浴火重生” | 解读操作系统的 2022记录2022,推动2023:第一财经十大年度热词揭晓有比财富更重要的,这家美国著名连锁店老板放弃公司所有权【快讯】警惕Taylor Swift演唱会假票|妇女强奸案使MBTA关注安全问题活动回顾|第十三期读书会实录:《所有权的终结:数字时代的财产保护》【快讯】贝佐斯宣布要捐出99%家产|Taylor Swift计划明年于麻省举办演唱会苹果宣布使用Swift全面重写Foundation框架第一财经推出跨年特别策划《2022-2023:挥别与重启》炸了!美国著名连锁店老板放弃公司所有权!有比财富更重要的…美零售业巨人放弃年营收80亿美元公司所有权:想成为百般恩赐的好管家!校友活动丨沐光同行 筑梦2023:清华经管EMBA2016级北京校友会迎春年会举办华为音乐月活超2亿,Taylor Swift包揽B榜前十, Live Nation三季度演唱会吸引4400万乐迷2022年度人物:所有经历的悲欢离合,都是回不去的举世无双Kotlin 1.8.0发布,改进性能和Swift的互操作性苹果将对 Foundation 框架用 Swift 重写并开源,网友:iOS/macOS 应用程序用吗?【外汇商品】美国金融压力指数、宏观经济与金融市场苹果宣布使用 Swift 全面重写 Foundation 框架拜登政府将首次公布7000家医院所有权数据美国著名连锁店老板放弃公司所有权!有比财富更重要的…5年版权纠纷终于落幕?Taylor swift终于迎来好消息,有网友评论:她终于等来了胜利!霉霉威武!人美声甜!最新消息!温哥华华人圈突然官宣:所有大温华人免费学英语!12月20日开始!张文宏和张伯礼在同一天发声!bitter是苦,sweet是甜,bittersweet是又苦又甜...元宇宙标准论坛主席、科纳斯组织总裁尼尔·特里维特:开放元宇宙亟待构建互操作标准没有毛泽东打基础邓小平能做啥
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。