newtypes icon indicating copy to clipboard operation
newtypes copied to clipboard

Release newtypes-core v1.0 to upgrade version schemes

Open bpholt opened this issue 1 year ago • 0 comments

Given the binary compatibility guarantees in place via https://github.com/monix/newtypes/blob/7fe300305d82de3436c96c740656c984433db9fd/build.sbt#L46-L51 it seems like there are no plans to break binary compatibility anytime soon. As such, it would make it easier on downstream users for newtypes-core to use regular semver instead of early-semver.

For example, under early-semver rules, v0.3.0 is a major release, meaning any libraries previously depending on v0.2.x must now themselves release a new major version.

Similarly, sbt will reject the version mismatch if anything in the dependency graph uses the old version:

found version conflict(s) in library dependencies; some are suspected to be binary incompatible:
* io.monix:newtypes-core_2.13:0.3.0 (early-semver) is selected over {0.2.3}

It's always an option for users to add

ThisBuild / libraryDependencySchemes += "io.monix" %% "newtypes-core" % "always"

but this is not optimal as this kind of workaround tends to live longer than it needs to, and means if the library does need to introduce binary-incompatible changes, those applications will not indicate the potential failure at build time.

I'm unclear what was meant to have been signaled by the release of v0.3.0; since it didn't contain any binary-incompatible changes, I would have expected it to have been released as v0.2.4. That can't be changed at this point, but I think we can prevent future such issues by releasing v1.0.0.

bpholt avatar Sep 13 '24 15:09 bpholt