Lisp Implementations of Maxima
Maxima can be compiled with SBCL, Clisp, CCL, GCL, CMUCL, ECL, Scieneer Common Lisp (SCL) and Allegro Common Lisp (ACL).
Ports to other ANSI Common Lisps should be straightforward and are welcome; please post a message on the Maxima mailing list if you are interested in working on a port.
When Maxima is compiled, the Lisp implementation is
selected by giving to the configure script an argument of the form
--enable-foolisp, where "foolisp" is the
name of the Lisp implementation.
shows a list of the Lisp implementations accepted by
configure (among other options). Always specify the
Lisp type; configure tries to autodetect the Lisp type if it is
not specified, but it has been reported that autodetection can
The compiled Maxima image can also be made executable
(embedding an autonomous copy of the Lisp program used), when
Clisp, SBCL or CMUCL are used. To build an executable image, the
-exec should be appended to the option
--enable-foolisp given to the
There are various differences among different Lisp
implementations, regarding speed, memory usage, error handling,
support for foreign functions interface (FFI) and command line
editing. Some implementations use the GNU readline library,
which provides the ability to recall previously used commands
and edit them. For the implementations that do not have that
ability, Maxima includes the
rmaxima front-end which
provides advanced line-editing facilities via rlwrap.
Steel Bank Common Lisp (SBCL), is a fork of CMUCL which differs in some minor details, but most notably, it is simpler to rebuild SBCL than CMUCL. There are SBCL implementations for Linux, several BSD systems, Solaris, Mac OS X and MS Windows.
rmaxima is recommended for use with SBCL.
Clisp includes GNU readline support, so Maxima has advanced command-line editing facilities when built with it.
Clisp is compiled to bytecodes, so Maxima running on Clisp is substantially slower than on Lisps compiled to machine instructions. Clisp computes floating-point operations in software, so floating-point operations in Clisp are much slower than in Lisp implementations that use hardware instructions for floating-point operations. On the other hand, Clisp makes use of the GMP library for arbitrary-precision integer computations.
There are Clisp implementations for many platforms including MS Windows and Unix-like systems.
starting with 2.4.3 can be built with
support, so Maxima has advanced command-line editing facilities
when built with it. GCL produces a fast Maxi exectuable.
Only the ANSI-enabled version of GCL works with Maxima; thus,
when GCL is built, it must be configured with the
--enable-ansi flag, i.e., execute
--enable-ansi in the build directory before executing
make. Whether GCL is ANSI-enabled or not can be
determined by inspecting the banner which is printed when GCL
is executed; if ANSI-enabled, the banner should say ”ANSI”.
Also, the special variable
FEATURES should include
There are GCL implementations for many platforms including MS Windows and Unix-like systems.
Clozure Common Lisp, or CCL for short, was formerly known as OpenMCL. It is available for Linux, MS Windows and Macintosh and Maxima can be compiled with it.
CMUCL is a fast option for Maxima on platforms where it is available. CMUCL versions 18e and 19a are known to work. There are CMUCL implementations only for Unix-like systems (not MS Windows).
rmaxima is recommended for use with CMUCL.
ECL is a small but complete implementation of Common Lisp. The Android port of Maxima is currently built with ECL.
SCL and Allegro CL
Scieneer Common Lisp (SCL) is a fast option for Maxima for a range of Linux and Unix platforms. Allegro Common Lisp is an object-oriented system. The SCL 1.2.8 release and later are supported. SCL offers a lower case, case sensitive, version which avoids the Maxima case inversion issues with symbol names. Maxima can be compiled with these two Lisp implementations, but only limited testing has been since they are commercial non-free software.