S9fES is a mature, portable, and comprehensible interpreter for R4RS Scheme. The core interpreter is written in pure ANSI C (C89), so it runs on all platforms offering a C compiler. It can even be compiled natively on Plan 9. On Unix-based systems (or MinGW), it also offers an interface to common Unix system calls and Curses routines.
S9fES Reimagined is a new version of the S9 interpreter in which wide parts of the system have been rewritten. There is a separate page explaining what's new. If you are looking for a legacy version of the S9fES interpreter, check out the attic.
The interpreter is built around the S9core toolkit (download), which contains some basic building blocks for dynamic languages, such as a garbage collected heap, bignum arithmetics, etc. (The toolkit is included in the S9fES tarball).
S9fES has been developed using EDOC, a literate programming tool. The rendered EDOC source code to a previous version is available in print and PDF form. The C and Scheme code stripped from the EDOC files is in the public domain, though, and can be downloaded here (~500KB).
Bakul Shah maintains a downstream repository with extended Plan 9 support, like access to system functions and an FFI. Please send any feedback regarding the Plan 9 extension directly to him.
The original S9fES interpreter (not this version!) is explained in detail in the Scheme 9 Book! The book might eventually get an update, if circumstances permit.
total 1212 -rw-r--r-- 1 nmh nmh 21262 Jun 15 19:10 CATEGORIES.html -rw-r--r-- 1 nmh nmh 10755 Apr 2 2019 HISTORY -rw-r--r-- 1 nmh nmh 1273 Oct 22 2018 LICENSE -rw-r--r-- 1 nmh nmh 8659 Jul 14 2015 MASCOT.png -rw-r--r-- 1 nmh nmh 7706 Jun 15 19:09 Makefile -rw-r--r-- 1 nmh nmh 83103 Oct 24 2018 PREHISTORY -rw-r--r-- 1 nmh nmh 7743 Nov 3 2018 README -rw-r--r-- 1 nmh nmh 1579 Oct 16 2018 README.s9core -rw-r--r-- 1 nmh nmh 135 Nov 8 2018 TODO -rw-r--r-- 1 nmh nmh 17836 Jun 15 19:09 _csums drwxr-xr-x 3 nmh nmh 512 Nov 6 2018 attic -rw-r--r-- 1 nmh nmh 624 Mar 31 2015 config.scm -rwxr-xr-x 1 nmh nmh 497 Oct 22 2018 configure drwxr-xr-x 2 nmh nmh 512 Nov 6 2018 contrib drwxr-xr-x 5 nmh nmh 512 Oct 30 2018 ext drwxr-xr-x 5 nmh nmh 12288 Nov 11 2018 help drwxr-xr-x 2 nmh nmh 4096 Nov 6 2018 lib -rw-r--r-- 1 nmh nmh 1222 Nov 13 2018 mkfile drwxr-xr-x 2 nmh nmh 512 Nov 16 2018 prog -rw-r--r-- 1 nmh nmh 17526 Oct 28 2018 s9.1 -rw-r--r-- 1 nmh nmh 20369 Oct 28 2018 s9.1.txt -rw-r--r-- 1 nmh nmh 119901 Jan 26 10:22 s9.c -rw-r--r-- 1 nmh nmh 43772 Nov 13 2018 s9.scm -rw-r--r-- 1 nmh nmh 48056 Jun 15 19:10 s9core-20181205.tgz -rw-r--r-- 1 nmh nmh 73973 Apr 2 2019 s9core.c -rw-r--r-- 1 nmh nmh 14708 Apr 2 2019 s9core.h -rw-r--r-- 1 nmh nmh 76987 Apr 2 2019 s9core.txt -rw-r--r-- 1 nmh nmh 714 Apr 2 2019 s9ext.h -rw-r--r-- 1 nmh nmh 514533 Jun 15 19:10 s9fes-20181205.tgz -rw-r--r-- 1 nmh nmh 8627 Apr 2 2019 s9import.h drwxr-xr-x 2 nmh nmh 1024 Nov 9 2018 util