Recoleta Item Note

His2Trans: A Skeleton First Framework for Self Evolving C to Rust Translation with Historical Retrieval

His2Trans 是一个面向工业级 C 到 Rust 迁移的框架,核心思想是先构建可编译、强类型的项目骨架,再结合历史迁移知识检索来逐步生成函数逻辑。它试图解决大项目迁移中的构建上下文缺失、领域 API 映射缺失和修复循环失控问题。

c-to-rustcode-translationretrieval-augmented-generationbuild-awareself-evolvingcode-migration

His2Trans 是一个面向工业级 C 到 Rust 迁移的框架,核心思想是先构建可编译、强类型的项目骨架,再结合历史迁移知识检索来逐步生成函数逻辑。它试图解决大项目迁移中的构建上下文缺失、领域 API 映射缺失和修复循环失控问题。

  • 现有 C→Rust 自动迁移方法在工业项目中常因 build context 缺失 而无法恢复精确类型与依赖,导致“dependency hell”和幻觉式依赖。
  • 仅靠通用 LLM 很难推断 领域特定 API 与历史演化模式,因此无法复用已有 Rust 接口,容易生成不地道甚至无法集成的代码。
  • 大项目通常需要 渐进式迁移,若每次修复都会引发级联编译错误,自动化成本会迅速失控;这很重要,因为 C 的内存安全问题被文中引用为约 70% 安全漏洞 的来源之一,而 Rust 迁移正是工业界的重要方向。
  • 先做 build tracing,从真实构建过程恢复宏、类型、条件编译和依赖,生成一个可编译的 Project-Level Skeleton Graph;简单说,就是先把整个 Rust 项目的“空架子”搭好,并确保类型是对的。
  • 骨架中保留目录结构、模块关系、类型定义、全局状态和函数签名,函数体先用 unimplemented! 占位,把 结构验证逻辑生成 分开。
  • 再从历史 C/Rust 迁移仓库中自动挖掘 API-level rulesfragment-level rules,形成可累积的知识库;检索时用 BM25 + reranker + RAG,把相似历史样例喂给 LLM。
  • 函数体翻译按依赖图 自底向上拓扑调度:先翻译依赖少的函数,再翻译上层函数;每步都用编译器反馈做规则修复或 LLM 修复,必要时回退到 C2Rust 的 unsafe 代码以保住可编译性。
  • 已通过验证的翻译结果会重新写回知识库,形成 self-evolving 闭环,让后续未见任务更容易修复。
  • 在工业级 OpenHarmony 模块上,His2Trans 报告 99.75% incremental compilation pass rate,并声称能修复基线方法因缺失构建上下文而失败的问题。
  • 在通用基准上,相比 C2Rust,其 unsafe code ratio 降低了 23.6 个百分点,同时产生 最少 warnings
  • 在知识积累实验中,随着持续加入已验证迁移模式,未见任务的 repair overhead 下降约 60%,表明系统具有“越用越强”的演化能力。
  • 评测覆盖 5 个 OpenHarmony 子模块10 个通用 C 项目;文中还列出多种基线(如 C2Rust、PTRMAPPER、EvoC2Rust、Tymcrat 等),但摘录中未给出完整逐项对比表与全部数值明细。
  • 实验设置强调 zero-human-intervention,即评测期间无人工后编辑或 cherry-picking。
Built with Recoleta

Run your own research radar

Turn arXiv, Hacker News, OpenReview, Hugging Face Daily Papers, and RSS into local Markdown, Obsidian notes, Telegram digests, and a public site.