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.

Source Code Distribution (SXM v1.1)
Changes in v1.1
Man Page
Linux's RPMs: source and x86 binaries
MSI package for Windows Installer (Win2K/XP)
FXM project home page
Chez Scheme home page
Sergei Egorov (esl@acm.org)