guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: (rust) Do we always need to package minor versions separately?


From: Liliana Marie Prikler
Subject: Re: (rust) Do we always need to package minor versions separately?
Date: Tue, 08 Mar 2022 22:01:43 +0100
User-agent: Evolution 3.42.1

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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]