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, and is currently the only implementation that supports all four de facto standards for Scheme: IEEE/ANSI, R5RS, ERR5RS, and the R6RS.

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, ERR5RS, and the R6RS.
  • Built around an optimizing Scheme compiler: Twobit.
  • Supports pluggable garbage collectors. At one time there were five:
    • 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
    • the Boehm-Demers-Weiser conservative collector
    The current version of Larceny offers a choice between the first three garbage collectors listed above. 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.

    A radical new garbage collector is under development.

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