(I wrote my earlier reply before I saw Leo's.)

On 11/8/21 17:23, Leo Famulari wrote:
It will be necessary to fix this issue in the SML/NJ package definition
(I think you've done this in a followup patch)

Is this <https://issues.guix.gnu.org/38606>, or somewhere else?

Guix does not
accept packages that rely on pre-built binaries — everything must be
built from source code. There are some exceptions but I don't think that
SML/NJ will qualify due to its obscurity compared to other language
implementations. If SML/NJ cannot be built without the binary bootfiles,
it probably won't be eligible for inclusion in GNU Guix.

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

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.

-Philip


Reply via email to