Skip to main content

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. ./configure --help 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 fail.

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 suffix -exec should be appended to the option --enable-foolisp given to the configure program.

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

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

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.

GCL

GCL versions starting with 2.4.3 can be built with readline 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 ./configure --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 the keyword :ANSI-CL.

There are GCL implementations for many platforms including MS Windows and Unix-like systems.

CCL

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

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

ECL is a small but complete implementation of Common Lisp. The Android port of Maxima is currently built with ECL.<7p>

Scieneer Common Lisp (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.

Useful Lisp Sites

Common Lisp implementation
Comparison of actively developed Common Lisp implementations.

CLHS
The Common Lisp Hyper Specification.

Common Lisp Tutorials
For those who want to start learning Lisp.

CLiki
User maintained archive of Lisp links and information.