WWDC23 的 Session 列表已经出来了 https://developer.apple.com/videos/wwdc2023/ 。宏和 SwiftData 看起来很有趣,解决了一些以前用 Swift 写 data model 时的痛点。此外还有一个我很感兴趣的就是和 C++ 的 interop ,明天会出一个专门的 Session 10172 - Mix Swift and C++ 讲解。在今天已经出的 What's new in Swift 视频中,我们可以粗略了解这一特性。
根据视频中的演示,Swift 和 C++ 的 bridging header 由 Swift 编译器自动生成,并支持大部分 Swift 特性。
双方的类型和方法都可以直接互相调用。
这个操作我是完全没想到,Swift 社区真的很努力。顺带一提 Foundation 也正在逐步重写,用纯 Swift 取代历史遗留的 Objective-C 部分,性能也有所提升。未来 macOS 的标准库代码会和其他平台上的统一。
跨语言的内存管理往往很麻烦。由于 Swift 和 C++ 都支持 RAII ,因此引用计数也可以跨语言,内存管理容易很多。Swift 5.9 还添加了 ~Copyable 协议,对应 unique_ptr 。在使用现代 C++ 的前提下,内存安全也有一定程度的保证。
用 Swift 可以把 C++ 代码封装成更清晰友好,同时支持异步的 API 。C++ coroutine 的进展还比较缓慢,大多数项目的异步实现都是各用各的。而 Swift 在语言层面拥有灵活的异步抽象,包括 continuation, Task 和 actor 等等。用 Swift 的 async API 可以实现它们的统一调度。
可能会利好游戏在苹果平台的开发。游戏往往都在用 C++ 开发,现在和原生可以更方便地交互了,移植体验会改善( Metal 不好用的话还是抓瞎)。
欢迎各位在 Linux / Windows 平台也体验一下 Swift ,参与 Swift org 社区的讨论!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.