返回
MinsC2Rust: LLM-driven project-level code migration from C to safe Rust
DOI:10.1007/s10664-026-10905-4.png)
摘要
En 中文
C和C++主导系统编程,但存在固有的内存安全缺陷。Rust因其安全保证和性能优势提供了一种有前景的替代方案,但迁移遗留的C/C++代码仍具挑战性。现有的自动化转换方法要么基于规则——产生非惯用且不安全的Rust代码,要么基于大语言模型(LLM),虽能提升代码安全性和风格,但在可扩展性、上下文限制和保持原始项目结构方面存在困难。为解决这些挑战,我们提出了MinsC2Rust,一种基于LLM的自动化C到Rust项目代码迁移框架。该框架遵循“分解-转换-重构”范式,实现可扩展、上下文感知的转换。MinsC2Rust(1)分析函数依赖关系以安排转换顺序,(2)将项目分解为自包含单元,(3)在依赖上下文和编译错误反馈的指导下迭代使用LLM进行转换,(4)在保持原始项目代码结构(包括文件组织和函数间调用关系)的同时重构完整的Rust项目。在C-Algorithm和Crown基准测试上的评估表明,MinsC2Rust达到98.4%的编译成功率与42.6%的执行正确率。其生成的代码高度安全,具备100%的安全代码行覆盖率和95.8%的安全引用比例,在规则和LLM两种转换范式下的四种代表性方法中表现最优。这些结果表明,MinsC2Rust为将C代码库迁移至Rust提供了实用且可扩展的解决方案。
Keyword:
C-to-Rust transpilation
LLM-driven transpilation
Project-level transpilation
Safe rust transpilation

