MIT/GNU Scheme

[Image: Lambda shield]

MIT/GNU Scheme is an implementation of the Scheme programming language, providing an interpreter, compiler, source-code debugger, integrated Emacs-like editor, and a large runtime library. MIT/GNU Scheme is best suited to programming large applications with a rapid development cycle.

Release status and future plans

Current releases
Stable Testing
12.1 ----

The releases provide binaries that run on x86-64 and aarch64 machines running unix systems. They have been tested on GNU/Linux, NetBSD, and macos systems. We no longer support OS/2, DOS, or Windows, though it's possible that this software could be used on Windows Subsystem for Linux (we haven't tried).

No native-code support for Apple silicon: At this time, we are unable to support native-code compilation on new macs using Apple's silicon (the M* chips). Although we support the ARM architecture it's based on, Apple's design uses W^X restrictions that conflict with the way that MIT/GNU Scheme manages memory. Our native-code implementation requires both write and execute permissions on memory, and fixing that is a significant redesign that's unlikely to happen in the near future. Instead use the SVM1 binaries, which should work properly, if slowly, on that architecture.

We also no longer distribute macos applications, as there were versioning issues with those that we did distribute. It is easy to generate a macos application from our normal distribution: after running make, run make macosx-app. Instead of running make install, just move mit-scheme.app to /Applications/ (or wherever you want).

Recent release notes are here.

Other potential projects can be found on the tasks page.

Download

MIT/GNU Scheme is available in binary form for a variety of systems.

Please check the downloaded file for a correct MD5 checksum before submitting a bug report. Each distribution below has its own list of MD5 checksums.

Documentation for MIT/GNU Scheme is available online, as is documentation for most GNU software. The MIT/GNU Scheme documentation is available in HTML and PDF formats on this page, and in other formats as downloads.

Stable release 12.1
File Arch Instructions Notes
Unix binary x86-64 unix installation
Unix binary aarch64le unix installation
Portable SVM (any) unix installation For use on any 64-bit unix system (including Apple silicon).
Source (.tar.gz) For unix systems; uses linefeeds as line delimiters.
Change log
MD5 checksums
Documentation:
HTML (one page) HTML (multi-page) PDF MIT/GNU Scheme User's Manual
HTML (one page) HTML (multi-page) PDF MIT/GNU Scheme Reference
HTML (one page) HTML (multi-page) PDF The FFI Reference Manual
HTML (one page) HTML (multi-page) PDF The SOS Reference Manual
HTML (one page) PDF IMAIL User's Manual
HTML (one page) PDF MIT/GNU Scheme Blowfish Plugin Manual
HTML (one page) PDF MIT/GNU Scheme GDBM Plugin Manual

Older versions can be downloaded here.

Note that you cannot build a working system from the source unless you have a working MIT/GNU Scheme compiler to do the compilation. (This doesn't apply to the portable C source, which requires only a C compiler.) This means that if the above binaries don't work on your system, it is pointless to try building a custom set of binaries from the source code.

Additional documentation

MIT/GNU Scheme mostly conforms to the R7RS (small) standard. It also fully supports these SRFIs:

Supported SRFIs:
HTML 0: cond-expand
HTML 1: List library
HTML 2: and-let*
HTML 6: Basic string ports
HTML 8: receive
HTML 9: Defining record types
HTML 14: Character-set Library
HTML 23: Error reporting mechanism
HTML 27: Sources of random bits
HTML 30: Nested multi-line comments
HTML 39: Parameter objects
HTML 62: S-expression comments
HTML 69: Basic hash tables
HTML 112: Environment Inquiry
HTML 115: Scheme Regular Expressions
HTML 124: Ephemerons
HTML 125: Intermediate hash tables
HTML 128: Comparators (reduced)
HTML 129: Titlecase procedures
HTML 131: ERR5RS Record Syntax (reduced)
HTML 133: Vector Library (R7RS-compatible)
HTML 143: Fixnums
HTML 158: Generators and Accumulators
HTML 162: Comparators sublibrary
HTML 219: Define higher-order lambda

Contact us

Please report bugs using the bug-tracking system.
We can be contacted on the mit-scheme-devel mailing list.
New releases of MIT/GNU Scheme are announced on the mit-scheme-announce mailing list.

Getting involved

Development of MIT/GNU Scheme, and GNU in general, is a volunteer effort, and you can contribute. For information, please read How to help GNU. If you'd like to get involved, it's a good idea to join the discussion mailing list (see above).

Development
For development sources, bug and patch trackers, and other information, please see the project page at Savannah.
Maintainer
MIT/GNU Scheme is currently being maintained by Chris Hanson. Please use the mailing lists for contact.

Licensing

MIT/GNU Scheme is free software; you can redistribute it and/or modify it under the terms of the GPL as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.