five

RustEvo²

收藏
github2025-03-23 更新2025-04-18 收录
下载链接:
https://github.com/SYSUSELab/RustEvo
下载链接
链接失效反馈
官方服务:
资源简介:
RustEvo²是一个用于评估基于LLM的Rust代码生成中API演化的基准数据集。它包含588个API变更(380个来自Rust标准库,208个来自15个第三方crate),涵盖版本1.71.0至1.84.0。这些变更分为四类:稳定化(31.3%)、签名变更(31.5%)、行为变更(33.2%)和弃用(4.1%)。每个任务包括API变更信息、编程查询、函数签名、参考解决方案和测试程序。

RustEvo² is a benchmark dataset for evaluating API evolution in LLM-based Rust code generation. It contains 588 API changes (380 from the Rust Standard Library, 208 from 15 third-party crates), covering versions 1.71.0 to 1.84.0. These changes are categorized into four types: stabilization (31.3%), signature changes (31.5%), behavioral changes (33.2%), and deprecation (4.1%). Each task includes API change information, programming queries, function signatures, reference solutions, and test programs.
创建时间:
2025-03-20
原始信息汇总

RustEvo² 数据集概述

数据集简介

  • 来源:基于论文《RustEvo²: An Evolving Benchmark for API Evolution in LLM-based Rust Code Generation》构建
  • 目的:为基于LLM的Rust代码生成提供API演化基准测试

数据集构成

数据收集阶段(Phase I)

  • 数据来源:官方Rust仓库和15个第三方crate
  • 分析内容:变更日志、文档和实现变更
  • API变更分类
    • Stabilizations(稳定化,31.3%)
    • Signature Changes(签名变更,31.5%)
    • Behavioral Changes(行为变更,33.2%)
    • Deprecations(弃用,4.1%)

数据集构建阶段(Phase II)

  • 总数量:588个API变更(380个来自Rust标准库,208个来自第三方crate)
  • 版本范围:Rust 1.71.0至1.84.0
  • 任务结构
    • API变更信息
    • 编程查询
    • 函数签名
    • 参考解决方案
    • 测试程序

数据集格式示例

json { "task_idx": 39, "query": "In a performance-critical application...", "function_signature": "fn update_collection<T: Clone>(target: &mut Vec<T>, source: &Vec<T>)", "code": "fn update_collection<T: Clone>(target: &mut Vec<T>, source: &Vec<T>) {...}", "test_program": "..." }

使用说明

环境准备

  1. 创建Python环境: bash conda create -n RustEvo python=3.8 conda activate RustEvo pip install -r requirements.txt

  2. 安装Rust工具链: bash curl --proto =https --tlsv1.2 -sSf https://sh.rustup.rs | sh rustup toolchain install 1.71.0 1.72.0 ... 1.84.0

数据集构建

  1. API变更收集: bash python scripts/rust_api_analyzer.py --repo ./rust-repo --output ./reports --start 1.72.0 --end 1.84.0 python scripts/crate_analyzer.py --crates_num 15 --start_date 2024-01-01 --end_date 2025-02-21

  2. 任务生成: bash python scripts/generate_query.py --input ./reports/rust_api_changes.json --output ./data/queries/queries_rust.json python scripts/generate_code.py --input ./data/queries/queries_rust.json --output ./data/codes/codes_rust.json python scripts/generate_test.py --input_file ./data/codes/codes_rust.json --output_file ./data/test_programs/test_programs_rust.json

评估结果

模型性能对比

模型 Pass@1 (%) API使用准确率 (%) 覆盖率 (%)
Claude-3.7-Sonnet 65.3 78.2 83.6
o1-mini 57.5 70.4 85.2
GPT-4o 55.4 68.4 77.2

按变更类型分类性能

