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