RustEvo^2: An Evolving Benchmark for API Evolution in LLM-based Rust Code Generation

📄 arXiv: 2503.16922v1 📥 PDF

作者: Linxi Liang, Jing Gong, Mingwei Liu, Chong Wang, Guangsheng Ou, Yanlin Wang, Xin Peng, Zibin Zheng

分类: cs.SE, cs.AI

发布日期: 2025-03-21

🔗 代码/项目: GITHUB


💡 一句话要点

RustEvo:一个演进的基准测试,用于评估LLM在Rust代码生成中API演变的处理能力

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 大型语言模型 代码生成 API演变 基准测试 Rust编程语言

📋 核心要点

  1. 现有基准测试在评估LLM对快速演进的Rust API的适应性方面存在不足,主要依赖人工标注且缺乏版本针对性。
  2. RustEvo通过自动化合成API变更,构建动态基准测试,模拟真实场景,系统评估LLM在不同API演变类型下的表现。
  3. 实验表明,LLM在处理不同类型API演变时性能差异显著,知识截止日期影响重大,RAG方法能有效提升模型对新API的适应性。

📝 摘要(中文)

大型语言模型(LLMs)已成为软件开发中自动化代码生成的关键工具。然而,这些模型在为快速演进的语言(如Rust)生成版本感知的代码时面临重大挑战,因为Rust中频繁的应用程序编程接口(API)变更会导致兼容性问题和正确性错误。现有的基准测试缺乏对模型如何应对API转换的系统评估,依赖于劳动密集型的手动管理,并提供有限的版本特定见解。为了解决这一差距,我们提出了RustEvo,这是一个用于构建动态基准测试的新框架,用于评估LLMs适应演进的Rust API的能力。RustEvo通过将588个API变更(380个来自Rust标准库,208个来自15个第三方crate)合成为模拟真实世界挑战的编程任务,从而自动化数据集的创建。这些任务涵盖了四个API演变类别:稳定化、签名变更、行为变更和弃用,反映了它们在Rust生态系统中的实际分布。对最先进(SOTA)LLMs的实验揭示了显著的性能差异:模型在稳定的API上实现了65.8%的平均成功率,但在行为变更上仅实现了38.0%,突出了在没有签名更改的情况下检测语义转变的困难。知识截止日期强烈影响性能,模型在截止日期之前的API上得分为56.1%,而在截止日期之后的任务上得分为32.5%。检索增强生成(RAG)缓解了这一差距,对于模型训练后发布的API,平均成功率提高了13.5%。我们的研究结果强调了我们演变感知基准测试的必要性,以提高LLMs在快节奏软件生态系统中的适应性。该框架和基准测试已在https://github.com/SYSUSELab/RustEvo上公开发布。

🔬 方法详解

问题定义:论文旨在解决大型语言模型(LLMs)在Rust等快速演进的编程语言中,由于API频繁变更而导致的代码生成兼容性和正确性问题。现有基准测试无法系统地评估LLMs对API演变的适应能力,依赖人工标注,缺乏版本针对性,难以反映真实场景的挑战。

核心思路:RustEvo的核心思路是自动化构建动态基准测试,模拟真实世界中API的演变过程。通过合成不同类型的API变更,生成具有挑战性的编程任务,从而系统地评估LLMs在面对API演变时的代码生成能力。这种方法避免了人工标注的局限性,并能更全面地反映实际开发中遇到的问题。

技术框架:RustEvo框架主要包含以下几个模块:1) API变更合成模块:负责从Rust标准库和第三方crate中提取API变更信息,并将其合成为编程任务。2) 任务生成模块:根据API变更类型(稳定化、签名变更、行为变更、弃用)生成不同难度的编程任务。3) 评估模块:评估LLMs在这些任务上的表现,并分析其在不同API演变类型下的优缺点。4) RAG增强模块:使用检索增强生成技术,提升LLMs对训练数据截止日期之后发布的API的适应能力。

关键创新:RustEvo的关键创新在于其自动化构建动态基准测试的能力。与传统的静态基准测试相比,RustEvo能够根据API的演变情况动态生成新的测试用例,从而更全面、更真实地评估LLMs的适应能力。此外,RustEvo还考虑了不同类型的API变更,并针对性地设计了评估任务,从而能够更深入地分析LLMs在不同场景下的表现。

关键设计:RustEvo在API变更合成方面,考虑了四种API演变类型:稳定化、签名变更、行为变更和弃用,并根据它们在Rust生态系统中的实际分布进行采样。在评估指标方面,采用了成功率作为主要指标,衡量LLMs生成的代码是否能够正确地解决编程任务。此外,还使用了检索增强生成(RAG)技术,通过检索相关的文档和代码示例,来提升LLMs对新API的理解和使用能力。RAG的具体实现细节(例如检索策略、文档编码方式等)在论文中未详细说明,属于未知信息。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,LLM在稳定API上的平均成功率为65.8%,但在行为变更API上仅为38.0%,表明模型难以检测语义变化。知识截止日期对性能影响显著,模型在截止日期前API上的得分为56.1%,之后为32.5%。RAG方法能有效缓解这一问题,使模型在截止日期后API上的成功率平均提升13.5%。

🎯 应用场景

RustEvo的研究成果可应用于提升LLM在软件开发中的代码生成能力,尤其是在快速演进的编程语言中。通过使用RustEvo进行评估和优化,可以提高LLM生成的代码的兼容性和正确性,降低软件维护成本,并加速软件开发过程。此外,该研究也为其他编程语言的API演变评估提供了借鉴。

📄 摘要(原文)

Large Language Models (LLMs) have become pivotal tools for automating code generation in software development. However, these models face significant challenges in producing version-aware code for rapidly evolving languages like Rust, where frequent Application Programming Interfaces (API) changes across versions lead to compatibility issues and correctness errors. Existing benchmarks lack systematic evaluation of how models navigate API transitions, relying on labor-intensive manual curation and offering limited version-specific insights. To address this gap, we present RustEvo, a novel framework for constructing dynamic benchmarks that evaluate the ability of LLMs to adapt to evolving Rust APIs. RustEvo automates dataset creation by synthesizing 588 API changes (380 from Rust standard libraries, 208 from 15 third-party crates) into programming tasks mirroring real-world challenges. These tasks cover four API evolution categories: Stabilizations, Signature Changes, Behavioral Changes, and Deprecations, reflecting their actual distribution in the Rust ecosystem. Experiments on state-of-the-art (SOTA) LLMs reveal significant performance variations: models achieve a 65.8% average success rate on stabilized APIs but only 38.0% on behavioral changes, highlighting difficulties in detecting semantic shifts without signature alterations. Knowledge cutoff dates strongly influence performance, with models scoring 56.1% on before-cutoff APIs versus 32.5% on after-cutoff tasks. Retrieval-Augmented Generation (RAG) mitigates this gap, improving success rates by 13.5% on average for APIs released after model training. Our findings underscore the necessity of our evolution-aware benchmarks to advance the adaptability of LLMs in fast-paced software ecosystems. The framework and the benchmarks are publicly released at https://github.com/SYSUSELab/RustEvo.