< 返回版块

苦瓜小仔 发表于 2026-01-15 20:03

Tags:日报

官方博客《在安全关键环境中交付 Rust 需要哪些条件?》

作者:Pete LeVasseur 代表 Vision Doc Group

这是我们“愿景文档”系列文章的第三篇,我们希望深入探讨的一个领域是安全关键系统:这类软件一旦发生故障,可能导致人员伤亡或环境污染。例如,汽车、飞机、医疗设备和工业自动化等领域。

我们与来自汽车(主要)、工业、航空航天和医疗等行业的原始设备制造商 (OEM)、系统集成商和供应商的工程师进行了交流。

我们的发现有些出乎意料。讨论始终围绕着一个核心矛盾:Rust 的编译器强制保证为功能安全工程师和软件工程师在这些领域花费大量时间预防的问题提供了支持,但一旦从原型阶段过渡到系统更高关键性的部分,生态系统的支持就会迅速减少。目前没有 MATLAB/Simulink Rust 代码生成器,也没有用 Rust 编写或提供一流 Rust 支持的 OSEK 或 AUTOSAR Classic 兼容的实时操作系统 (RTOS)。用于验证和认证的工具仍在完善中。

简要背景:是什么让软件成为“安全关键型”软件?

如果您从未涉足过这些领域,以下是简要说明。每个安全关键领域都有相应的标准,定义了一系列完整性等级:汽车行业采用 ISO 26262 标准,工业领域采用 IEC 61508 标准,医疗器械领域采用 IEC 62304 标准,航空航天领域采用 DO-178C 标准。具体细节有所不同,但总体趋势相似:随着您逐步提升安全关键性等级,对开发流程、验证和证据的要求也会相应提高,成本也会随之增加。

这就产生了一种强烈的分解动机:将最关键的逻辑隔离到尽可能小的表面积中,并将其他所有内容保持在较低的级别,这样成本更容易控制,速度也更快。

本文将采用汽车行业的术语(QM through ASIL D,从常规质量管控到全层级功能安全场景),因为我们的大部分访谈都来自该领域,但其中的模式具有普遍性。这些术语代表安全关键性等级的递增,QM 最低,ASIL D 最高。无论在哪个领域,低关键性的情况与高关键性的情况截然不同。

以下总结来自原文结尾:

  • Rust 已在安全关键型系统中投入生产使用,包括移动机器人(IEC 61508 SIL 2)和医疗设备(IEC 62304 B 类)。这条路已经走上了。
  • Rust 的默认特性(内存安全、线程安全、强类型)与功能安全工程师花费大量时间预防的大部分问题直接相关。但随着软件关键性提升,生态系统支持也会相应减少。
  • 在低优先级(QM)下,团队可以自由使用现成的库,并在之后进行加固。在高优先级(ASIL B+)下,第三方依赖项变得难以证明其合理性,团队会重写代码、将其内部化,或者构建抽象层以便将来替换。
  • 编译器承担了过去需要外部工具和人工审查才能完成的工作。过去通过 MISRA C 和 CERT C 等标准强制执行的许多流程性规范,现在都变成了语言层面的考量,由编译器进行检查。对于拥有庞大团队的长期产品而言,这种方式比“加强审查”更具可扩展性,并能让相关领域的工程师对他们交付的系统更有信心。
  • 稳定性是运营层面的:团队需要解释升级会带来哪些变化,管理依赖关系漂移,并将目标层策略映射到他们的平台实际情况。
  • 异步对于中间件和事件驱动系统很有吸引力,但对于更高关键性的应用,其运行时和资格认证方面的问题尚未解决。

我们提出六项建议:找到帮助安全关键型社区满足自身需求的方法,建立生态系统范围内的 MSRV 约定,创建以目标为中心的准备情况检查清单,记录依赖项生命周期模式,定义对安全案例友好的异步运行时的要求,并将 C/C++ 互操作性视为安全故事的一部分。

如果您正在使用 Rust 进行安全关键领域的开发,或者您想帮助简化开发工作,请查看 Rust 基金会的安全关键 Rust 联盟 和正在制定的 安全关键 Rust 编码指南

阅读:https://blog.rust-lang.org/2026/01/14/what-does-it-take-to-ship-rust-in-safety-critical/

演讲《沃尔沃汽车中的 Rust》

沃尔沃汽车公司已交付其首款完全用 Rust 语言编写的 ECU(电子控制单元),该 ECU 是全新 SPA2 电动汽车平台的一部分。这在汽车行业尚属首例。

Julius Gustavsson 将介绍这个项目,它是如何产生的,以及为什么汽车使用 Rust 是一个好主意!

观看:https://www.youtube.com/watch?v=vBofCW8j70A

--

From 日报小组 苦瓜小仔

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页