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