guix-patches
[Top][All Lists]
Advanced

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

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


From: Philip McGrath
Subject: [bug#46865] [PATCH] gnu: racket: update to 8.0.
Date: Fri, 5 Mar 2021 08:35:52 -0500
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Thunderbird/68.12.1

Hi!

On 3/5/21 6:49 AM, Ludovic Courtès wrote:
I applied it and tweak the commit log to mention the fields that were
changed.  The new synopsis and description LGTM!

That's great!

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.

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.

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

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.

(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.)

-Philip

[1]: https://www.cs.utah.edu/plt/publications/icfp19-fddkmstz.pdf
[2]: https://github.com/cisco/ChezScheme/pull/336
[3]: https://www.cs.utah.edu/plt/publications/pldi20-fd.pdf
[4]: https://github.com/racket/racket/pull/3710
[5]: https://github.com/mflatt/racket/commit/7319a22ed605fb3110b98f6c9aa1e8ed3aa03794





reply via email to

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