🤖 AI Summary
This work addresses the core challenge in automatically translating C code to Rust: simultaneously ensuring memory safety and semantic consistency. To this end, we propose IRENE, a novel framework featuring a three-module collaborative mechanism: (1) rule-augmented retrieval, integrating Rust memory-safety constraints derived from static analysis; (2) structured summarization guidance, explicitly modeling code semantics via hierarchical abstraction; and (3) error-driven translation, iteratively refining outputs using compiler feedback. Methodologically, IRENE injects formal safety rules into large language model (LLM)-based sequence-to-sequence translation, jointly optimizing syntactic correctness and semantic fidelity. Evaluated on xCodeEval and Huawei HW-Bench benchmarks, IRENE significantly improves translation accuracy and memory safety across eight mainstream LLMs, reducing unsafe code generation by 42.6% on average. It establishes a scalable, safety-oriented paradigm for cross-language code migration.
📝 Abstract
Automated translation of legacy C code into Rust aims to ensure memory safety while reducing the burden of manual migration. Early approaches in code translation rely on static rule-based methods, but they suffer from limited coverage due to dependence on predefined rule patterns. Recent works regard the task as a sequence-to-sequence problem by leveraging large language models (LLMs). Although these LLM-based methods are capable of reducing unsafe code blocks, the translated code often exhibits issues in following Rust rules and maintaining semantic consistency. On one hand, existing methods adopt a direct prompting strategy to translate the C code, which struggles to accommodate the syntactic rules between C and Rust. On the other hand, this strategy makes it difficult for LLMs to accurately capture the semantics of complex code. To address these challenges, we propose IRENE, an LLM-based framework that Integrates RulEs aNd sEmantics to enhance translation. IRENE consists of three modules: 1) a rule-augmented retrieval module that selects relevant translation examples based on rules generated from a static analyzer developed by us, thereby improving the handling of Rust rules; 2) a structured summarization module that produces a structured summary for guiding LLMs to enhance the semantic understanding of C code; 3) an error-driven translation module that leverages compiler diagnostics to iteratively refine translations. We evaluate IRENE on two datasets (xCodeEval, a public dataset, and HW-Bench, an industrial dataset provided by Huawei) and eight LLMs, focusing on translation accuracy and safety.