通过规则引导推理和强化学习实现可靠的 C 到 Rust 翻译
Towards Reliable C-to-Rust Translation with Rule-Guided Reasoning and Reinforcement Learning
摘要
将遗留C程序迁移到Rust已成为提高软件内存安全性同时减轻手动重写的高昂成本的重要方向。利用 大语言模型 (LLM) 进行自动化 C 到 Rust 翻译已成为一个有前途的方向。然而,现有的基于 LLM 的方法仍然有限。一方面,LLM 在识别 Rust 特定规则方面表现出有限的能力,并且对 Rust 语法的处理不充分通常会导致错误的翻译。另一方面,现有的 LLM 常常难以准确捕获复杂代码的语义,从而导致错误的翻译。为了应对这些挑战,我们提出了一种通过规则引导推理和强化学习的翻译框架,即 TRAVEL,由两个模块组成。第一个模块采用基于蒙特卡罗树搜索 (MCTS) 的推理路径构建,以 Rust 特定规则为指导,将搜索引导至尊重 LLM 经常违反的语法规则的翻译步骤。第二个模块引入了强化学习,将执行反馈与推理质量信号结合起来,鼓励模型构建准确捕获程序语义的推理路径,从而确保生成的 Rust 代码保留原始 C 程序的预期行为。我们在三个数据集上评估 TRAVEL:xCodeEval(公共基准)、OS-Bench(从 Linux 内核收集的函数)和 HW-Bench(华为的工业数据集)。在 xCodeEval 上,TRAVEL 的性能优于三个主干网 LLM 的所有基线。特别是,与最强提示基线IRENE相比,TRAVEL将计算精度(CA)提高了26.22%,编译成功率(CSR)提高了18.77%。在HW-Bench和OS-Bench上,TRAVEL进一步将CSR分别提高了18.28%和16.51%,同时将不安全率(UR)分别降低了13.06%和13.08%。