写点什么

Swift 5.10 重磅更新:并发代码安全性再上新台阶

  • 2024-03-29
    北京
  • 本文字数:1007 字

    阅读完需:约 3 分钟

大小:491.21K时长:02:47
Swift 5.10 重磅更新:并发代码安全性再上新台阶

最新发布的 Swift 5.10 版本虽然只带来了少数新提案,但在语言的并发模型方面却取得了显著进步。Swift 团队工程师 Holly Borla 解释说,现在编译器已经能够在编译阶段确保数据的完全隔离。


Borla 回顾了 Swift 并发模型自 Swift 5.5 引入 async/await、actors 和结构化并发以来的成熟过程。从 Swift 5.7 采用 Sendable 协议作为线程安全类型的基石,到 Swift 5.10 实现编译时完全数据隔离,每一步都体现了 Swift 在并发编程领域的持续进步。


Swift 5.10 在语言的各个方面全面完善了数据竞态安全语义,并修复了 Sendable 和 actor 隔离检查中的大量 bug,从而加强了完全并发检查的保证。实际上,Swift 5.10 编译器新增了一个名为 -strict-concurrency=complete 的标志,这个标志能在编译时检测潜在的数据竞态,从而加强并发编程的安全性。在之前的 Swift 5.9 版本中,某些隔离违规问题只能在运行时通过断言来检测,而在 Swift 5.10 中,这些问题在编译阶段就会被标记为潜在的编程错误,并引发警告。


虽然这种更严格的行为有助于提升代码的安全性,但也可能导致误报,即正确的代码被错误地标记。Borla 指出,这是由于编译器需要减少分析量以控制编译时间成本,这一问题将在未来的语言版本中得到改进。


为了应对这种情况,开发者可以在特定的 actor 或实现 Sendable 协议的类上使用 nonisolated(unsafe)@unchecked Sendable 来局部禁用完全数据隔离检查。但需要注意的是,这种做法将使代码进入 “不安全” 的领域,因此在选择退出完全数据隔离检查时,务必谨慎行事,确保自己了解潜在的风险。正如 iOS 开发者和 Swift 书籍作者 Donny Wals 所建议的:


每当你想使用 nonisolated(unsafe) 时,最好先反思一下:是否可以考虑将标记为隔离的类型转变为全局 actor,或者是否可以将属性的类型设定为 Sendable 且设置为不可变。在 Swift 5.10 编译器中,安全访问共享状态的方式主要有两种:一是结合使用不可变状态与 Sendable,二是利用 @MainActor 将共享状态封装在全局 actor 中。


然而,在编译那些使用信号量或 DispatchQueues 手动确保隔离的旧代码时,可能需要用到不安全的退出指令,这一点需要注意。


如前所述,Swift 5.10 的并发模型并非尽善尽美,有时可能会产生过多的数据竞态误报。据 Borla 透露,Swift 团队正在积极改进这一点,为即将在下一次 Apple WWDC 大会上发布的 Swift 6 版本做好充分准备。


原文链接

https://www.infoq.com/news/2024/03/swift-5-10-released/

2024-03-29 08:005033

评论

发布
暂无评论
发现更多内容

10 分钟搞定全栈无人机系统

俞凡

低空经济

等保一体机的定义及核心价值说明

等保测评

网络安全 信息安全 数据安全 黑龙江等保测评 哈尔滨等保测评

YashanDB的高可用性设计与故障恢复机制详解

数据库砖家

阿尔特携手 Amazon AgentCore ,打造懂你的AI,智能搜索成本降低34%

亚马逊云科技 (Amazon Web Services)

人工智能

还在为搭建FAQ系统发愁?这10个问题帮你彻底搞懂知识库选型

百川云开发者

哈尔滨等保方案构建要点

等保测评

网络安全 信息安全 数据安全 黑龙江等保测评 哈尔滨等保测评

YashanDB的缓存机制解析及性能优化技巧

数据库砖家

链游钱包开发冷钱包开发热钱包开发web3開發多链钱包NFT 钱包跨链钱包开发

西安链酷科技

海量算力,一键配置!咕泡AI云实验室全面升级!

咕泡科技

咕泡ai 咕泡科技 实战平台

携手伊克罗德,国内知名会计师事务所借助Dify实现审计业务全链路升级

伊克罗德信息科技

CMDB实例回收站:让数据管理游刃有余

智象科技

CMDB #运维 一体化运维平台 一站式运维

这十款出海人必备的海外社交媒体分析工具,建议收藏!

沃观Wovision

社交媒体 海外社交媒体监控 社交媒体监测 社媒分析

小红书笔记详情API秘籍!轻松获取笔记数据

Datafox(数据狐)

小红书笔记详情接口 小红书API 小红书数据采集

联邦机构未完全修补思科设备漏洞,CISA发出紧急警告

qife122

网络安全 思科设备

2025年企业级海外社交媒体分析系统选型指南

沃观Wovision

舆情监测 舆情监测系统 海外舆情监测 社交媒体监测

在技术无人区栽花:华为十大发明的慢哲学

脑极体

AI

BeeWorks:更懂工作的企业级安全通讯平台

BeeWorks

即时通讯 IM 私有化部署

创新、开放、尊重,华为给出了知识产权保护的示范答卷

Alter

哈尔滨密码测评办理要点说明

等保测评

网络安全 信息安全 数据安全 黑龙江等保测评 哈尔滨等保测评

一站式等保安全产品类别及功能说明

等保测评

网络安全 信息安全 数据安全 黑龙江等保测评 哈尔滨等保测评

QuitAll for mac 快速退出应用

做梦万元户

海外社交媒体分析工具终极评测:2025年TOP 10平台功能与价格全解析

沃观Wovision

社交媒体 社媒监测 出海舆情 社媒分析

洞察竞争格局:利用海外社媒分析平台构建海外社交媒体竞争情报体系

沃观Wovision

社交媒体监控 海外社交媒体监控 社交媒体监测 社媒分析

Go语言AI智能体开发套件(ADK) - 构建复杂AI代理的开源框架

qife122

AI Google 智能体

YashanDB的国际化与本地化实施策略

数据库砖家

Principle for mac 交互设计神器

做梦万元户

本地模型 + 云端模型的 Hybrid Inference 架构设计:下一代智能系统的底层范式

掘金安东尼

钱包开发加密钱包社交钱包Web3钱包去中心化钱包

西安链酷科技

别再卷传统后端了!

王中阳Go

AI agent

从“事后抢险”到“事前防控”:江西水投用 TDengine 重塑防汛模式

TDengine

YashanDB的缓存机制深入剖析及实用优化技巧

数据库砖家

Swift 5.10 重磅更新:并发代码安全性再上新台阶_大前端_Sergio De Simone_InfoQ精选文章