ChatPaper.aiChatPaper

EVOC2RUST : Un cadre guidé par des squelettes pour la traduction de projets C vers Rust

EVOC2RUST: A Skeleton-guided Framework for Project-Level C-to-Rust Translation

August 6, 2025
papers.authors: Chaofan Wang, Tingrui Yu, Jie Wang, Dong Chen, Wenrui Zhang, Yuling Shi, Xiaodong Gu, Beijun Shen
cs.AI

papers.abstract

Les garanties de sécurité à la compilation de Rust en font un choix idéal pour les systèmes critiques, créant une demande pour la traduction de bases de code C héritées vers Rust. Bien que diverses approches aient émergé pour cette tâche, elles se heurtent à des compromis inhérents : les solutions basées sur des règles rencontrent des difficultés à répondre aux exigences de sécurité et d'idiomaticité du code, tandis que les solutions basées sur des modèles de langage (LLM) échouent souvent à générer du code Rust sémantiquement équivalent, en raison des dépendances lourdes entre les modules à travers l'ensemble de la base de code. Des études récentes ont révélé que ces deux solutions sont limitées à des programmes de petite taille. Dans cet article, nous proposons EvoC2Rust, un cadre automatisé pour convertir des projets C entiers en projets Rust équivalents. EvoC2Rust emploie une stratégie de traduction guidée par un squelette pour la traduction au niveau du projet. Le pipeline se compose de trois étapes évolutives : 1) il décompose d'abord le projet C en modules fonctionnels, utilise un LLM amélioré par une cartographie des fonctionnalités pour transformer les définitions et les macros, et génère des squelettes de fonctions vérifiés par type, formant ainsi un squelette Rust compilable ; 2) il traduit ensuite progressivement les fonctions, en remplaçant les espaces réservés correspondants dans le squelette ; 3) enfin, il corrige les erreurs de compilation en intégrant le LLM et l'analyse statique. Grâce à l'augmentation évolutive, EvoC2Rust combine les avantages des solutions basées sur des règles et des LLM. Notre évaluation sur des benchmarks open source et six projets industriels démontre la performance supérieure d'EvoC2Rust dans la traduction de projets C vers Rust. En moyenne, il obtient des améliorations de 17,24 % et 14,32 % en précision syntaxique et sémantique par rapport aux approches basées sur des LLM, ainsi qu'un taux de sécurité du code 96,79 % plus élevé que les outils basés sur des règles. Au niveau des modules, EvoC2Rust atteint des taux de compilation de 92,25 % et de réussite aux tests de 89,53 % sur des projets industriels, même pour des bases de code complexes et des fonctions longues.
English
Rust's compile-time safety guarantees make it ideal for safety-critical systems, creating demand for translating legacy C codebases to Rust. While various approaches have emerged for this task, they face inherent trade-offs: rule-based solutions face challenges in meeting code safety and idiomaticity requirements, while LLM-based solutions often fail to generate semantically equivalent Rust code, due to the heavy dependencies of modules across the entire codebase. Recent studies have revealed that both solutions are limited to small-scale programs. In this paper, we propose EvoC2Rust, an automated framework for converting entire C projects to equivalent Rust ones. EvoC2Rust employs a skeleton-guided translation strategy for project-level translation. The pipeline consists of three evolutionary stages: 1) it first decomposes the C project into functional modules, employs a feature-mapping-enhanced LLM to transform definitions and macros and generates type-checked function stubs, which form a compilable Rust skeleton; 2) it then incrementally translates the function, replacing the corresponding stub placeholder; 3) finally, it repairs compilation errors by integrating LLM and static analysis. Through evolutionary augmentation, EvoC2Rust combines the advantages of both rule-based and LLM-based solutions. Our evaluation on open-source benchmarks and six industrial projects demonstrates EvoC2Rust's superior performance in project-level C-to-Rust translation. On average, it achieves 17.24% and 14.32% improvements in syntax and semantic accuracy over the LLM-based approaches, along with a 96.79% higher code safety rate than the rule-based tools. At the module level, EvoC2Rust reaches 92.25% compilation and 89.53% test pass rates on industrial projects, even for complex codebases and long functions.
PDF42August 7, 2025