网易首页 > 网易号 > 正文 申请入驻

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

0
分享至

作者 | 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 翻译,未经许可禁止转载。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
36岁英年早逝!长跑名将训练中离世,曾在上海马拉松创纪录夺冠

36岁英年早逝!长跑名将训练中离世,曾在上海马拉松创纪录夺冠

全景体育V
2026-05-12 20:09:31
退休党员别再乱交党费了!2026标准已明确,不少人白交多年冤枉钱

退休党员别再乱交党费了!2026标准已明确,不少人白交多年冤枉钱

笑熬浆糊111
2026-05-13 00:05:16
江特电机:从已探明矿区储量统计,公司合计持有或控制的锂矿资源量在1亿吨以上

江特电机:从已探明矿区储量统计,公司合计持有或控制的锂矿资源量在1亿吨以上

每日经济新闻
2026-05-12 21:02:08
哈登一夜狂刷7大历史纪录!36岁仍封神,骑士真赚翻,夺冠有望

哈登一夜狂刷7大历史纪录!36岁仍封神,骑士真赚翻,夺冠有望

钱说体育
2026-05-12 12:54:02
什么时候让你意识到这就是命,考公四次落榜,随便报个东大就中了

什么时候让你意识到这就是命,考公四次落榜,随便报个东大就中了

夜深爱杂谈
2026-05-11 07:41:40
切尔西·汉德勒自曝2010年爱泼斯坦晚宴细节:8人小聚,她当面调侃伍迪·艾伦

切尔西·汉德勒自曝2010年爱泼斯坦晚宴细节:8人小聚,她当面调侃伍迪·艾伦

影视情报室
2026-05-12 06:05:35
麻省理工发现:唤醒孩子自律最快的方法,竟是飞轮效应!

麻省理工发现:唤醒孩子自律最快的方法,竟是飞轮效应!

户外阿毽
2026-05-10 19:24:43
太嚣张!日本公然发射进攻导弹,中方不再容忍,直接亮剑反击

太嚣张!日本公然发射进攻导弹,中方不再容忍,直接亮剑反击

观察者小海风
2026-05-11 11:35:37
我的天呐!这屋里的味道,隔着屏幕都觉得呛

我的天呐!这屋里的味道,隔着屏幕都觉得呛

老吴教育课堂
2026-05-13 03:12:10
新闻人物|美国总统唐纳德·特朗普

新闻人物|美国总统唐纳德·特朗普

新华社
2026-05-12 21:05:05
钱更难挣了!送面条老板哭诉每天送货量减半,旁边一大排店面空置

钱更难挣了!送面条老板哭诉每天送货量减半,旁边一大排店面空置

火山詩话
2026-05-12 13:45:35
赵露思曼谷演唱会爆了,清纯人设碎了一地,大家到底在气什么?

赵露思曼谷演唱会爆了,清纯人设碎了一地,大家到底在气什么?

情感大头说说
2026-05-13 05:06:47
败光5千万后,超市打工、不敢见人!马蓉澳洲落魄现状,令人唏嘘

败光5千万后,超市打工、不敢见人!马蓉澳洲落魄现状,令人唏嘘

牛锅巴小钒
2026-05-12 12:54:30
快速入睡无成瘾!又一国产安眠新药即将落地,3亿失眠人有解了?

快速入睡无成瘾!又一国产安眠新药即将落地,3亿失眠人有解了?

思思夜话
2026-05-12 16:51:58
广东休赛期恐重组:或续约奎因2人,打包焦泊乔,交易追逐2名国手

广东休赛期恐重组:或续约奎因2人,打包焦泊乔,交易追逐2名国手

二哥聊球
2026-05-12 11:26:52
女子硕士入学清华后参与智力测验,仅得25分,回应:无论是学习、工作、创业,我都没有遇到困难,但我居然智力中下

女子硕士入学清华后参与智力测验,仅得25分,回应:无论是学习、工作、创业,我都没有遇到困难,但我居然智力中下

扬子晚报
2026-05-11 07:48:21
西甲欧冠5席位全出炉!贝蒂斯时隔20年再参赛,26岁安东尼终圆梦

西甲欧冠5席位全出炉!贝蒂斯时隔20年再参赛,26岁安东尼终圆梦

我爱英超
2026-05-13 05:38:11
你们都是什么时候对男女之事开窍的?网友:果然还是拦不住有心人

你们都是什么时候对男女之事开窍的?网友:果然还是拦不住有心人

夜深爱杂谈
2026-02-21 21:37:02
广东5人合同到期!杜润旺+2小将或留队,王少杰租借到期买断吗?

广东5人合同到期!杜润旺+2小将或留队,王少杰租借到期买断吗?

篮球资讯达人
2026-05-13 01:31:06
原来风婆婆这么美,40年前光顾着看猴了,根本没注意

原来风婆婆这么美,40年前光顾着看猴了,根本没注意

喜文多见01
2026-04-09 15:31:01
2026-05-13 08:11:00
InfoQ incentive-icons
InfoQ
有内容的技术社区媒体
12365文章数 51884关注度
往期回顾 全部

科技要闻

谷歌剧透安卓重大升级 Gemini深度集成底层

头条要闻

凯文·沃什出任美联储主席 其岳父是特朗普总统的老友

头条要闻

凯文·沃什出任美联储主席 其岳父是特朗普总统的老友

体育要闻

骑士终于玩明白了?

娱乐要闻

白鹿风波升级!掉粉20万评论区沦陷

财经要闻

利润再腰斩 京东干外卖后就没过过好日子

汽车要闻

吉利银河“TT”申报图曝光 电动尾翼+激光雷达

态度原创

数码
游戏
家居
手机
公开课

数码要闻

首发883.15元!小米路由器BE7200 Pro开售:全2.5GE网口 家里网关都省了

曝PS6或将被迫缩减内存规格 以应对零部件涨价

家居要闻

极简主义下的居住场域与空间

手机要闻

谷歌安卓17新增系统验证功能:Pixel手机首发,识别恶意仿冒系统

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版