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

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

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

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