English

&inator: Correct, Precise C-to-Rust Interface Translation

Programming Languages 2026-04-23 v2

Abstract

Automatically translating system software from C to Rust is an appealing but challenging problem, as it requires whole-program reasoning to satisfy Rust's ownership and borrowing discipline. A key enabling step in whole-program translation is interface translation, which produces Rust declarations for the C program's top-level declarations (i.e., structs and function signatures), enabling modular and incremental code translation. This paper introduces correct, precise C-to-Rust interface translation, called &inator. &inator employs a novel constraint-based formulation of semantic equivalence and type correctness including borrow-checking rules to produce a Rust interface that is correct (i.e., the interface admits a semantics-preserving implementation in safe Rust) and precise (i.e., it uses the simplest, least costly types). Our results show &inator produces correct, precise Rust interfaces for real C programs, but support for certain C features and scaling to large programs are challenges left for future work. This work advances the state of the art by being the first correct, precise approach to C-to-Rust interface translation.

Keywords

Cite

@article{arxiv.2604.17261,
  title  = {&inator: Correct, Precise C-to-Rust Interface Translation},
  author = {Victor Chen and Ayden Coughlin and Michael D. Bond},
  journal= {arXiv preprint arXiv:2604.17261},
  year   = {2026}
}

Comments

38 pages, 8 figures; updated references

R2 v1 2026-07-01T12:16:34.702Z