Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Q: Should this library really declare a strict versionScheme? #325

Closed
olegbonar opened this issue Sep 11, 2024 · 5 comments
Closed

Q: Should this library really declare a strict versionScheme? #325

olegbonar opened this issue Sep 11, 2024 · 5 comments

Comments

@olegbonar
Copy link

olegbonar commented Sep 11, 2024

Looks like ThisBuild / versionScheme := Some("strict") is set in build.sbt which means, according to sbt documentation, that it does not impose any compatibility guarantees between releases.

So, one could stuck in a situation when two independent libraries brings (transitively) two different zstd-jni versions (i.e. v1.5.6-4 and v1.5.6-5) to the classpath. In that case, sbt will error out and the conflict will need to be resolved.

So the question is - is this really necessary to declare versionScheme as strict? Are the patch releases really not compatible with one another?

@luben
Copy link
Owner

luben commented Sep 22, 2024

Good question. I should read more about the versionScheme

@luben
Copy link
Owner

luben commented Sep 22, 2024

OK, let's try with PVP versioning scheme - this will let us break binary compatibility on upstream minor releases, e.g when 1.6.0 is released next.

The only risk I see here (and with all other schemes) is that when we add new methods/classes we increase the "release" version for example A.B.C-release. We do that so A.B.C is the upstream zstd version we use. If the release is interpreted as part of the "patch" version, i.e. C in the example, it will work as expected. But this is not clear how SBT uses it, as PVP spec warns against using them: https://pvp.haskell.org/#version-tags

luben added a commit that referenced this issue Sep 22, 2024
@luben
Copy link
Owner

luben commented Sep 22, 2024

released with v1.5.6-6

@luben luben closed this as completed Sep 22, 2024
@olegbonar
Copy link
Author

Also, publish the new tag if it's not too much trouble. Thanks!

@luben
Copy link
Owner

luben commented Sep 23, 2024

done

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants