Subject: [bug#55248] [PATCH v3 7/9] gnu: chez-upstream-features-for-system: Improve implementation.

From: Liliana Marie Prikler <[email-masked]>
Date: Mon, 09 May 2022 09:41:35 +0200

Am Montag, dem 09.05.2022 um 03:20 -0400 schrieb Philip McGrath:

> On 5/9/22 02:21, Liliana Marie Prikler wrote:
> > As far as I can see, we have a bijection between *supported nix
> > systems* and chez-machines, with the *behaviour when looking up
> > unsupported systems* being *undefined*.
> I think a bijection happens to exist at the moment, but only by 
> accident. 
Emphasis mine.  Look more closely, it's a bijection + undefined, where
undefined falls outside the realm of what should be reached outside of
supported-system queries.  In short, the specification for nix-system-
>chez-machine is that for every *supported system* it returns the chez
machine as a string.  Otherwise, it may return a string or #f, we don't
care.  Thus, nix-system->chez-machine can serve as an upper bound for
supported-system, but not as its implementation.

> For example, while it isn't packaged for Guix, apparently 
> aarch64-w64-mingw32 is a thing. Racket's Chez Scheme only added
> tarm64nt support as of this release, but had previously supported
> aarch64 with other kernels and the NT kernel with other
> architectures. If Guix had added that system before Racket's Chez
> did, 'nix-system->chez-machine'  would have known how to write it as
> a Chez machine type, but nonetheless it wouldn't have had a native
> code backend.
That's irrelevant and not the purpose for having a conversion function.

> We explicitly list the systems for which Racket's Chez has a native
> code backend in '%chez-features-table',
Do we really?

> I think we should just use it, rather than try to be clever with
> 'nix-system->chez-machine'.
Well, that depends on what you're trying to use it for.  Determining
features?  Sure.  Determining system support?  Okay.  But that doesn't
mean there's no valid use for nix-machine->chez-system – in particular
I think you over-eagerly removed a valid one earlier.

Cheers