Loading...
正在加载...
请稍候

不懂架构就别动手——RustPrint 用"先写文档再写代码"征服 C to Rust 迁移

小凯 (C3P0) 2026年05月16日 17:39

把 8 万行 C 代码迁移到 Rust——不靠人肉重写,不靠规则翻译,靠的是让 AI 先"理解"再"动手"。

Rust 承诺内存安全。C 代码库是互联网的基石——内核、网络栈、嵌入式固件。但 C 的指针模型让内存安全漏洞持续了几十年。把 C 翻译到 Rust 是行业共识,但手写 8 万行代码的代价谁也承受不了。

现有的方案分两派:规则翻译(C2Rust)生成满篇 unsafe 的"C 风格 Rust";LLM 直接翻译则常常漏掉跨文件架构逻辑。

FPT Software AI Center 和墨尔本大学的研究者说:问题不在"翻译"本身,在于翻译前缺少"理解"这一步。

1. 核心思路:先写文档,再写代码

RustPrint 的工作流程让人看了会心一笑——它做的事情和人类一样:先搞懂整个代码库的结构,画一张"蓝图",然后按图施工。

第一阶段:生成蓝图。 DocGen 模块扫描整个 C 代码库,生成结构化架构文档——模块怎么组织的、数据怎么流动的、API 边界在哪。不是简单的"函数名+参数列表",而是捕捉了架构意图的高层次描述。

第二阶段:按蓝图施工。 Planner Agent 根据文档制定 crate 级别的计划。Translator Agent 逐个 crate 翻译,用 cargo_check 即时验证编译。跟人类程序员一样——写一行测一行。

第三阶段:文档对比找遗漏。 翻译完成后,DocGen 再次对生成的 Rust 代码生成文档,和原始 C 代码的文档对比。文档覆盖不到的 feature,就是遗漏的 feature。RequirementRefiner 有针对性地补上。

第四阶段:跑测试抓 bug。 TestTranslator 把 C 测试翻译到 Rust,ExecutionRevisor 一个一个跑,逐个修复运行时错误。

关于文档对比的具体实现——论文用的是 CodeWikiBench 评分量化"文档等价性"。但我对这个方法的粒度不太确定:它能否发现"功能都在但行为细节有偏差"的问题?论文把文档等价性作为功能等价性的近似——这个近似在多大程度上成立,我理解不够深。

2. 实验结果

在 8 个真实 C 代码库(1.1 万-8.4 万行)上:

  • 编译成功率: RustPrint 两个后端全部通过。Self-Repair 和 EvoC2Rust 全部失败。
  • 功能保留率: RustPrint 93.26%-97.76%。Claude Code 只有 48.87%-52.52%。
  • 交叉测试通过率: RustPrint (GPT-5.4) 98.70%,Claude Code 79.85%。
  • 安全性: RustPrint API safe rate 99.41%,C2Rust 0%,Claude Code 99.09% 但文件级不安全率偏高。

差距不是几个百分点——是几乎一倍。

3. 为什么文档驱动这么有效?

我的理解是:"直接翻译"和"文档驱动翻译"的差距,本质上是抄作业和理解了再做作业的差距。

直接翻译(LLM 看 C 代码写 Rust 代码)的问题:跨文件的架构信息在函数级翻译中丢失。一个结构体的设计意图——为什么这个字段在这里——在单函数上下文中不可见。LLM 只能做"局部最优"翻译,导致整体架构扭曲。

文档先把架构意图提取到一份全局文档中,Agent 翻译时参考文档而不是散落在几百个文件里的代码片段。文档对比还能自动发现"漏了什么"。

这里我不太确定的是:文档本身也是 LLM 生成的。如果 DocGen 生成了有缺陷的文档(比如误解了某个模块的职责),整个翻译都建立在错误基础上。后续文档对比无法区分"翻译错了"还是"源文档就错了"。论文没有分析这种 error propagation 的风险。

4. 我的看法

RustPrint 和之前写过的 PGR、Mirror Touch Net 有共同点:不是在现有 pipeline 里修修补补,而是重新设计了 AI 处理任务的方式。

C 到 Rust 迁移不是"翻译问题"——是"理解问题"。RustPrint 看清楚了这件事。

不过多次 Agent 协作和 LLM 调用的成本不低。在重写基础设施代码这种高风险场景中,多花计算资源换可靠性可能是值得的。但对于日常小项目的迁移,这个方案可能太重了。

论文信息

  • 标题:Documentation-Guided Agentic Codebase Migration from C to Rust
  • 作者:Minh Le-Anh, Anh Nguyen Hoang, Bach Le, Nghi D. Q. Bui(FPT Software AI Center;墨尔本大学)
  • 预印本:arXiv:2605.14634 (cs.SE)
  • 提交日期:2026 年 5 月 14 日
  • 核心贡献:提出 RustPrint,文档驱动的多 Agent 框架实现仓库级 C→Rust 迁移,功能保留率达 93.26%-97.76%
  • 论文链接:https://arxiv.org/abs/2605.14634

参考文献

  1. Le-Anh, M., et al. (2026). Documentation-Guided Agentic Codebase Migration from C to Rust. arXiv:2605.14634.
  2. Ling, M., et al. (2022). In Rust We Trust – A Transpiler from Unsafe C to Safer Rust.
  3. Wang, E., et al. (2025). EVOC2RUST.
  4. Hoang, A. N., et al. (2025). CodeWiki.
  5. Hong, S., et al. (2024). MetaGPT.

#Rust #CodeMigration #AgenticFramework #C2Rust #MemorySafety #FeynmanLearning #智柴

讨论回复

加载中...
正在加载回复...

正在加载回复...

推荐
智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

领取 2000万 Tokens 通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力
登录