Just like any software, libraries evolve to incorporate new features, bug fixes, security patches, and refactorings. However, when a library evolves, it may break the contract previously established with its clients by introducing Breaking Changes (BCs) in its API. These changes might trigger compile-time, link-time, or run-time errors in client code. As a result, clients may hesitate to upgrade their dependencies, raising security concerns and making future upgrades even more difficult.Understanding how libraries evolve helps client developers to know which changes to expect and where to expect them, and library developers to understand how they might impact their clients. In the most extensive study to date, Raemaekers et al. investigate to what extent developers of Java libraries hosted on the Maven Central Repository (MCR) follow semantic versioning conventions to signal the introduction of BCs and how these changes impact client projects. Their results suggest that BCs are widespread without regard for semantic versioning, with a significant impact on clients.In this paper, we conduct an external and differentiated replication study of their work. We identify and address some limitations of the original protocol and expand the analysis to a new corpus spanning seven more years of the MCR. We also present a novel static analysis tool for Java bytecode, Maracas, which provides us with: (i) the set of all BCs between two versions of a library; and (ii) the set of locations in client code impacted by individual BCs. Our key findings, derived from the analysis of 119, 879 library upgrades and 293, 817 clients, contrast with the original study and show that 83.4% of these upgrades do comply with semantic versioning. Furthermore, we observe that the tendency to comply with semantic versioning has significantly increased over time. Finally, we find that most BCs affect code that is not used by any client, and that only 7.9% of all clients are affected by BCs. These findings should help (i) library developers to understand and anticipate the impact of their changes; (ii) library users to estimate library upgrading effort and to pick libraries that are less likely to break; and (iii) researchers to better understand the dynamics of library-client co-evolution in Java.


翻译:与任何软件一样, 图书馆会演变成包含新的特性、 错误修正、 安全补丁和重构。 但是, 当图书馆进化后, 图书馆可能会通过在其 API 中引入“ 突破改变 ” (BCs) 来打破先前与客户订立的合同。 这些变化可能会触发客户代码中的编译时间、 链接时间或运行时间错误。 结果, 客户可能会犹豫于提升其独立性, 提高安全关注, 使未来升级更加困难 。 了解图书馆如何进化, 帮助客户了解预期的变化和预期的变化, 以及图书馆开发者了解这些变化会如何影响客户。 但是, 在迄今为止最广泛的研究中, Raemaekers 等人可能会破坏先前与客户订立的合同合同。 这些客户的创建程序版本可能会影响客户。 这些客户的创建过程可能会被我们发现, 语义性版本会给我们带来更大的时间, 并且会给客户带来巨大的影响。 在本文中, 我们进行了外部和差异的复制研究, 我们用8 数据库的分析会得到更多。

0
下载
关闭预览

相关内容

因果推断,Causal Inference:The Mixtape
专知会员服务
105+阅读 · 2021年8月27日
专知会员服务
18+阅读 · 2021年6月10日
因果图,Causal Graphs,52页ppt
专知会员服务
246+阅读 · 2020年4月19日
【ICLR2020-哥伦比亚大学】多关系图神经网络CompGCN
专知会员服务
49+阅读 · 2020年4月2日
【哈佛大学商学院课程Fall 2019】机器学习可解释性
专知会员服务
103+阅读 · 2019年10月9日
已删除
将门创投
8+阅读 · 2019年3月18日
VIP会员
相关资讯
已删除
将门创投
8+阅读 · 2019年3月18日
Top
微信扫码咨询专知VIP会员