ChatPaper.aiChatPaper

CRUST-Bench: Um Benchmark Abrangente para Transpilação de C para 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

Resumo

A transpilação de C para Rust é essencial para modernizar código legado em C, ao mesmo tempo em que melhora a segurança e a interoperabilidade com ecossistemas modernos de Rust. No entanto, atualmente não existe um conjunto de dados para avaliar se um sistema pode transpilar C para Rust seguro que passe em um conjunto de casos de teste. Apresentamos o CRUST-Bench, um conjunto de dados de 100 repositórios em C, cada um emparelhado com interfaces escritas manualmente em Rust seguro, além de casos de teste que podem ser usados para validar a correção da transpilação. Ao considerar repositórios inteiros em vez de funções isoladas, o CRUST-Bench captura os desafios de traduzir projetos complexos com dependências entre múltiplos arquivos. As interfaces em Rust fornecidas oferecem especificações explícitas que garantem a adesão a padrões idiomáticos e seguros de Rust, enquanto os casos de teste acompanhantes reforçam a correção funcional. Avaliamos modelos de linguagem de última geração (LLMs) nessa tarefa e descobrimos que a geração de Rust seguro e idiomático ainda é um problema desafiador para vários métodos e técnicas de ponta. Também fornecemos insights sobre os erros que os LLMs geralmente cometem ao transpilar código de C para Rust seguro. O modelo com melhor desempenho, OpenAI o1, consegue resolver apenas 15 tarefas em uma configuração de única tentativa. Melhorias no CRUST-Bench levariam a sistemas de transpilação aprimorados que podem raciocinar sobre cenários complexos e ajudar na migração de bases de código legado de C para linguagens como Rust, que garantem segurança de memória. O conjunto de dados e o código podem ser encontrados em 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