CRUST-Bench: Ein umfassender Benchmark für die Transpilierung von C zu sicherem Rust
CRUST-Bench: A Comprehensive Benchmark for C-to-safe-Rust Transpilation
April 21, 2025
Autoren: Anirudh Khatry, Robert Zhang, Jia Pan, Ziteng Wang, Qiaochu Chen, Greg Durrett, Isil Dillig
cs.AI
Zusammenfassung
Die C-zu-Rust-Transpilation ist entscheidend, um Legacy-C-Code zu modernisieren und gleichzeitig die Sicherheit und Interoperabilität mit modernen Rust-Ökosystemen zu verbessern. Allerdings existiert derzeit kein Datensatz, um zu bewerten, ob ein System C in sicheres Rust transpilieren kann, das eine Reihe von Testfällen besteht. Wir stellen CRUST-Bench vor, einen Datensatz von 100 C-Repositories, die jeweils mit manuell geschriebenen Schnittstellen in sicherem Rust sowie Testfällen gepaart sind, die zur Validierung der Korrektheit der Transpilation verwendet werden können. Indem ganze Repositories anstelle isolierter Funktionen betrachtet werden, erfasst CRUST-Bench die Herausforderungen der Übersetzung komplexer Projekte mit Abhängigkeiten über mehrere Dateien hinweg. Die bereitgestellten Rust-Schnittstellen bieten explizite Spezifikationen, die die Einhaltung idiomatischer, speichersicherer Rust-Muster gewährleisten, während die begleitenden Testfälle die funktionale Korrektheit sicherstellen. Wir evaluieren state-of-the-art Large Language Models (LLMs) für diese Aufgabe und stellen fest, dass die Erzeugung von sicherem und idiomatischem Rust nach wie vor eine Herausforderung für verschiedene state-of-the-art Methoden und Techniken darstellt. Wir geben auch Einblicke in die Fehler, die LLMs typischerweise bei der Transpilation von Code von C zu sicherem Rust machen. Das beste Modell, OpenAI o1, ist in der Lage, nur 15 Aufgaben in einem Single-Shot-Setting zu lösen. Verbesserungen bei CRUST-Bench würden zu besseren Transpilationssystemen führen, die komplexe Szenarien berücksichtigen und bei der Migration von Legacy-Codebasen von C in Sprachen wie Rust, die Speichersicherheit gewährleisten, helfen können. Den Datensatz und den Code finden Sie unter 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