five

CRUST-Bench

收藏
github2025-04-22 更新2025-04-25 收录
下载链接:
https://github.com/anirudhkhatry/CRUST-bench
下载链接
链接失效反馈
官方服务:
资源简介:
CRUST-Bench是一个用于评估C到安全Rust转译的数据集,包含100个C仓库,每个仓库都配有手动编写的安全Rust接口和测试用例。该数据集考虑了整个仓库而非孤立函数,能够捕捉跨多个文件的复杂项目转译的挑战。

CRUST-Bench is a dataset dedicated to evaluating the transpilation of C code to safe Rust. It includes 100 C repositories, each paired with manually written safe Rust interfaces and test cases. Unlike approaches that focus solely on isolated functions, this dataset considers entire repositories, allowing it to capture the challenges associated with transpiling complex projects spanning multiple files.
创建时间:
2025-04-11
原始信息汇总

CRUST-Bench 数据集概述

基本信息

数据集简介

CRUST-Bench 是一个用于评估 C 代码转译为安全 Rust 代码的数据集,包含 100 个 C 仓库,每个仓库均配有手动编写的安全 Rust 接口和测试用例。

数据集结构

数据集包含两个主要文件夹:

  1. CBench: 包含从 GitHub 收集的 C 项目。

    CBench/ ├── Project_1/ │ ├── file1.c/ │ ├── file2.c/ │ └── ... └── ...

  2. RBench: 包含手动注释的 Rust 接口和测试。

    RBench/ ├── Project_1/ │ ├── interfaces/ │ │ ├── file1.rs │ │ ├── file2.rs │ │ └── ... │ ├── bin/ │ │ ├── test1.rs │ │ ├── test2.rs │ │ └── ... └── ...

使用说明

环境要求

  • 依赖项: 运行 pip install -r requirements.txt
  • Rust: 需安装 rustup

加载数据集

数据集位于 datasets 文件夹中,解压后包含 CBenchRBench 文件夹。

脚本与工具

  • 类型检查: 运行 python check_benchmarks/check_build.py
  • 数据集统计:
    • python src/dataset_stats/get_c_stats.py datasets/CBench
    • python src/dataset_stats/get_interfaces_stats.py datasets/RBench

实验复现

需设置以下环境变量: bash export OPENAI_API_KEY=<OpenAI_API_KEY> export ANTHROPIC_API_KEY=<ANTHROPIC_API_KEY> export GOOGLE_CLOUD_PROJECT=<GOOGLE_CLOUD_PROJECT> export GOOGLE_CLOUD_REGION=<GOOGLE_CLOUD_REGION>

运行参数

