Subject: Re: bug#46865: [PATCH] gnu: racket: update to 8.0.

From: Ludovic Courtès <[email-masked]>
Date: Mon, 08 Mar 2021 15:33:53 +0100

Hi,

Philip McGrath <[email-masked]> skribis:

>> Did you try unbundling Chez?  It would be great if we could do that.
>> (In Guix we unbundle software as much as possible, notably for security
>> reasons.)
>
> The Racket fork of Chez Scheme has diverged significantly from upstream.
> Racket regularly syncs with upstream Chez and contributes patches
> back, but they are likely to coexist as two different "flavors" of
> Chez for the foreseeable future. There's a detailed (though almost
> two-year-old) review of the differences in their ICFP report[1]. In
> essence, some of Racket's "changes to Chez Scheme are either
> controversial or heavyweight compared to the expected benefit for
> applications other than Racket". You can see how one controversial
> pull request[2] became a Flatt and Dybvig 2020 PLDI paper.[3] At this
> point, for example, Racket's Chez has gained an Aarch64 backend,
> floating-point unboxing, and a type-reconstruction compiler pass.
>
> So, no, I don't think there's a prospect of unbundling Chez.

OK, that makes sense; thanks for explaining.

> On the other hand, since sending this patch, I saw that much of the
> work Guix and Nix had to do with around absolute paths could be better 
> addressed upstream. Racket has merged my fixes for most of them[4]
> (and Matthew solved another in C [5]), which means we can greatly
> simplify the package definition. I hope to get those fixes into
> upstream Chez, too.

Nice!

> I do think I should be able to unbundle Nanopass, as the Chez Guix
> package does.

Cool, that’d be a welcome improvement.

> Just now I've been working on bootstrapping. Chez has the usual
> problem that you need the old version of Chez (specifically
> "bootfiles") to compile the new version. Racket's fork added an
> architecture-independent backend: those bootfiles are in the source
> distribution, which are how the Guix package is building now. But
> Racket is also able to simulate enough of Chez to (slowly) compile the
> Chez compiler, providing a path to Chez from just a C compiler. Racket
> does its whole bootstrapping process regularly in CI, and I'm working
> on getting the Guix package to do likewise.

Awesome.

> (I knew from previous discussions that Racket on Guix could benefit
> from some attention, so I'm hoping to use it as an opportunity to
> learn more about Guix.)

Yup!  There have been discussions about having a raco importer (for the
“guix import” command), but I think the effort stalled.  It’d go a long
way bringing the Racket/Guix/Guile communities together, and it can be
hacked in a language all three communities love.  :-)

Thanks for your work!

Ludo’.