变更类型 平均Pass@1 (%)
Stabilizations 65.8
Signature Changes 58.2
Behavioral Changes 38.0
Deprecations 40.4
搜集汇总
数据集介绍
main_image_url
构建方式
在Rust语言生态系统的演进背景下,RustEvo²数据集通过两阶段方法构建而成。第一阶段从Rust官方仓库和第三方crate中系统采集API变更数据,通过分析变更日志、文档和实现差异,将API演进归类为稳定化、签名变更、行为变更和废弃四种类型。第二阶段采用基于大语言模型的生成管道,将原始API变更数据转化为自然编程任务,形成包含API变更信息、编程查询、函数签名、参考解决方案和测试程序的完整任务单元。数据集覆盖Rust 1.71.0至1.84.0版本,最终包含588个API变更案例。
特点
作为评估大语言模型处理Rust API演进能力的专业基准,RustEvo²具有显著特性。数据集严格遵循Rust生态中API变更的实际分布比例,四类变更的占比与真实场景保持高度一致。每个任务单元采用五元组结构设计,通过自然语言查询隐式要求特定API版本的使用,避免直接暴露API细节。测试程序不仅验证功能正确性,还检测API使用准确性。数据集覆盖标准库和15个第三方crate,版本跨度达13个发布周期,具有充分的代表性和时效性。
使用方法
该数据集支持开箱即用的评估流程,用户可通过配置Python和Rust工具链环境快速部署。数据集文件采用结构化JSON格式存储,可直接加载用于模型测试。对于定制化需求,项目提供完整的构建工具链:rust_api_analyzer.py和crate_analyzer.py脚本支持从源码仓库提取API变更;generate_query.py、generate_code.py和generate_test.py构成任务生成管线。评估模块采用模块化设计,用户可通过替换generation.py中的目标模型实现跨模型对比,run.sh脚本支持批量执行测试并生成包含通过率、API使用准确率和覆盖率等指标的详细报告。
背景与挑战
背景概述
RustEvo²是由研究团队构建的一个专注于Rust编程语言API演化的基准数据集,旨在评估大型语言模型在Rust代码生成任务中对API变化的适应能力。该数据集创建于2024年,基于Rust标准库(1.71.0至1.84.0版本)和15个第三方crate的API变更数据,系统性地收集了588个API变更案例,涵盖稳定性变更、签名变更、行为变更和废弃声明四种类型。通过将API演化数据转化为自然编程任务,该数据集为研究LLM在动态编程环境中的代码生成能力提供了标准化评估框架,对编程语言工程和AI辅助开发领域具有重要价值。
当前挑战
RustEvo²面临的核心挑战体现在两个维度:领域问题层面,API演化导致的代码兼容性问题给LLM生成正确代码带来显著困难,特别是行为变更类任务的平均通过率仅为38%,远低于稳定性变更的65.8%;数据集构建层面,精确识别和分类API变更需要深入分析变更日志、文档和实现细节,而将技术性API变更转化为自然的编程查询则需保持语义一致性却不泄露API细节,这种平衡对数据质量提出了极高要求。
常用场景
经典使用场景
在编程语言演进的背景下,RustEvo²数据集为研究Rust语言API演化对代码生成的影响提供了标准化的评估基准。该数据集通过精心设计的编程任务,模拟了真实开发场景中API版本变更带来的挑战,使得研究人员能够系统性地评估大型语言模型在处理API演化时的适应能力。数据集中包含的588个API变更案例覆盖了稳定化、签名变更、行为变更和废弃四种常见演化类型,为相关研究提供了丰富的实验材料。
解决学术问题
RustEvo²数据集有效解决了编程语言演化研究中缺乏系统性评估基准的学术难题。通过构建包含API变更信息、编程查询、函数签名、参考解决方案和测试程序的完整任务单元,该数据集为量化分析语言模型对API演化的适应能力提供了可靠依据。特别值得注意的是,数据集揭示了不同模型在处理行为变更和废弃API时的显著性能差异,为改进模型在动态编程环境中的鲁棒性指明了方向。
衍生相关工作
围绕RustEvo²数据集已衍生出多个重要研究方向。部分研究聚焦于开发专门针对API演化的微调策略,如基于变更类型的自适应学习机制。另有工作探索如何将数据集中的知识迁移至其他编程语言,形成跨语言的API演化基准。在工具开发方面,出现了利用该数据集训练版本敏感型代码补全插件的实践,这些工作显著推进了智能编程辅助工具的发展进程。
以上内容由遇见数据集搜集并总结生成
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

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

二维码
科研交流群

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

数据驱动未来

携手共赢发展

商业合作