Putting the Semantics into Semantic Versioning
Patrick Lam, Jens Dietrich, David J. Pearce

TL;DR
This paper advocates for integrating semantic understanding into versioning systems to improve dependency management, proposing tools that leverage contracts and program analysis to assess upgrade safety in software ecosystems.
Contribution
It introduces the concept of semantic versioning calculators that utilize contracts and program analysis to predict safe upgrades, enhancing dependency management.
Findings
Contracts can inform version compatibility assessments
Semantic versioning calculators can automate upgrade safety decisions
Recent program analysis advances make these tools feasible
Abstract
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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
