Another implementation of Scheme
SXM (a.k.a. CXEMA) is a portable implementation of
the Scheme Programming language.
It conforms to IEEE/ANSI
standard of Scheme and supports all features of the R5RS Report on Scheme.
In addition, SXM supports numerous features of Chez
Scheme v6.0 and SRFIs 0, 6, 8,
9, 11, and 16. SXM is derived from David Michael Betz's XScheme.
Due to the loss of compatibility with the original (object system has been dropped) and
significant amount of modifications and additions (SXM is 4 times bigger), I decided to
treat it as a separate project with its own name.
It still carries a lot of design decisions from the original though:
- runtime system is written in portable C
- minimal dependency on OS-specific features
- no S-exp interpreter; Scheme code is compiled to byte code and then executed via
bytecode VM
- mark-sweep garbage collector
- simplified numerical tower (fixnums/flonums only)
- heap image save/restore
During its 11-year-long history as a hobby project, SXM acquired a lot of new features:
- optimizing bytecode compiler written in Scheme and C ("Frobit")
- support for multiple global environments ("locales")
- extra data types (boxes, hash tables, weak pairs)
- full support for IEEE/ANSI and R5RS specifications, including hygienic
macros, multiple return values,
dynamic-wind , and eval .
- optional Unicode support based on ANSI C's wide char library
- convenient mechanism to extend the basic set of Scheme procedures written in C
- flexible mechanism for adding new kinds of ports
- almost complete set of Chez Scheme features, including syntax-case
macro system (CS v5.9f), reader extensions, parameters, interactive facilities,
records, structures, engines, and pretty-printing.
- extensive library of string functions
- exceptions (based on ideas from '98 Baltimore Workshop)
- support for several SRFIs (0, 6, 8,
9, 11, and 16).
This is the second public release of SXM. The main new feature in SXM 1.1 is support
for Chez Scheme's and SRFI 9 records. Bug reports, comments, and suggestions can be sent
to the author at esl@acm.org. |