在包级别分析C/C++库迁移:七个包管理工具中的普遍性、领域、目标和原因
软件工程
2025-07-08 v1
摘要
当库无法满足项目需求时,就会发生库迁移,并且完成迁移并非易事。为了缓解这个问题,人们投入了大量精力来理解其特性并推荐替代库,特别是对于拥有中央包托管平台(如Python (PyPI))的编程语言(PL)生态系统。然而,据我们所知,对C/C++库迁移的理解仍然缺乏,这可能是由于C/C++生态系统中碎片化和复杂的依赖管理实践所带来的挑战。为了弥补这一知识空白,本文分析了使用不同包管理工具的19,943个C/C++项目,并建立了第一个C/C++库迁移数据集。基于该数据集,我们调查了C/C++库迁移的普遍性、领域、目标库和原因,并将结果与三种广泛研究的PL进行了比较:Python、JavaScript和Java。我们发现C/C++库迁移数量的总体趋势与Java相似。还观察到跨不同包管理工具的迁移。在C/C++中,库迁移主要发生在GUI、构建和操作系统开发中,但在主导三种比较PL中库迁移的领域(例如测试和日志记录)中很少见。83.46%的C/C++源库只有一个迁移目标,这表明我们的库迁移数据集可以直接用于推荐迁移目标。我们发现了四个C/C++特有的迁移原因,例如更短的编译时间和依赖管理的统一,揭示了C/C++项目中独特的依赖管理需求。我们相信我们的发现可以帮助C/C++开发人员做出更明智的库迁移决策,并为C/C++库迁移工具的设计提供启示。
引用
@article{arxiv.2507.03263,
title = {Analyzing C/C++ Library Migrations at the Package-level: Prevalence, Domains, Targets and Rationals across Seven Package Management Tools},
author = {Haiqiao Gu and Yiliang Zhao and Kai Gao and Minghui Zhou},
journal= {arXiv preprint arXiv:2507.03263},
year = {2025}
}