论文

具有强化对齐的依赖项引导存储库级 C 到 Rust 转换

Dependency-Guided Repository-Level C-to-Rust Translation with Reinforcement Alignment

摘要

自动化 C 到 Rust 迁移对于在不牺牲性能的情况下提高软件安全性至关重要。传统的基于规则的方法与各种 C 习惯用法作斗争,通常会产生僵化且不惯用的 Rust 代码。 大语言模型 (LLM) 经过大规模代码语料库的训练,通过利用跨语言泛化来生成更惯用和可维护的 Rust 代码,提供了一种有前景的替代方案。然而,仍然存在一些挑战。首先,现有的基于 LLM 的方法无法有效地处理跨文件依赖关系,要么忽略它们,要么将整个文件包含为上下文,这限制了准确的依赖关系建模。其次,复杂的依赖关系和结构化的输入和输出使得在存储库级别验证语法正确性和功能等效性变得困难。第三,大规模C-Rust并行数据的缺乏限制了模型性能。我们提出了 DepTrans,一个将模型能力增强与结构化推理相结合的框架。 DepTrans 引入了强化对齐语法训练,通过多任务 微调 和反馈驱动的强化学习来提高生成质量。它进一步应用依赖引导迭代细化来捕获细粒度的跨文件依赖关系并迭代地细化生成的 Rust 代码。我们构建了一个包含 85k 训练样本的数据集和 145 个存储库级实例的基准。实验表明,DepTrans 实现了 60.7% 的编译成功率和 43.5% 的计算准确率,分别比最强基线高出 22.8 和 17.3 个百分点。它还成功建设了 15 个工业碳项目中的 7 个,展示了其实际潜力。