Subject: bug#62064: Why is only rust-1.60 exported when 1.65 is defined?

From: Simon Tournier <[email-masked]>
Date: Mon, 13 Mar 2023 15:32:23 +0100

Hi,

On mer., 08 mars 2023 at 16:09, Jonas Møller via Bug reports for GNU Guix <[email-masked]> wrote:

>> ;;; Note: Only the latest versions of Rust are supported and tested. The
>> ;;; intermediate rusts are built for bootstrapping purposes and should not
>> ;;; be relied upon. This is to ease maintenance and reduce the time
>> ;;; required to build the full Rust bootstrap chain.
>> ;;;
>> ;;; Here we take the latest included Rust, make it public, and re-enable tests
>> ;;; and extra components such as rustfmt.
>
> And then proceeds to define-public rust as rust-1.60, and I was
> wondering if there's any particular reason why a year-old version is
> used rather than the 1.65 version. This seems like a mistake, given
> that the comment claims that the "latest included Rust" should be made
> public.

Well, I know few about Rust and I guess it is because using ’rust-1.65’
as default Rust is a world-rebuild.

--8<---------------cut here---------------start------------->8---
$ guix refresh rust -l | cut -f1 -d':'
Building the following 4560 packages would ensure 6637 dependent packages are rebuilt
--8<---------------cut here---------------end--------------->8---

> This is especially troublesome for Rust on Guix because of both how
> fast its ecosystem moves onto new language/tooling features, and
> because using rustup (the solution for this on other slow-moving
> distros) relies on pre-built executables that don't work
> out-of-the-box on Guix. 

Well, the issue when exporting ’rust-1.65’ is that it would possible
incompatible with the Rust packages provided by Guix and compiled with
’rust’ (1.60).

Maybe, one could imagine a package transformation
’package-with-explicit-rust’ as it is done for Python and OCaml.

Cheers,
simon