Rust 包注册表中被撤回发布的实证研究
软件工程
2022-03-21 v1
摘要
Cargo 是 Rust 的软件包管理器,提供撤回(yank)机制以支持发布级别的弃用,可防止软件包依赖于被撤回的发布。先前大多数研究关注代码级别(即已弃用的 API)和包级别(即已弃用的包)的弃用。然而,很少有研究关注发布级别的弃用。在本研究中,我们调查了 yank 机制的使用频率与方式、其使用背后的原因,以及被撤回发布在 Cargo 生态系统中的采用情况。我们的研究表明,Cargo 中 9.6% 的包至少有一个被撤回的发布,且被撤回发布的比例从 2014 年到 2020 年持续上升。包所有者撤回发布的原因除撤回有缺陷的发布外,还包括修复未遵循语义化版本控制的发布,或标示某个包已被移除或替换。此外,我们发现 46% 的包直接采用了至少一个被撤回的发布,且这些被撤回发布通过依赖网络传播,导致生态系统中 1.4% 的发布存在未解决的依赖关系。
引用
@article{arxiv.2201.11821,
title = {An Empirical Study of Yanked Releases in the Rust Package Registry},
author = {Hao Li and Filipe R. Cogo and Cor-Paul Bezemer},
journal= {arXiv preprint arXiv:2201.11821},
year = {2022}
}
备注
13 pages, 7 figures