Currently (and probably for many years past) the Scheme track supports both Chez Scheme and Guile Scheme, two not-quite-compatible versions of the language.
This complicates the tooling, and makes it (a lot) harder to respond to bug reports.
We are now thinking about simplifying the track, to support only one version: probably Chez. Does anyone strongly disagree with this?
Chez is fully open-source, but with heavyweight corporate backing,
$ scheme
Chez Scheme Version 9.5.8
Copyright 1984-2022 Cisco Systems, Inc.
>
We believe, though without details, that Cisco use it commercially in their networking systems, and have a strong incentive to maintain support.
Guile is a perfectly fine implementation, but we are not currently aware of any advantages it offers over Chez.
Yeah, running the tests with 2 different implementations is really overkill.
I might say something like: “Scheme has lots of implementations, you are free to pick your own. But your solutions will be tested with BrandX scheme.” Scheme seems like a language that newbies won’t be jumping into, so giving the flexibility (and the risks) feels OK to me. Common Lisp is similar in that there’s no one suggested implementation.
Scheme isn’t so much a language as a specification that has been regularly updated by its community since the 1970s. These numbered updates are called RnRS because they’re revisions to the original Scheme specs that get ratified by a committee of academics.
In the mid-2000s, R6RS was a polarizing update that split the Scheme user base going forward. R7RS was a later attempt to pull back, but at the end of the day, modern Scheme implementations chose one or the other. Chez is closely linked with R6RS which it supports natively as well as the earlier R5RS, but it doesn’t support R7RS natively. On the other hand, Guile supports R5RS, R6RS, and R7RS natively so I think that covers our bases on the last couple of decades of Scheme development.
One slight complication: I just discovered that the Acronym exercise is Guile-only, and this may also apply to some future exercises we add.
Guile has a built-in regex module, loaded with (use-modules (ice-9 regex)). Chez can add external regex packages, but they are not part of the standard installation.
Regex’s are not central to learning Scheme, but they are quite popular in the Exercism world.
I’m inclined to go with what’s easiest for maintainers. Guile supporting R7 and R6 is a huge positive in my book.
The 8th track uses a closed-source implementation and it’s is an ongoing headache. I understand Chez is open-source, but just that it’s owned by a private company is not a big plus for me. Scheme is GNU’s scripting language, so Guile is bound to be well-supported.
As far as I know, Guile doesn’t run natively on Windows, you need to run it on a Linux emulation layer like WSL, Cygwin, or MSYS2. Chez will run on anything.
True, but the track tooling is already not very Windows-friendly. Testing locally is a 2017 design, uses a Makefile, and needs the *nix build tools. Probably possible in Windows (I haven’t tried), but my guess is it’s easier to use WSL.
I did several side-by-side comparisons earlier today and found that Guile produces much noisier output than Chez: lots of verbose compiler stuff to distract the students. I haven’t yet found a way to turn this off.
We’ll keep the make chez option for local testing (very easy to do), but students need to be warned that the Exercism test runner will use Guile on Linux. Any incompatibilities at the margin are for the student to deal with, if they prefer using Chez locally.