Hi, Am Dienstag, dem 08.03.2022 um 18:43 +0100 schrieb Maxime Devos: > Hi guix, > > Many rust crates are available in multiple versions in Guix > (say, rust-wayland-scanner-0.29). The reason is that ((guix)Rust > Crates): > > In the rust ecosystem it is common for multiple incompatible > versions of a package to be used at any given time, so all package > definitions should have a versioned suffix. The versioned suffix is > the left-most non-zero digit (and any leading zeros, of course). > This follows the “caret” version scheme intended by Cargo. Examples > ‘rust-clap-2’, ‘rust-rand-0.6’. > > I understand the point about version incompatibilities in the land of > oxides. However, what if a crate is being nice by striving to be > backwards-compatible, perhaps even using, say, semver, to indicate > incompatibilities clearly? Is it then still necessary to package the > different minor versions, or would major versions suffice? > > I would hope the latter, but I don't know any rust. What both you and the manual describe is actually well-defined semver, which is "required" by Cargo. clap 2.x is supposed to be compatible with 2.y, y < x or the other way round depending on which direction you're looking at, but not 1.z. The exception here is 0.whatever, which according to semver is a wild land in which everything is permitted. Or in the words of the spec: > Major version zero (0.y.z) is for initial development. Anything MAY > change at any time. The public API SHOULD NOT be considered stable. In practice, we assume 0.y.z be compatible with 0.y.a, a < z or the other way round depending on which direction you're looking at. I'm not sure if this is a rust fortification of semver or just Guix intuition. Another important thing to take away w.r.t. semver here is > Major version X (X.y.z | X > 0) MUST be incremented if any backwards > incompatible changes are introduced to the public API. It MAY also > include minor and patch level changes. Patch and minor versions MUST > be reset to 0 when major version is incremented. so you can't drop the rusty-oxide-12 package upon the release of rusty- oxide-26 when there's still a consumer.
Cheers