1 Notes on Lisp implementations for Maxima:
3 Clisp, CMUCL, Scieneer Common Lisp (SCL), GCL (ANSI-enabled only),
4 ECL, ABCL and SBCL can compile and execute Maxima.
5 Allegro Common Lisp and OpenMCL might also work, but have not
8 Ports to other ANSI Common Lisps should be straightforward
9 and are welcome; please post a message on the Maxima mailing list
10 if you are interested in working on a port.
12 When Maxima is recompiled, the Lisp implementation is selected by
13 an argument of the form `--enable-foolisp' for the configure script.
14 `./configure --help' shows a list of the Lisp types recognized by
15 configure (among other options). Always specify the Lisp type(s)
16 you want maxima to be built with:
17 configure tries to autodetect the Lisp type if it is not specified,
18 but it has been reported that autodetection can fail.
20 --------------------------------------------------------------------
21 Comparison of execution times (in seconds) for the run_testsuite()
22 function for Maxima 5.36.0 as reported on the Maxima mailing list:
24 64 Bit (Gentoo Linux):
41 --------------------------------------------------------------------
42 Clisp <http://clisp.org>
44 Clisp can be built with readline support, so Maxima has
45 advanced command-line editing facilities when built with it.
47 Clisp is compiled to bytecodes, so Maxima running on Clisp is
48 substantially slower than on Lisps compiled to machine instructions.
49 On the other hand, Clisp contains code from CLN <http://www.ginac.de/CLN/>,
50 a library for efficient computations with all kinds of numbers in
51 arbitrary precision. Another advantage of clisp is that byte code
52 resulting in compiling a program on one computer might work on a
53 computer running a different Clisp version. Also Clisp uses an
54 extremely efficient memory handling which means it might not run
55 out of memory where ECL, SBCL and GCL do.
57 There are Clisp implementations for many platforms including
58 MS Windows and Unix-like systems.
60 --------------------------------------------------------------------
61 CMUCL <http://www.cons.org/cmucl/>
63 CMUCL is a fast option for Maxima on platforms where it is
64 available. The rmaxima front-end provides advanced line-editing
65 facilities for Maxima when compiled with CMUCL. rlwrap is available
66 from <https://github.com/hanslub42/rlwrap> .
68 CMUCL versions: 18e and 19a and later are known to work.
70 There are CMUCL implementations only for Unix-like systems
73 --------------------------------------------------------------------
74 Scieneer Common Lisp (SCL) <http://www.scieneer.com/scl/>
76 Scieneer Common Lisp (SCL) is a fast option for Maxima for a
77 range of Linux and Unix platforms. The SCL 1.2.8 release and later
78 are supported. SCL offers a lower case, case sensitive, version which
79 avoids the Maxima case inversion issues with symbol names. Tested
80 front end options are: maxima emacs mode available in the
81 interfaces/emacs/ directory, the emacs imaxima mode available from
82 https://sites.google.com/site/imaximaimath/, and TeXmacs available from
83 http://www.texmacs.org/
85 --------------------------------------------------------------------
86 GCL <http://savannah.gnu.org/projects/gcl/>
88 GCL versions starting with 2.4.3 can be built with readline
89 support, so Maxima has advanced command-line editing facilities
90 when built with it. GCL produces a fast Maxima exectuable that
91 profit from GCL's fast bignum algorithms.
93 Only the ANSI-enabled version of GCL works with Maxima, i.e.,
94 when GCL is built, it must be configured with the --enable-ansi flag,
95 i.e., execute ``./configure --enable-ansi'' in the build directory
96 before executing make.
98 Whether GCL is ANSI-enabled or not can be determined by
99 inspecting the banner which is printed when GCL is executed;
100 if ANSI-enabled, the banner should say "ANSI".
101 Also, the special variable *FEATURES* should include the keyword :ANSI-CL.
103 There are GCL implementations for many platforms
104 including MS Windows and Unix-like systems.
106 --------------------------------------------------------------------
107 SBCL <http://www.sbcl.org>
109 SBCL is a fork of CMUCL which differs in some minor details,
110 but most notably, it is simpler to rebuild SBCL than CMUCL.
111 For many tasks a maxima compiled with SBCL is considerably faster than
112 GCL. For other tasks GCL is faster than SBCL.
114 rmaxima is recommended for use with SBCL. See CMUCL above.
116 --------------------------------------------------------------------
117 Allegro Common Lisp <http://franz.com/products/allegro-common-lisp/>
119 Maxima should work with Allegro Common Lisp, but
120 only limited testing has been done with these Lisp
121 implementations. User feedback would be welcome.
123 --------------------------------------------------------------------
124 CCL <http://ccl.clozure.com/>
126 CCL, formerly known as OpenMCL, is known to work with maxima on
127 all platforms where ccl runs including Linux, Mac OSX, and Windows.
128 There are appear to be some bugs in the 32-bit version of ccl, but
129 the 64-bit version passes all tests.
131 --------------------------------------------------------------------
132 ECL <https://common-lisp.net/project/ecl/>
134 ECL is known to work with maxima and passes the testsuite. ECL
135 runs on many platforms and OSes and is the lisp compiler used for
136 maxima on android. It is faster than CLISP, but seems to tend more
137 towards fragmenting the available memory. ECL tends to be slower
138 than GCL or SBCL but faster than CLISP.
140 ECL must be configured to use the C compiler, building Maxima with the
141 ECL bytecode compiler is (currently) not possible. So do *not* use the
142 option "--with-cmp=no" when building ECL.
144 --------------------------------------------------------------------
145 Armed Bear Common Lisp (ABCL) <https://common-lisp.net/project/armedbear/>
147 ABCL's main feature is that is tightly integrated into java.
148 That also means that it is an interpreter running in a virtual machine
149 which makes it even slower than clisp. Also java doesn't automatically
150 convert tail-recursive function calls to loops which means that in a
151 few functions might run out of stack space faster than other lisps.