Replies: 1 comment 5 replies
-
Note that semantic versioning says the following:
Usually a minor release in the 0.x major version indicates a breaking release or significant feature addition, and patch versions are for compatible changes (although not strictly required by semantic versioning)
If you use a wildcard or dependency-range syntax you should really be using a lockfile to ensure reproducibility. That file gets updated explicitly to pull new versions. Otherwise yes this will always result in a broken build. Even with a stable API from the perspective of semantic versioning only the binary API surface is covered. A new overload could change function resolution, deprecation as error or hidden can remove symbols. You are not safe from changes that require human intervention even with a 1.x version. |
Beta Was this translation helpful? Give feedback.
-
I hope this is the right place to discuss; please redirect me if needed.
I'm a huge fan of the library and have been using AssertK for years (I remember when
isEqualToIgnoringGivenProperties
was added!). Looking at the latest releases of AssertK, particularly versionv0.27.0
, I've noticed that there are at least two intentional breaking changes included. As an end user, these minor version updates pose challenges because they require me to make additional code adjustments in my projects. For instance, now I am not able to seamlessly upgrade my projects without encountering runtime errors. If I had been using thev0.+
notation in my dependencies, a new AssertK release would definitely break my CI pipeline. I'd like to bring this up because I assume others face similar challenges.With that in mind, I'd like to pose the question stated in the title:
:: Is it time to consider semantic versioning and increment major versions for breaking changes?
Some immediate follow-ups:
And of course, a big thank you for building this library as well as your attention to this discussion. ❤️
Beta Was this translation helpful? Give feedback.
All reactions