This question is about the Haskell Package Versioning Policy.
I understand the reasoning when and why we should bump major version and minor version. But what is the point to have A.B
for major and C
for minor? When should I bump A
and when B
? Why do we not have only one place for major version like in semantic versioning policy?
There are lots of changes that require a major version bump, but actually are small changes to the library. Things like adding a Functor
or Traversable
instance are pretty small changes, but require a major version bump. Removing a function from the api requires a major version bump.
But lots of libraries also undergo huge changes. Entire rewrites of the API. Changing the semantics of core types and functions. Replacing the whole thing in search of better abstraction.
The former changes call for updates to B. The latter for updates to A. There are judgment calls to be made in the middle, certainly. But the rough rule is that B is incremented for small things that require a major version bump, and A is incremented for significant API changes.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With