five

C2Rust-Bench

收藏
Hugging Face2025-05-21 更新2025-05-22 收录
下载链接:
https://huggingface.co/datasets/anonymous4review/C2Rust-Bench
下载链接
链接失效反馈
官方服务:
资源简介:
C2Rust-Bench数据集是一个为评估C到Rust语言转换工具而设计的最小化代表性C函数集合。该数据集包括两个文件:`benchmark.json`,包含了数据集的描述和每个函数的详细元数据;`Benchmark.tar`,包含了实验中使用的C和Rust文件。数据集分为三个子集:`microbenchmark_set`,用于初步实验的小型C和Rust函数集合;`large_set`,包含来自65个不同程序的15,503个C函数及其对应的Rust转换函数;`C2Rust-Bench`,包含选定的C函数和相应的Rust函数,进一步分为`C_functions`(包含选定的C函数代码),`C_files`(包含原始C文件),和`Rust_functions`(包含从C函数转换得到的Rust函数)。
创建时间:
2025-05-15
原始信息汇总

C2Rust-Bench 数据集概述

数据集简介

  • 目的:用于评估C到Rust的转译工具
  • 授权许可:CC-BY-NC-SA 4.0
  • 核心内容:包含经过最小化处理的代表性C函数集合

文件构成

1. benchmark.json

  • 包含2,905个C函数的详细描述
  • 提供每个函数的元数据信息

2. Benchmark.tar

包含以下三个主要子文件夹:

microbenchmark_set

  • 小型C和Rust函数集合
  • 使用9种不同LLM进行转译
  • 用于初步实验

large_set

  • 包含15,503个C函数
  • 源自65个不同程序
  • 包含使用选定LLM转译的对应Rust函数

C2Rust-Bench

包含三个子文件夹:

  • C_functions
    • 经过分割处理的单个C函数文件
    • 每个文件包含一个独立函数(不可单独编译)
  • C_files
    • 预处理后的原始C文件
    • 包含额外代码(其他函数、全局变量、结构体定义等)
    • 可单独编译
  • Rust_functions
    • 从C_functions转译得到的独立Rust函数
搜集汇总
数据集介绍
main_image_url
构建方式
在程序语言转换研究领域,C2Rust-Bench数据集通过系统化流程构建而成。研究团队从65个不同C语言程序中提取15,503个函数作为原始素材,经过预处理和函数分割等标准化操作,最终精选出2,905个具有代表性的C函数构成核心测试集。数据集采用分层结构设计,包含微基准测试集和大规模测试集两个子集,其中微基准测试集采用9种不同LLM模型进行转译实验,为后续研究提供多模型对比基础。
特点
该数据集最显著的特征在于其精细的层次化设计结构。核心测试集不仅包含经过标准化的独立C函数文件,还保留了原始可编译的完整C文件作为参考。每个函数样本均配备详尽的元数据描述,为转译质量评估提供多维度的分析依据。数据集特别设计了函数级与文件级双重表示形式,既满足转译算法的基本测试需求,又能支持更复杂的上下文相关分析,在测试粒度和完整性之间实现了良好平衡。
使用方法
研究人员可通过解析benchmark.json文件获取完整的函数元数据信息,包括2,905个测试样本的技术特征。Benchmark.tar压缩包中的分层目录结构支持不同粒度的实验设计:microbenchmark_set适用于算法快速验证,large_set支持大规模性能测试,而C2Rust-Bench核心集则提供函数级与文件级的对照实验条件。使用时应特别注意C_functions与C_files的对应关系,前者用于转译任务,后者可作为上下文参考,这种双轨设计为评估转译算法的上下文理解能力提供了独特条件。
背景与挑战
背景概述
C2Rust-Bench数据集诞生于程序语言转换研究的关键时期,由致力于提升C到Rust代码转换效率的研究团队精心构建。该数据集聚焦于C语言向Rust语言的自动转译问题,收录了2,905个具有代表性的C函数及其详细元数据,旨在为评估各类C-to-Rust转译工具提供标准化测试基准。其核心价值在于通过精心筛选的代码样本,解决了跨语言转译领域缺乏统一评估体系的痛点,为程序语言迁移研究提供了重要的基础设施。
当前挑战
该数据集面临双重技术挑战:在领域问题层面,C与Rust在内存管理、类型系统等核心机制上存在本质差异,如何准确保持语义等价性成为转译过程中的关键难题;在构建过程中,需要克服代码分割、预处理兼容性等技术障碍,特别是确保非独立可编译的C函数片段在转译后仍能保持原始语义。数据集构建者通过设计分层存储结构和元数据标注系统,有效应对了这些挑战。
常用场景
经典使用场景
在编程语言转换领域,C2Rust-Bench数据集为研究人员提供了一个标准化的评估平台。该数据集通过精选的2,905个C函数及其对应的Rust转换版本,成为测试各类C-to-Rust转译工具性能的黄金标准。特别是在比较不同基于LLM的转译方法时,其微基准测试集和大规模测试集能够全面评估转译准确性和效率。
实际应用
在工业界实践中,C2Rust-Bench被广泛应用于遗留系统现代化改造。安全关键领域如嵌入式系统和操作系统开发团队,利用该数据集验证转译后的Rust代码是否保持原有功能且满足内存安全要求。其提供的可编译原始C文件特别适合验证转译结果在实际项目中的集成可行性。
衍生相关工作
基于该数据集已产生多项重要研究成果,包括LLM在代码转译中的适应性研究、跨语言程序等价性验证框架开发等。其中最具代表性的是对9种不同LLM转译效果的对比分析工作,这些研究为后续智能代码转换系统的设计提供了关键见解。数据集的结构设计也启发了其他编程语言转换基准的构建方法。
以上内容由遇见数据集搜集并总结生成
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

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

二维码
科研交流群

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

数据驱动未来

携手共赢发展

商业合作