Larceny is a simple and efficient implementation of the Scheme programming language. Created originally as a test vehicle for research on garbage collection and compiler optimizations, Larceny has grown into a major multiplatform system. Larceny now supports the four most important standards for Scheme (IEEE/ANSI, R5RS, R6RS, and R7RS) together with many of the Scheme Requests for Implementation (SRFIs).

Major goals of Larceny are:

  • Small and reasonably portable: The libraries are written almost entirely in Scheme, and machine-specific parts of the run-time are mostly isolated to a few modules written in C or assembly language.
  • Good overall performance: Roughly comparable to Chez Scheme, SML of New Jersey, and commercial Common Lisp systems.
  • Implements all four de facto standards for Scheme: IEEE/ANSI, R5RS, R6RS, and R7RS.
  • Built around an optimizing Scheme compiler: Twobit.
  • Supports pluggable garbage collectors. The following garbage collectors have been supported at one time or another:
    • a traditional stop-and-copy collector
    • a traditional copying younger-first generational collector
    • a copying hybrid renewal-older-first generational collector
    • a copying hybrid deferred-older-first generational collector
    • a regional collector
    • the Boehm-Demers-Weiser conservative collector
    The current version of Larceny offers a choice between the stop-and-copy collector, the traditional younger-first generational collector, and the new regional collector. Younger-first generational collection is the current default. The hybrid deferred-older-first and conservative collectors are no longer supported, as they seldom performed as well as the younger-first or hybrid renewal-older-first collectors. The hybrid renewal-older-first collector seldom performs as well as the newer regional collector, which also has better worst-case performance.

Development of Larceny has been supported by NSF, Sun Microsystems, and Microsoft.