主要参数包括:

  • --benchmark_dir: C 项目目录路径
  • --rust_dir: Rust 项目目录路径
  • --output_dir: 输出目录路径
  • --prompt: 转译提示
  • --mode: 转译模式(normalmulti_gen
  • --endpoint: 模型端点

引用

bibtex @misc{ khatry2025crustbenchcomprehensivebenchmarkctosaferust, title={CRUST-Bench: A Comprehensive Benchmark for C-to-safe-Rust Transpilation}, author={Anirudh Khatry and Robert Zhang and Jia Pan and Ziteng Wang and Qiaochu Chen and Greg Durrett and Isil Dillig}, year={2025}, eprint={2504.15254}, archivePrefix={arXiv}, primaryClass={cs.SE}, url={https://arxiv.org/abs/2504.15254}, }

联系方式

  • 联系人: Anirudh Khatry
  • 邮箱: akhatry@utexas.edu
  • GitHub: @anirudhkhatry
搜集汇总
数据集介绍
main_image_url
构建方式
在软件工程领域,C语言向Rust语言的转换对于提升代码安全性和现代化具有重大意义。CRUST-Bench数据集的构建采用了系统化的方法,从GitHub上精选了100个涵盖系统工具、算法、编程语言基础设施等多个领域的C语言仓库。每个仓库不仅包含原始C代码,还配备了手工编写的安全Rust接口和相应的测试用例,确保了转换后的代码既符合Rust的内存安全特性,又能通过功能正确性验证。这种全仓库级别的处理方式,而非孤立函数,更真实地模拟了实际项目中跨文件依赖的复杂场景。
使用方法
使用CRUST-Bench数据集需要一定的技术准备。首先,用户需安装Rust环境以构建项目。数据集以压缩文件形式提供,解压后包含CBench和RBench两个文件夹,分别存放原始C项目和Rust接口及测试。通过提供的Python脚本,用户可以检查Rust项目的类型安全性或获取数据集的统计信息。此外,数据集支持与大型语言模型(如OpenAI的o1模型)的集成,用户可以通过配置API密钥和运行提供的脚本来进行C到Rust的转换实验。这种灵活的使用方式使得CRUST-Bench既适合研究也适合实际应用。
背景与挑战
背景概述
CRUST-Bench数据集由Anirudh Khatry、Robert Zhang等学者于2025年4月联合发布,旨在解决C语言向安全Rust代码转换的评估难题。作为首个面向完整代码仓库级C-to-Rust转译的基准测试集,该数据集收录了涵盖系统工具、密码学等七大领域的100个GitHub项目,每个项目均配备手工编写的Rust安全接口与验证测试用例。这项由美国国家科学基金会资助的研究,通过建立跨文件依赖关系的真实项目转换标准,为程序语言现代化迁移提供了重要的评估框架,其研究成果已发表于计算机系统领域顶级会议。
当前挑战
该数据集揭示了两个维度的核心挑战:在领域问题层面,现有大型语言模型仅能完成15%的单次转译任务,暴露出处理指针操作、内存安全保证等Rust特有语法时的能力缺陷;在构建过程中,研究人员需克服跨文件语义一致性保持、测试用例覆盖率验证等工程难题,特别是需要确保自动生成的Rust代码既符合类型安全规范,又能通过功能正确性测试。这些挑战突显了传统转译技术在处理复杂系统代码时的局限性。
常用场景
经典使用场景
在软件工程领域,C语言到Rust语言的转换是现代化进程中不可或缺的一环。CRUST-Bench数据集通过提供100个C语言仓库及其对应的安全Rust接口和测试用例,为研究者和开发者提供了一个评估C到Rust转换系统性能的标准化平台。这一数据集特别适用于测试和验证大型语言模型在复杂代码库转换中的表现,尤其是在处理跨文件依赖和内存安全问题时。
解决学术问题
CRUST-Bench数据集解决了C到Rust转换中内存安全和功能正确性验证的学术难题。通过手动编写的Rust接口和配套测试用例,数据集确保了转换后的代码不仅符合Rust的内存安全标准,还能保持原有的功能逻辑。这对于研究如何自动化生成符合现代编程语言规范的代码具有重要意义,同时也为评估和改进现有转换技术提供了可靠的数据支持。
实际应用
在实际应用中,CRUST-Bench数据集为企业和开发者提供了一个高效的工具,用于将遗留的C代码库迁移到更安全的Rust生态系统。这种转换不仅提升了代码的安全性,还增强了与现代Rust生态系统的互操作性。数据集的应用场景涵盖了系统工具、算法实现、网络编程等多个领域,为代码现代化提供了切实可行的解决方案。
数据集最近研究
最新研究方向
在软件工程领域,随着内存安全问题的日益突出,将传统C代码迁移至Rust语言已成为重要研究方向。CRUST-Bench数据集的推出填补了C-to-Rust转译评估领域的空白,为研究者提供了包含100个完整C项目及其对应安全Rust接口的基准测试平台。当前研究热点聚焦于探索大型语言模型在复杂项目转译中的表现,特别是如何克服跨文件依赖关系和内存安全约束等挑战。最新实验数据表明,即使是性能最优的OpenAI o1模型,在单次尝试场景下也仅能完成15项任务,这凸显了该领域仍存在巨大研究空间。该数据集不仅为转译系统的性能评估提供了标准化框架,更为理解模型在代码转换过程中的常见错误模式提供了宝贵资源,对推动遗留系统现代化改造具有重要实践意义。
以上内容由遇见数据集搜集并总结生成
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作