mirror of
https://github.com/semver/semver.git
synced 2026-07-11 05:12:48 -05:00
Version of language bindings, api wrappers, etc #259
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @Playermet on GitHub (Feb 13, 2017).
How should be versioned language bindings/wrappers?
Original api:
Binding/wrapper:
Just merging both changes in single x.y.z causes disorientation, which grows with time.
@jwdonahue commented on GitHub (Nov 30, 2017):
@Playermet, what is meant by "binding/wrapper". I am not following your scenario.
@nrabinowitz commented on GitHub (Feb 20, 2018):
This is an old issue, but I have the same (or a similar) question.
Foo, and I make a JS binding calledFooJS, both using semverFoo.jsto reflect the semver of Foo, so thatFooJS v2.1.2would be a binding toFoo v2.1.2(this is option 2 for the binding as outlined above). This has lots of advantages - clarity for the end user, guarantee that the binding updates following the core lib's guarantees for semver, etc.FooJS v.2.1.2-1this is considered an unstable pre-release version by most clients. If I bump the patch version onFooJSI am out of sync with the coreFoolibrary, a state that gets even worse on the nextFoopatch bump.How does semver handle this situation?
@jwdonahue commented on GitHub (Feb 22, 2018):
Ok this is a package A depends on package B scenario and SemVer is not intended to provide dependency data. That said, you can always put +Foo.1.0.0 on the FooJS "binding" (adapter) if the packaging tool you are using supports the SemVer meta-tag. Most packaging tools have much better support for defining dependencies between SemVer compliant products, than by abusing the SemVer string itself however.
@jwdonahue commented on GitHub (Feb 22, 2018):
So basically, SemVer was not intended nor is it designed to solve this problem. You should use the SemVer string to designate the version of your interface or package. SemVer does not define how dependency graphs are documented. SemVer defines one kind of version string that would be part of the data at the nodes in the dependency graph. This is where packaging tools like npm and nuget come into play. They provide the means to define one node and all of its immediate neighbors, along with the tools to resolve the entire graph below that one node. As an engineer with 28 years of experience shipping products at every scale, I would advice that you should never pin the FooJS version to the Foo version. Such a decision will eventually cause you much grief.
@jwdonahue commented on GitHub (Feb 22, 2018):
@Playermet, unless you have further questions, please close this issue at your earliest possible convenience.
@jwdonahue commented on GitHub (Feb 27, 2018):
Related: #265