论文标题

将语义置于语义版本中

Putting the Semantics into Semantic Versioning

论文作者

Lam, Patrick, Dietrich, Jens, Pearce, David J.

论文摘要

在过去的几年中,长期以来对软件再利用的渴望使人惊人的进步。现在,许多现代软件开发生态系统都配备了社区贡献的大量公共可用组件。下游开发人员可以利用这些上游组成部分,从而提高其生产力。 但是,组件以自己的节奏发展。这对下游开发人员施加了义务并产生收益,尤其是因为变化可能会破裂,需要适应其他下游工作。升级太晚使下游容易受到安全问题的影响,而错过了有用的改进;升级过早的结果过早的工作。语义版本控制被认为是一种传达兼容性级别的优雅机制,使下游开发人员能够自动化依赖性升级。 虽然一个版本号是否可以充分地表征版本的兼容性是值得怀疑的,但我们认为开发人员将从诸如语义版本计算器等工具中受益匪浅,以帮助他们安全地升级。现在是时候让研究社区开发这样的工具了:存在大型组件生态系统并且可以访问,组件交互已经通过自动构建可以观察到,并且程序分析的最新进展使相关工具的开发可行。特别是,合同(传统和轻量级)是语义版本控制器的有希望的输入,这可以表明升级是否可能是安全的。

The long-standing aspiration for software reuse has made astonishing strides in the past few years. Many modern software development ecosystems now come with rich sets of publicly-available components contributed by the community. Downstream developers can leverage these upstream components, boosting their productivity. However, components evolve at their own pace. This imposes obligations on and yields benefits for downstream developers, especially since changes can be breaking, requiring additional downstream work to adapt to. Upgrading too late leaves downstream vulnerable to security issues and missing out on useful improvements; upgrading too early results in excess work. Semantic versioning has been proposed as an elegant mechanism to communicate levels of compatibility, enabling downstream developers to automate dependency upgrades. While it is questionable whether a version number can adequately characterize version compatibility in general, we argue that developers would greatly benefit from tools such as semantic version calculators to help them upgrade safely. The time is now for the research community to develop such tools: large component ecosystems exist and are accessible, component interactions have become observable through automated builds, and recent advances in program analysis make the development of relevant tools feasible. In particular, contracts (both traditional and lightweight) are a promising input to semantic versioning calculators, which can suggest whether an upgrade is likely to be safe.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源