1Notes on Lisp implementations for Maxima:
2
3Clisp, CMUCL, Scieneer Common Lisp (SCL), GCL (ANSI-enabled only),
4ECL, ABCL and SBCL can compile and execute Maxima.
5Allegro Common Lisp and OpenMCL might also work, but have not
6been fully tested.
7
8Ports to other ANSI Common Lisps should be straightforward
9and are welcome; please post a message on the Maxima mailing list
10if you are interested in working on a port.
11
12When Maxima is recompiled, the Lisp implementation is selected by
13an argument of the form `--enable-foolisp' for the configure script.
14`./configure --help' shows a list of the Lisp types recognized by
15configure (among other options). It is possible to specify several
16Lisp type(s) you want maxima to be built with at the same time.
17configure tries to autodetect the Lisp type if it is not specified,
18but it has been reported that autodetection can fail.
19
20--------------------------------------------------------------------
21Comparison of execution times (in seconds) for the run_testsuite()
22function for Maxima 5.36.0 as reported on the Maxima mailing list:
23
2464 Bit (Gentoo Linux):
25
26gcl-2.6.12    152
27sbcl-1.2.10   155
28ccl-1.10      313
29ecl-15.3.7    559
30clisp-2.49   1060
31
3232 Bit (Gentoo Linux)
33sbcl-1.2.10  170
34gcl-2.6.12   177
35cmucl-20e    253
36ccl-1.10     293
37ecl-15.3.7   556
38clisp-2.49   844
39
40
41--------------------------------------------------------------------
42Clisp <http://clisp.org>
43
44	Clisp can be built with readline support, so Maxima has
45advanced command-line editing facilities when built with it.
46
47Clisp is compiled to bytecodes, so Maxima running on Clisp is
48substantially slower than on Lisps compiled to machine instructions.
49On the other hand, Clisp contains code from CLN <http://www.ginac.de/CLN/>,
50a library for efficient computations with all kinds of numbers in
51arbitrary precision. Another advantage of clisp is that byte code
52resulting in compiling a program on one computer might work on a
53computer running a different Clisp version. Also Clisp uses an
54extremely efficient memory handling which means it might not run
55out of memory where ECL, SBCL and GCL do.
56
57CLISP version 2.49 has a bug that causes it to output garbled data
58if the front-end is fast enough to acknowledge a data packet while
59the next data packet is still being prepared.
60
61There are Clisp implementations for many platforms including
62MS Windows and Unix-like systems.
63
64Maxima compiled with a typical linux install of clisp 2.49.92
65typically depends on the following libraries:
66
67 * libc
68 * libffcall
69 * libreadline
70 * libsigsegv
71 * libtinfo
72 * libunistring
73
74--------------------------------------------------------------------
75CMUCL <http://www.cons.org/cmucl/>
76
77	CMUCL is a fast option for Maxima on platforms where it is
78available. The rmaxima front-end provides advanced line-editing
79facilities for Maxima when compiled with CMUCL. rlwrap is available
80from <https://github.com/hanslub42/rlwrap> .
81
82CMUCL versions: 18e and 19a and later are known to work.
83
84There are CMUCL implementations only for Unix-like systems
85(not MS Windows).
86
87--------------------------------------------------------------------
88Scieneer Common Lisp (SCL) <http://www.scieneer.com/scl/>
89
90	Scieneer Common Lisp (SCL) is a fast option for Maxima for a
91range of Linux and Unix platforms.  The SCL 1.2.8 release and later
92are supported.  SCL offers a lower case, case sensitive, version which
93avoids the Maxima case inversion issues with symbol names.  Tested
94front end options are: maxima emacs mode available in the
95interfaces/emacs/ directory, the emacs imaxima mode available from
96https://sites.google.com/site/imaximaimath/, and TeXmacs available from
97http://www.texmacs.org/
98
99--------------------------------------------------------------------
100GCL <http://savannah.gnu.org/projects/gcl/>
101
102	GCL versions starting with 2.4.3 can be built with readline
103support, so Maxima has advanced command-line editing facilities
104when built with it. GCL produces a fast Maxima exectuable that
105profit from GCL's fast bignum algorithms.
106
107Only the ANSI-enabled version of GCL works with Maxima, i.e.,
108when GCL is built, it must be configured with the --enable-ansi flag,
109i.e., execute ``./configure --enable-ansi'' in the build directory
110before executing make.
111
112Whether GCL is ANSI-enabled or not can be determined by
113inspecting the banner which is printed when GCL is executed;
114if ANSI-enabled, the banner should say "ANSI".
115Also, the special variable *FEATURES* should include the keyword :ANSI-CL.
116
117There are GCL implementations for many platforms
118including MS Windows and Unix-like systems.
119
120Maxima compiled using a typical linux install using gcl 2.6.12
121typically depends on:
122
123 * libc
124 * libgmp
125 * libreadline
126 * libx11
127 * gcc
128
129--------------------------------------------------------------------
130SBCL <http://www.sbcl.org>
131
132	SBCL is a fork of CMUCL which differs in some minor details,
133but most notably, it is simpler to rebuild SBCL than CMUCL.
134For many tasks a maxima compiled with SBCL is considerably faster than
135GCL. For other tasks GCL is faster than SBCL.
136
137As sbcl doesn't use readline it is recommended to use rmaxima for using
138a command-line maxima with SBCL. For common details of SBCL and CMUCL
139See CMUCL above.
140
141Maxima compiled using a typical linux install using sbcl 1.4.10
142typically depends on:
143
144 * libc
145 * zlib
146
147--------------------------------------------------------------------
148Allegro Common Lisp <http://franz.com/products/allegro-common-lisp/>
149
150	Maxima should work with Allegro Common Lisp, but
151only limited testing has been done with these Lisp
152implementations. User feedback would be welcome.
153
154--------------------------------------------------------------------
155CCL <http://ccl.clozure.com/>
156
157	CCL, formerly known as OpenMCL, is known to work with maxima on
158all platforms where ccl runs including Linux, Mac OSX, and Windows.
159There are appear to be some bugs in the 32-bit version of ccl,  but
160the 64-bit version passes all tests.
161
162--------------------------------------------------------------------
163ECL <https://common-lisp.net/project/ecl/>
164
165	ECL is known to work with maxima and passes the testsuite.  ECL
166runs on many platforms and OSes and is the lisp compiler used for
167maxima on android. It is faster than CLISP, but seems to tend more
168towards fragmenting the available memory. ECL tends to be slower
169than GCL or SBCL but faster than CLISP.
170
171ECL must be configured to use the C compiler, building Maxima with the
172ECL bytecode compiler is (currently) not possible.  So do *not* use the
173option "--with-cmp=no" when building ECL.
174
175Maxima compiled using a typical linux install using ecl 16.1.2
176typically only depends on:
177
178 * libc
179
180--------------------------------------------------------------------
181Armed Bear Common Lisp (ABCL) <https://common-lisp.net/project/armedbear/>
182
183ABCL's main feature is that is tightly integrated into java.
184That also means that it is an interpreter running in a virtual machine
185which makes it even slower than clisp. Also java doesn't automatically
186convert tail-recursive function calls to loops which means that in a
187few functions might run out of stack space faster than other lisps.
188
189
190