ChatPaper.aiChatPaper

CRUST-Bench: Un punto de referencia integral para la transpilación de C a Rust seguro

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

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

Resumen

La transpilación de C a Rust es esencial para modernizar código heredado en C mientras se mejora la seguridad y la interoperabilidad con los ecosistemas modernos de Rust. Sin embargo, actualmente no existe un conjunto de datos para evaluar si un sistema puede transpilar C a Rust seguro que pase un conjunto de casos de prueba. Presentamos CRUST-Bench, un conjunto de datos de 100 repositorios en C, cada uno emparejado con interfaces escritas manualmente en Rust seguro, así como casos de prueba que pueden usarse para validar la corrección de la transpilación. Al considerar repositorios completos en lugar de funciones aisladas, CRUST-Bench captura los desafíos de traducir proyectos complejos con dependencias en múltiples archivos. Las interfaces en Rust proporcionadas ofrecen especificaciones explícitas que garantizan la adherencia a patrones idiomáticos y seguros en cuanto a la memoria, mientras que los casos de prueba adjuntos aseguran la corrección funcional. Evaluamos modelos de lenguaje de última generación (LLMs) en esta tarea y encontramos que la generación de Rust seguro e idiomático sigue siendo un problema desafiante para varios métodos y técnicas de vanguardia. También ofrecemos insights sobre los errores que los LLMs suelen cometer al transpilar código de C a Rust seguro. El modelo con mejor rendimiento, OpenAI o1, solo es capaz de resolver 15 tareas en un entorno de un solo intento. Las mejoras en CRUST-Bench conducirían a sistemas de transpilación mejorados que puedan razonar sobre escenarios complejos y ayudar en la migración de bases de código heredadas de C a lenguajes como Rust que garantizan la seguridad de la memoria. Puedes encontrar el conjunto de datos y el código en 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