ChatPaper.aiChatPaper

CRUST-Bench : Un benchmark complet pour la transpilation de C vers Rust sécurisé

CRUST-Bench: A Comprehensive Benchmark for C-to-safe-Rust Transpilation

April 21, 2025
Auteurs: Anirudh Khatry, Robert Zhang, Jia Pan, Ziteng Wang, Qiaochu Chen, Greg Durrett, Isil Dillig
cs.AI

Résumé

La transpilation de C vers Rust est essentielle pour moderniser le code C hérité tout en améliorant la sécurité et l'interopérabilité avec les écosystèmes modernes de Rust. Cependant, il n'existe actuellement aucun jeu de données permettant d'évaluer si un système peut transpiler du C en Rust sûr tout en passant une série de tests. Nous présentons CRUST-Bench, un jeu de données de 100 dépôts C, chacun accompagné d'interfaces écrites manuellement en Rust sûr ainsi que de cas de test permettant de valuer la correction de la transpilation. En considérant des dépôts entiers plutôt que des fonctions isolées, CRUST-Bench capture les défis liés à la traduction de projets complexes avec des dépendances réparties sur plusieurs fichiers. Les interfaces Rust fournies offrent des spécifications explicites garantissant le respect des modèles idiomatiques et sûrs de Rust, tandis que les cas de test associés assurent la correction fonctionnelle. Nous évaluons les modèles de langage de pointe (LLMs) sur cette tâche et constatons que la génération de Rust sûr et idiomatique reste un problème difficile pour diverses méthodes et techniques de pointe. Nous fournissons également des insights sur les erreurs que les LLMs commettent généralement lors de la transpilation de code de C vers Rust sûr. Le modèle le plus performant, OpenAI o1, ne parvient à résoudre que 15 tâches dans un contexte de single-shot. Des améliorations sur CRUST-Bench conduiraient à des systèmes de transpilation plus performants, capables de raisonner sur des scénarios complexes et d'aider à migrer des bases de code héritées de C vers des langages comme Rust, qui garantissent la sécurité mémoire. Vous pouvez trouver le jeu de données et le code à l'adresse suivante : https://github.com/anirudhkhatry/CRUST-bench.
English
C-to-Rust transpilation is essential for modernizing legacy C code while enhancing safety and interoperability with modern Rust ecosystems. However, no dataset currently exists for evaluating whether a system can transpile C into safe Rust that passes a set of test cases. We introduce CRUST-Bench, a dataset of 100 C repositories, each paired with manually-written interfaces in safe Rust as well as test cases that can be used to validate correctness of the transpilation. By considering entire repositories rather than isolated functions, CRUST-Bench captures the challenges of translating complex projects with dependencies across multiple files. The provided Rust interfaces provide explicit specifications that ensure adherence to idiomatic, memory-safe Rust patterns, while the accompanying test cases enforce functional correctness. We evaluate state-of-the-art large language models (LLMs) on this task and find that safe and idiomatic Rust generation is still a challenging problem for various state-of-the-art methods and techniques. We also provide insights into the errors LLMs usually make in transpiling code from C to safe Rust. The best performing model, OpenAI o1, is able to solve only 15 tasks in a single-shot setting. Improvements on CRUST-Bench would lead to improved transpilation systems that can reason about complex scenarios and help in migrating legacy codebases from C into languages like Rust that ensure memory safety. You can find the dataset and code at https://github.com/anirudhkhatry/CRUST-bench.

Summary

AI-Generated Summary

PDF62April 24, 2025