中文

基于骨架优先翻译和历史知识复用的构建感知式 C 到 Rust 增量迁移

软件工程 2026-03-30 v3

摘要

针对工业软件的 C 到 Rust 自动化迁移仍然困难,因为构建关键上下文分散在编译配置、宏、外部符号和跨模块依赖中,而可重用的迁移知识常常埋在 prior C/Rust 演化中。因此,现有的 LLM-based 方法在孤立函数或小型基准测试上效果良好,但在部分迁移系统中难以产生稳定的项目级翻译。我们提出了 His2Trans,一个用于构建复杂生态系统中 C 和 Rust 共存的增量 C 到 Rust 迁移框架。His2Trans 首先从构建痕迹中重建可编译的项目级 Rust 骨架,恢复模块、类型定义、签名、全局变量和依赖关系,随后再生成函数体。它然后检索 Rust 侧接口和从历史编译接受的 C/Rust 对中矿掘的本地编码模式,以指导翻译和编译反馈修复。我们在五个 OpenHarmony 子模块和九个通用 C 基准测试上进行评估。在 OpenHarmony 模块上,His2Trans 实现了 97.51% 的增量编译通过率,显著优于复现的基线;生成的制品还支持混合 C/Rust 构建,未观察到接口不匹配。在通用基准测试上,它保持了高编译可行性,将不安全比率降低了 24.02 个百分点,相较于 C2Rust;并且借助 Claude-Opus-4.5,降低了编译输出中的警告数量。此外,自我演化知识库将在未见模块上减少约 60%的平均修复轮数。这些结果表明,结合构建感知的骨架构建和历史知识复用是实现实用渐进 C 到 Rust 迁移的有效策略。

关键词

引用

@article{arxiv.2603.02617,
  title  = {Build-Aware Incremental C-to-Rust Migration via Skeleton-First Translation and Historical Knowledge Reuse},
  author = {Shengbo Wang and Mingwei Liu and Guangsheng Ou and Yuwen Chen and Zike Li and Yanlin Wang and Zibin Zheng},
  journal= {arXiv preprint arXiv:2603.02617},
  year   = {2026}
}