ChatPaper.aiChatPaper

CRUST-Bench: Een Uitgebreide Benchmark voor C-naar-veilig-Rust Transpilatie

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

Samenvatting

C-naar-Rust transpilatie is essentieel voor het moderniseren van verouderde C-code terwijl de veiligheid en interoperabiliteit met moderne Rust-ecosystemen wordt verbeterd. Er bestaat echter momenteel geen dataset om te evalueren of een systeem C kan transpileren naar veilige Rust die een reeks testgevallen doorstaat. Wij introduceren CRUST-Bench, een dataset van 100 C-repositories, elk gekoppeld aan handmatig geschreven interfaces in veilige Rust, evenals testgevallen die kunnen worden gebruikt om de correctheid van de transpilatie te valideren. Door hele repositories te beschouwen in plaats van geïsoleerde functies, vangt CRUST-Bench de uitdagingen van het vertalen van complexe projecten met afhankelijkheden over meerdere bestanden. De geleverde Rust-interfaces bieden expliciete specificaties die zorgen voor naleving van idiomatische, geheugenveilige Rust-patronen, terwijl de bijbehorende testgevallen functionele correctheid afdwingen. Wij evalueren state-of-the-art grote taalmodellen (LLMs) voor deze taak en concluderen dat het genereren van veilige en idiomatische Rust nog steeds een uitdagend probleem is voor verschillende state-of-the-art methoden en technieken. We bieden ook inzichten in de fouten die LLMs meestal maken bij het transpileren van code van C naar veilige Rust. Het best presterende model, OpenAI o1, is in staat slechts 15 taken op te lossen in een single-shot setting. Verbeteringen op CRUST-Bench zouden leiden tot verbeterde transpilatiesystemen die kunnen redeneren over complexe scenario's en helpen bij het migreren van verouderde codebases van C naar talen zoals Rust die geheugenveiligheid garanderen. U kunt de dataset en code vinden op 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

PDF52April 24, 2025