How to classify Scheme implementations on Scheme.org Lassi Kortela 14 Feb 2021 07:52 UTC
Sorry about the delay in replying. Scheme.org is intended to reflect the collective will of the Scheme community (to the extent that such a will exists). Since schemers disagree on so many things, we probably have to err on the side of having less strict criteria to avoid stalemates and low engagement over the long term. Scheme implementation conformance is one recurring point of disagreement. As you point out, there are almost no strictly conforming implementations of any language, and most useful Scheme implementations have gaps in conformance (including Gambit). However, I agree that more conformant or otherwise more fully featured implementations should be displayed more prominently. It's an open question how to best do this. I suggest that we invent a set of objective criteria. I wish the community would get together to define those criteria, but I've mentioned the topic several times over the years and so far there has been little enthusiasm. Perhaps schemers wish to avoid upsetting implementers. Nevertheless, it seems clear that we have to invent the criteria at some point to settle questions like the one in this thread on neutral grounds. I already promised Jakub earlier that a lips.scheme.org is fine to have, and in general, I believe it's better to err on the side of having more projects on Scheme.org than less. However, Gambit has been one of the most advanced Scheme implementations for 30 years, and Marc should also have reassurance that Gambit is featured more prominently than new implementations that just got started. For defining the criteria, we could start with conformance, or start with how many features an implementation has. Empirically, there would seem to be a fairly natural split between implementations that have a native-code compiler (or compile via C to native code), and implementations that don't. Since writing a native-code compiler is a big and advanced project, and takes a long time, those implementations tend to be more full-featured in other ways too. So listing the native-code implementations and interpreter-only implementations in separate groups (e.g. on the Scheme.org front page) would go a long way. If we use conformance as the criterion, Chibi-Scheme makes for a good conversation starter. It's possibly the most conformant R7RS Scheme there is, but has a simple bytecode interpreter which is not particularly fast even for an interpreter. It has many tools (including FFI) and libraries, but is missing a debugger. So Chibi would be classified as very conformant, but not necessarily full-featured. Thoughts?