On Mon, Nov 08, 2021 at 08:36:08PM -0500, Philip McGrath wrote: > Mostly I wanted to follow up to say that, from my perspective, SML/NJ is a > very noteworthy and influential language implementation. Perhaps the most > familiar example for Guix folks would be that Guile's fibers are based on > Concurrent ML, which is an SML/NJ extension: > https://wingolog.org/archives/2017/06/29/a-new-concurrent-ml
Thanks for sharing your knowledge. I stand corrected! > Personally I've only read ML, not written it, but from a Debian bug I found > through searching online > (<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=220046>), it appears > that there are no known Standard ML implementations that avoid this > bootstrapping problem. SML/NJ, in addition to being one of the most > important implementations in its own right, is apparently capable of > bootstrapping at least one other implementation, MLton. (Unlike some on that > thread, I don't consider the 5x slowdown for the bootstrap build to be > prohibitive: bootstrapping Chez Scheme via Racket has a 10x slowdown.) > > It is very valuable that Guix maintains such high standards for > bootstrapping from source. However, Guix does still contain some compilers > that have bootstrapping limitations. SML/NJ is no worse that Chez Scheme in > this respect, and comparably important. (One difference is that there is a > path to backporting the bootstrap simulation from Racket's fork to the > upstream variant, which would remove the problem---but I don't that wasn't > true when Chez Scheme was first added to Guix.) The status quo is that no > Standard ML language implementation at all seems to be in Guix. I think > including SML/NJ would be better than waiting for someone to write a > hypothetical Standard ML compiler in a host language with a better > bootstrapping story. I see. Maybe it's worth attempting to patch the binary to use /tmp/sh while bootstrapping, in that case. Or maybe there *is* some way to add /bin/sh to the build environment for just this package, without having to make the change for all packages, which would be undesirable.
