主要观点:Swift 默认设计为安全,可在编译时防止多种编程错误,解决了 C 系语言中未定义行为的问题,如并发代码中的数据竞争。Swift 5.10 实现了全数据隔离,为 Swift 6 做准备,可在编译时诊断数据竞争,同时引入了新的不安全退出机制如nonisolated(unsafe)
。
关键信息:
- Swift 5.10 实现全数据隔离,是多年开发的重要里程碑,解决了之前未定义行为的问题。
- 全数据隔离为 Swift 6 做准备,6.0 编译器将默认强制全数据隔离。
- Swift 5.10 会在某些情况下产生数据竞争警告,6 版本将改进严格并发检查的可用性。
- 引入
nonisolated(unsafe)
关键字用于退出演员隔离检查。 - 下一个版本是 Swift 6,有多个提案在开发以改进全数据隔离的可用性。
重要细节:
- 基于并发代码中意外访问内存的问题,Swift 通过演员和任务提供数据隔离来解决。
- Swift 5.10 完成了语言各方面的数据竞争安全语义,修复了
Sendable
和演员隔离检查的错误。 - 如在 Swift 5.9 中某代码在运行时因初始化位置错误导致隔离断言失败,而在 5.10 中会产生警告。
nonisolated(unsafe)
可用于存储属性和变量,消除某些情况下的并发警告。- 多个语言提案在 Swift 5.10 中被接受和实现,如关于演员和初始化、废弃特定主应用程序入口等。
- 可通过下载官方二进制文件使用 Swift 5.10,也可参与 Swift 6 的过渡,提供反馈等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。