ChatPaper.aiChatPaper

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

PDF52April 24, 2025