中文

ENCRUST:基于活动骨架的封装替换与智能体精化,用于安全的 C 到 Rust 翻译

软件工程 2026-04-07 v1 人工智能 编程语言

摘要

我们提出了 ENCRUST(Encapsulated Substitution and Agentic Refinement on a Live Scaffold for Safe C-to-Rust Translation),一个将真实世界 C 项目翻译为安全 Rust 的两阶段管线。现有方法要么产生不带内存安全保证的不安全输出,要么孤立地翻译函数,无法检测跨单元类型不匹配或处理需要全程序推理的不安全结构。此外,函数级 LLM 流水线在类型签名变更时需要协调调用方更新,而项目级系统往往无法在真实世界依赖复杂度下产生可编译的输出。ENCRUST 通过应用二进制接口(ABI)保持的封装模式将边界适配与函数逻辑解耦,并通过针对集成代码库的验证门来验证每个中间状态。第一阶段(封装替换)使用 ABI 保持的封装将每个函数翻译为两个组件:一个保留原始原始指针签名的对调用方透明的垫片,以及一个由 LLM 针对干净、作用域受限的提示进行翻译的安全内部函数。这使得可以在无需协调调用方更新的情况下独立进行逐函数类型变更,并在失败时自动回滚。一个确定性的、类型导向的封装消除阶段随后在成功翻译后移除封装。第二阶段(智能体精化)解决超出逐函数范围的不安全结构,包括静态可变全局变量、跳过的封装对和失败的翻译,使用在全代码库上运行并基于基线感知验证门的 LLM 智能体。我们在 7 个 GNU Coreutils 程序和 8 个 Laertes 基准库上评估了 ENCRUST,结果表明在所有 15 个程序中均大幅减少了不安全结构,同时保持了完整的测试向量正确性。

关键词

引用

@article{arxiv.2604.04527,
  title  = {ENCRUST: Encapsulated Substitution and Agentic Refinement on a Live Scaffold for Safe C-to-Rust Translation},
  author = {Hohyun Sim and Hyeonjoong Cho and Ali Shokri and Zhoulai Fu and Binoy Ravindran},
  journal= {arXiv preprint arXiv:2604.04527},
  year   = {2026}
}