返回

文章详情

Canonical 支持新项目将大型 C 代码库转换为安全的 Rust

Hacker News2026年8月20日 13:12

Canonical 正在支持一个为期三年的新研究项目,旨在使自动将大型成熟的软件项目从 C 转移到 Rust 变得可行。该项目是 Canonical 与英国布里斯托大学之间的合作,计划于 2026 年晚些时候开始。主要目标是建立一个完整的平台,可以将大型代码库(有时包含数十万行 C 代码)转换为安全、可靠且可维护的 Rust。然而,更大的挑战在于已经在使用的大量成熟 C 软件。手动重写这些项目成本高昂且风险大,因为它们的代码通常包括多年的修复、兼容性更新、性能调整和隐藏知识。当前的源到源翻译器只能解决部分问题。Canonical 表示,这些工具可以处理大量代码,但它们往往过于紧密地复制 C 结构。这导致生成的 Rust 代码仍然依赖于不安全的特性,保留了 C 风格的模式,并且在 Rust 开发者希望维护之前需要进行大量清理。大型语言模型(LLMs)面临不同的挑战。它们通常可以为小而清晰的代码片段生成良好的、惯用的 Rust,但管理整个代码库的上下文要困难得多。此外,看似正确的代码可能并不总是与原始的 C 版本以相同的方式工作。为了解决这些挑战,该新项目将使用混合或“神经符号”方法。这结合了机器学习与传统的程序分析、测试和规范方法。根据 Canonical 的说法,大型代码库将首先拆分为可以单独转换的小部分,同时保留有关类型、依赖关系及程序运行方式的关键信息。翻译将使用在已知 C 到 Rust 示例上训练的语言模型,旨在生成使用适当 Rust 特性的 Rust 代码,而不仅仅是复制 C 语法。翻译后,新代码将被检查以查看其是否表现得像原始的 C 版本。对于 Ubuntu 用户而言,重要的是要注意,这项研究不仅限于小型学术示例。Canonical 计划使用 AppArmor 和 snap-confine 作为真实案例研究。然而,Canonical 明确表示 AppArmor 和 snap-confine 目前并不会被重写为 Rust。这些项目仅作为案例研究来测试该技术,并没有计划用研究成果替代它们当前的版本。最后,值得一提的是,这一倡议也符合 Canonical 在 Ubuntu 中更广泛采用 Rust 的战略。公司指出,像 uutils coreutils 和 sudo-rs 等项目是 Rust 实现的例子,这些项目已在发行版中占有一席之地。有关更多细节,请参阅 Ubuntu 在 Discourse 渠道上的帖子。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