GCL - GNU Common Lisp

Get Latest Release
Debian package page
Browse CVS
Devel Mailing List



GCL - an implementation of Common Lisp

NEW! (20050810) GCL 2.6.7 is released. The release notes can be found here.

NEW! (20050427) Patch added to the errata page to reenable support for si::run-process on linux.

NEW! (20050402) Support for new texinfo format and precompiled regexp searching posted to errata page.

NEW! (20050330) ERRATA page for 2.6.6 updated. Control-D on a fresh line was not exiting GCL when readline was on. Also, libreadline5-dev support in debian/control.

NEW! (20050225) ERRATA page for 2.6.6 started here.. So far just one entry, supplying a patch to enable (listen) to work when readline is enabled. One can also workaround the bug with (si::readline-off).

NEW! (20050119) GCL 2.6.6 is released. The release notes can be found here.

NEW! (20041124) Newer binutils don't define _raw_size in their section structure. A patch is included on the errata page fixing this. The patch works with the older versions too.

NEW! (20050113) Patches added to the errata page allowing compile-file to process pathnames with whitespace on Windows, and explicitly ensuring brk added pages are executable on all x86 Linux, the latter in response to the policy change regarding same in Fedora Core 3.

NEW! (20041029) Additions to the 2.6.5 errata page: fixes for older gcc processing gmp_wrappers.h; fix for (+ most-negative-fixnum -1) on 64bit machines.

NEW! (20040823) An errata page to 2.6.5 on Sun Solaris has been added here . This fixes a problem which may arise in the loader with certain gcc/ld combinations when C optimization is in force.

NEW! (20040817) Version 2.6.5 is released. Please read the release notes together with some new timing results here .

GCL is the official Common Lisp for the GNU project. Its design makes use of the system's C compiler to compile to native object code, providing for both good performance and facile portability. GCL currently compiles itself and the primary free software Lisp applications, Maxima , ACL2 and Axiom, on eleven GNU/Linux architectures (x86 powerpc s390 sparc arm alpha ia64 hppa m68k mips mipsel), Windows, Sparc Solaris, and FreeBSD. On most platforms, GCL can load native object code modules directly into its lisp core, where they are preserved in any custom lisp images produced via the save-system call.

GCL has been packaged for the Debian GNU/Linux operating system.

While GCL was originally designed to meet the CLtL1 standard, recent development has brought GCL much of the way toward its current goal -- full ANSI compliance. An ANSI regression test suite is being developed as part of this effort. As of the time of this writing, the new ANSI behavior is enabled optionally at compile time with the configure switch --enable-ansi.

Several GCL extensions exist, and are in various stages of incorporation. xgcl, providing a Lisp interface to the X Windows system, is included in the main source tree. pargcl, an MPI extension enabling lisp programs to run in parallel across computing clusters, will be incorporated soon. These efforts are good examples of GCL's foreign function interface, which is rather flexible due to its close relationship with C.

Other Features:

  • Very efficient. A function call is basically the same speed as a C function call, in fact identical to a C function call via a pointer.
  • A source level Lisp debugger (dbl) for interpreted code, letting you step a line at a time, while displaying the your position in an Emacs window. This is invaluable when trying to understand large systems.
  • Pioneered conservative Garbage Collection schemes.
  • Has a garbage collection scheme, for only recent allocations, based on native page fault handling. This is the stratified garbage collection (SGC).
  • Very reliable.
  • Built in interface to Tk widget system. Allows a mixture of tcl and common lisp to be used in a user interface--your choice which you use.


GCL is the product of many hands over many years. The original effort was known as the Kyoto Common Lisp system, written by Taiichi Yuasa and Masami Hagiya in 1984. In 1987 new work was begun by William Schelter, and that version of the system was called AKCL (Austin Kyoto Common Lisp). In 1994 AKCL was released as GCL (GNU Common Lisp) under the GNU public library license. The primary purpose of GCL during that phase of it's existence was to support the Maxima computer algebra system, also maintained by Dr. Schelter. It existed largely as a subproject of Maxima.

After the passing of Dr. Schelter in 2001, it was decided that GCL should be actively maintained and improved. GCL is currently maintained by a team of 12 developers across the world coordinated via the gcl-devel mailing list.