← 最新论文
💻 computer science

Documentation-Guided Agentic Codebase Migration from C to Rust

RustPrint 是一个由文档引导的代理框架,通过将源代码转换为架构蓝图来指导代理进行迭代规划、验证和修复,从而实现可扩展的、仓库级别的从 C 到 Rust 的迁移,相较于现有的基于大语言模型的翻译器,它在编译成功率和功能保留方面表现更优。

原作者: Minh Le-Anh, Anh Nguyen Hoang, Bach Le, Nghi D. Q. Bui

发布于 2026-05-15
📖 1 分钟阅读☕ 轻松阅读

原作者: Minh Le-Anh, Anh Nguyen Hoang, Bach Le, Nghi D. Q. Bui

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你拥有一座用名为C的语言写成的庞大而古老的图书馆。它是许多关键系统(如操作系统和网络工具)的基石,但其地基并不稳固。那些“砖块”(内存管理)松散不堪,如果你不够极其小心,整座建筑可能会坍塌,或者轻易被入侵者攻破(安全漏洞)。

你希望用一种名为Rust的全新现代语言重建整座图书馆。Rust 就像一座堡垒:它拥有自动安全锁,能防止建筑坍塌。但问题在于:逐块翻译整座图书馆极其困难。如果你一次只翻译一个房间,往往会丢失蓝图、忘记房间之间的连接方式,或者最终建成的建筑虽然外观像 Rust,却表现得像一座破损的 C 建筑。

RustPrint 是一个全新的“建筑师与施工队”(AI 代理系统),旨在解决这一问题。它并非逐行翻译代码,而是采用巧妙的三步策略,确保新建筑安全、功能完备且忠实于原始设计。

以下是 RustPrint 的工作原理,使用简单的类比说明:

1. “蓝图”阶段(文档优先)

大多数翻译工具试图翻译一个句子,接着翻译下一个,再翻译下一个。RustPrint 则停下来,说道:“等等,让我们先通读整本书。”

  • 它做什么:它阅读整个旧的 C 代码库,并撰写一份庞大而详尽的操作手册(文档),描述系统如何运作、各部分如何连接,以及为何如此构建。
  • 类比:想象你在翻修一座古老城堡。你不是直接替换石块,而是先聘请专家绘制一份完美详尽的城堡布局图,包括秘密通道和结构逻辑。这份地图成为新建筑的“蓝图”。
  • 为何重要:这确保 AI 理解代码的意图,而不仅仅是语法。它防止 AI 忘记两个不同房间需要如何相互通信。

2. “施工”阶段(代理翻译)

一旦蓝图就绪,RustPrint 便派遣一支由专业 AI 工人组成的团队来构建新的 Rust 版本。

  • 规划师:查看蓝图并说:“我们需要在这里建厨房,在那里建图书馆,并确保管道连接正确。”它制定分步施工计划。
  • 建造者:逐个构建房间(代码模块)。
  • 检查员:每建好一个房间后,检查员会运行“安全检查”(编译)。如果墙壁歪斜或管道泄漏(代码错误),建造者会立即修复,然后再继续下一步。
  • 安全官:专门检查“不安全”的捷径。Rust 仅在绝对必要时才允许不安全代码,但这位安全官会努力消除这些情况,确保最终建筑是一座堡垒。

3. “质量控制”阶段(双重检查)

这是 RustPrint 真正聪明的地方。它不仅仅信任建筑已完成,还会将其与原始版本进行验证。

  • “镜像”检查:在新 Rust 建筑建成后,AI 会为 Rust 版本撰写一份新的操作手册。随后,它将这份新手册与原始的 C 手册进行对比。
    • 如果新手册缺少某个部分(例如“秘密隧道”),AI 就知道它遗漏了某个功能,并会回去修复。
  • “压力测试”:AI 将原始测试(如城堡墙壁的压力测试)应用于新的 Rust 建筑。如果墙壁在测试中开裂,AI 不会仅仅进行修补;它会找出为何墙壁开裂,并修复根本的设计缺陷。

结果:它奏效了吗?

研究人员在8 个真实世界的大型 C 项目上测试了 RustPrint(范围从小型库到超过 80,000 行代码的庞大系统)。

  • 竞争对手:其他工具(如 C2Rust 或简单的 AI 翻译器)尝试过这项工作但失败了。它们要么无法完成构建(代码无法编译),要么建成的结构虽然外观像 Rust,却漏洞百出。
  • RustPrint 的成功
    • 它完成了任务:RustPrint 成功构建了每一个项目的可工作、可编译版本。
    • 它保留了功能:它保留了**93% 至 97%**的原始功能(取决于所使用的 AI 模型),而其他方法仅保留了约 50%。
    • 它通过了测试:当在新代码上运行原始测试时,RustPrint 通过了**95% 至 98%**的测试。其他方法的失败率显著更高。
    • 它是安全的:生成的代码几乎完全消除了“不安全”的捷径,使其比之前的尝试更加安全。

核心结论

RustPrint 证明,要迁移庞大而复杂的软件系统,你不能仅仅充当翻译;你必须成为一名建筑师。通过强制 AI 先编写“蓝图”,然后对比计划并运行压力测试,RustPrint 能够成功地将遗留的 C 代码迁移到安全、现代的 Rust 世界,同时不丢失原始系统的灵魂。

注:该论文严格聚焦于代码的技术迁移。它并未声称此方法已准备好立即用于生命攸关的医疗设备,也未声称它能解决所有软件问题,而是表明它是将大型 C 代码库翻译为 Rust 这一特定任务的高效工具。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →