返回
RustMap: Towards Project-Scale C-to-Rust Migration via Program Analysis and LLM
DOI:10.1007/978-3-032-00828-2_16.png)
摘要
En 中文
将现有C程序迁移到Rust的需求日益增长,因为Rust在保持C高性能的同时提供了卓越的内存安全性。现有的自动化翻译工具(如C2Rust)可能过度依赖基于语法的模板化翻译,生成难以供人类开发者阅读、维护甚至编译的不安全Rust代码。更具语义感知的翻译以生成更安全、更符合惯例且可运行的Rust代码是迫切需要的。本文介绍了一种基于依赖引导和大型语言模型(LLM)的新型C到Rust翻译方法RustMap,基于三个关键思想:(1)利用LLM的能力从给定的少量C代码生成符合惯例的Rust代码,(2)通过根据使用依赖关系将项目规模的C程序分解为更小的单元进行翻译,缓解LLM处理大型代码库的能力不足问题,(3)利用可用测试用例检查C和Rust代码之间的输入/输出等价性,并通过利用编译和测试错误的反馈迭代地用于LLM,以增强翻译后的Rust程序的正确性。我们在126个真实世界样本程序上对RustMap进行了实证评估,包括125个来自Rosetta Code的程序和一个包含超过7000行代码的复杂bzip2程序,使用GPT-4o作为LLM。RustMap在引导GPT-4o将大部分C代码翻译成更符合惯例、可读且功能性的Rust代码方面表现出有前景的结果,其中包含的unsafe代码显著少于其他翻译工具,并呈现了可能可供未来研究复用的非平凡翻译模式。
Keyword:
Program translation
C2Rust
Dependency analysis
LLM
期刊
E
IF:
0
论文数:
26
被引数:
0
机构
引用论文
Scalable, Validated Code Translation of Entire Projects using Large Language Models张, H.; David, C.; 王, M.; Paulsen, B.; Kroening, D. 使用大型语言模型对整个项目进行可扩展且经过验证的代码翻译。Proc. ACM Program. Lang. 2025, 9, 1616–1641. [Google Scholar] [CrossRef]

