Package: racket Version: 8.7+dfsg1-1 Severity: normal Dear Maintainer,
Since at least Racket 8.6, the Racket CS implementation runs even on architectures for which it cannot generate native code. I suggest that the Debian should package Racket CS for all architectures instead of falling back to Racket BC for some, e.g. ppc64el. I don't fully understand the nuances of the bookworm freeze policy. (I'm sorry I didn't report this sooner.) It seems at least plausible that this could be a "small, targeted fix[]", especially from the perspective that it would amount to bringing a few niche architectures to parity with the popular ones, but I could also understand an argument to the contrary. Some background: Racket CS (based on "Chez Scheme") is the current default implementation, having replaced Racket BC ("Before Chez" or "ByteCode") with the release of Racket 8.0. Racket CS, like Chez Scheme, compiles to machine code, whereas Racket BC compiles to platform-independent bytecode. Initially, the recommendation from upstream was to fall back to Racket BC on architectures which Racket CS didn't support: Debian's packaging did so as of 8.0+dfsg1-2 and 8.0+dfsg1-3. However, Racket CS is now able to run even on architectures for which it cannot generate machine code. Initially, support for a "portable bytecode" backend was added to Racket's variant of Chez Scheme to simplify bootstrapping during development. Later, variants specialized to word size and endianness were added (e.g. "tpb64l", suitable for any 64-bit little-endian machine), as was basic support for chunks of this byte code to C (which was useful for Chez "boot files"). These improvements are sometimes referred to as "pbarch" and "pbchunk", respectively. Ultimately, this worked well enough to make Racket CS viable on architectures without native compilation support. Performance is reportedly comparable to Racket BC on those architectures, which never had JIT support on Racket BC. Changing to Racket CS also enables Racket's "futures" and "places" for those architectures. Perhaps the most significant benefit, albeit less concrete, is getting those niche architectures onto the Racket implementation that is actively developed and used. The new support was announced with the Racket 8.5 release, but a few pieces turned out to be missing: there's some discussion at [1]. I maintain the Guix package of Racket, and we enabled Racket CS on all architectures starting with Racket 8.6, in particular in [2] and [3]. (Our patches were complicated by the fact that we expose some of Racket's internals in ways Debian doesn't.) I'd be glad to help with this as I can, with the caveats that I have very little time until next week, don't have any relevant hardware, and have only the tiniest amount of experience with Debian packaging (though I'm a long-time user of Debian and downstreams). Thanks for maintaining Racket in Debian! Philip McGrath [1]: https://racket.discourse.group/t/950/27 [2]: https://git.savannah.gnu.org/cgit/guix.git/commit/?id=a15d72f [3]: https://git.savannah.gnu.org/cgit/guix.git/commit/?id=ed24d6b
signature.asc
Description: This is a digitally signed message part.