-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Prepare releases. #1640
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
Prepare releases. #1640
Conversation
twittner
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[...] I hereby removed the upper bounds in the dependencies on core/swarm.
Does this not toss the whole concept of semantic versioning out of the window?
Not entirely. There are lower bounds and this is only done for dependencies between libp2p crates and dependencies on core/swarm in particular. I am in general in favor of either lax (e.g. on major versions) or no upper bounds in library dependencies, primarily due to the "Bump upper bounds" releases required by any maintainer just to signal compatibility with a newer release of a dependency, which very often doesn't require any changes. This is a trade-off for maintainer-vs-user convenience. In the concrete case of |
With versions >= 1.0.0 this would be equivalent to what we have now (minor and patch increments need to be backwards compatible with versions >= 1.0.0). It is only because we are < 1.0.0 that minor increments are considered incompatible, so if we ever get to 1.0.0 would you then want to remove the major upper bound? If not, we might as well keep the current scheme.
It is incorrect w.r.t. semantic versioning. A user may depend on |
|
Keep in mind that if a user has both, say, |
I wasn't aware of the
No, but as long as we are at |
According to semver.org there can be no compatible increments in versions 0.x.y. Cargo deviates from this in that it treats increments of y as compatible if x > 0.
I do not mind incrementing only the patch number if the changes are backwards compatible and I was under the impression that we already do it this way. However in this release, Finally, I think we are long overdue publishing version 1.0.0. |
It may have just been me being out of the loop on that.
Yes, of course, but I think the |
Co-authored-by: Toralf Wittner <[email protected]>
Co-authored-by: Toralf Wittner <[email protected]>
Unfortunately this is a release of almost all crates, because of the combination of changes to
libp2p-core/libp2p-swarmand the current restrictive upper bounds in all dependent crates. At least half of the releases just lift upper bounds for protocols and transport dependencies on core/swarm. To avoid this in the future, I hereby removed the upper bounds in the dependencies on core/swarm. I think as long as we pursue the multiple-crates approach this is beneficial. Of course, it will eventually result in older versions of crates trying to build against incompatible newer versions of their dependencies due to the lack of upper bounds, so this may at times be a bit less user-friendly and in a sense "encourages" users to upgrade more often. However, I think it will often be the case that minor releases ofcore/swarmdon't require changes to all protocols and/or transports, as seen right here, in which case releasing crates just to bump upper bounds seems quite inconvenient. We can of course always selectively re-introduce upper bounds in specific situations, e.g. if there are large changes in core/swarm and we don't want to adapt all the downstream crates at once.