|
Name |
|
Date |
Size |
#Lines |
LOC |
| .. | | 03-May-2022 | - |
| LICENSES/ | H | 03-May-2022 | - | | |
| admin/ | H | 27-Jan-2020 | - | 560 | 464 |
| crosscompile-windows/ | H | 03-May-2022 | - | 903 | 708 |
| demo/ | H | 27-Jan-2020 | - | 2,878 | 2,254 |
| desktopintegration/ | H | 03-May-2022 | - | 963 | 865 |
| doc/ | H | 27-Jan-2020 | - | 746,110 | 617,655 |
| interfaces/ | H | 03-May-2022 | - | 61,481 | 50,470 |
| lisp-utils/ | H | 27-Jan-2020 | - | 5,785 | 3,196 |
| locale/ | H | 03-May-2022 | - | 9,692 | 7,635 |
| macosx/ | H | 03-May-2022 | - | 232 | 169 |
| plotting/ | H | 27-Jan-2020 | - | 766 | 639 |
| share/ | H | 03-May-2022 | - | 477,109 | 405,807 |
| snap/ | H | 27-Jan-2020 | - | 66 | 61 |
| src/ | H | 03-May-2022 | - | 184,493 | 131,075 |
| tests/ | H | 27-Jan-2020 | - | 62,573 | 49,067 |
| AUTHORS | H A D | 21-Oct-2019 | 2.6 KiB | 98 | 84 |
| COPYING | H A D | 21-Oct-2019 | 18.7 KiB | 359 | 297 |
| ChangeLog | H A D | 21-Oct-2019 | 294.1 KiB | 9,266 | 6,282 |
| ChangeLog-5.10.0 | H A D | 07-Jan-2016 | 4.7 KiB | 173 | 94 |
| ChangeLog-5.11.0 | H A D | 07-Jan-2016 | 2.9 KiB | 116 | 57 |
| ChangeLog-5.12.0 | H A D | 13-Jul-2016 | 4.4 KiB | 197 | 96 |
| ChangeLog-5.13.0 | H A D | 13-Jul-2016 | 2.4 KiB | 102 | 50 |
| ChangeLog-5.14.0 | H A D | 13-Jul-2016 | 2.7 KiB | 120 | 58 |
| ChangeLog-5.15.0 | H A D | 12-Aug-2017 | 2.3 KiB | 100 | 48 |
| ChangeLog-5.16 | H A D | 12-Aug-2017 | 2.3 KiB | 107 | 52 |
| ChangeLog-5.17 | H A D | 12-Aug-2017 | 3 KiB | 99 | 65 |
| ChangeLog-5.17-special-functions | H A D | 12-Aug-2017 | 6.9 KiB | 188 | 148 |
| ChangeLog-5.18 | H A D | 12-Aug-2017 | 4.4 KiB | 158 | 106 |
| ChangeLog-5.19 | H A D | 22-Jan-2019 | 4 KiB | 123 | 88 |
| ChangeLog-5.20 | H A D | 21-Oct-2019 | 4.4 KiB | 128 | 98 |
| ChangeLog-5.21 | H A D | 22-Jan-2019 | 4.2 KiB | 112 | 97 |
| ChangeLog-5.22 | H A D | 22-Jan-2019 | 3.4 KiB | 88 | 75 |
| ChangeLog-5.23 | H A D | 22-Jan-2019 | 3.4 KiB | 98 | 74 |
| ChangeLog-5.24 | H A D | 22-Jan-2019 | 1.9 KiB | 71 | 45 |
| ChangeLog-5.25 | H A D | 22-Jan-2019 | 2.2 KiB | 74 | 48 |
| ChangeLog-5.26 | H A D | 22-Jan-2019 | 1.5 KiB | 52 | 36 |
| ChangeLog-5.27 | H A D | 22-Jan-2019 | 1.8 KiB | 57 | 34 |
| ChangeLog-5.28 | H A D | 22-Jan-2019 | 1.6 KiB | 59 | 38 |
| ChangeLog-5.29 | H A D | 22-Jan-2019 | 2.1 KiB | 58 | 44 |
| ChangeLog-5.30 | H A D | 22-Jan-2019 | 1.7 KiB | 57 | 45 |
| ChangeLog-5.31 | H A D | 21-Oct-2019 | 1.8 KiB | 55 | 40 |
| ChangeLog-5.32 | H A D | 22-Jan-2019 | 2.5 KiB | 72 | 50 |
| ChangeLog-5.33 | H A D | 22-Jan-2019 | 2.5 KiB | 65 | 49 |
| ChangeLog-5.34 | H A D | 22-Jan-2019 | 2.7 KiB | 70 | 55 |
| ChangeLog-5.35 | H A D | 22-Jan-2019 | 1.2 KiB | 43 | 27 |
| ChangeLog-5.36.md | H A D | 21-Oct-2019 | 3.2 KiB | 81 | 64 |
| ChangeLog-5.37.md | H A D | 21-Oct-2019 | 2.5 KiB | 70 | 53 |
| ChangeLog-5.38.md | H A D | 21-Oct-2019 | 4.5 KiB | 77 | 65 |
| ChangeLog-5.39.md | H A D | 21-Oct-2019 | 4.2 KiB | 99 | 86 |
| ChangeLog-5.40.md | H A D | 21-Oct-2019 | 3.7 KiB | 71 | 64 |
| ChangeLog-5.41.md | H A D | 21-Oct-2019 | 1.6 KiB | 42 | 35 |
| ChangeLog-5.42.md | H A D | 21-Oct-2019 | 9.8 KiB | 220 | 211 |
| ChangeLog-5.9.2 | H A D | 07-Jan-2016 | 3.7 KiB | 138 | 82 |
| ChangeLog-5.9.3 | H A D | 07-Jan-2016 | 6 KiB | 235 | 138 |
| INSTALL | H A D | 21-Oct-2019 | 11.3 KiB | 310 | 228 |
| INSTALL.git | H A D | 21-Oct-2019 | 319 | 9 | 7 |
| INSTALL.lisp | H A D | 21-Oct-2019 | 3.6 KiB | 128 | 79 |
| INSTALL.win32 | H A D | 21-Oct-2019 | 10.7 KiB | 315 | 249 |
| INSTALL.win32nogcl | H A D | 21-Oct-2019 | 5.5 KiB | 164 | 132 |
| Makefile.am | H A D | 03-May-2022 | 6.1 KiB | 178 | 138 |
| Makefile.in | H A D | 27-Jan-2020 | 36.5 KiB | 1,048 | 917 |
| NEWS | H A D | 21-Oct-2019 | 6.1 KiB | 186 | 129 |
| README | H A D | 21-Oct-2019 | 988 | 29 | 21 |
| README.developers-howto | H A D | 27-Jan-2020 | 12.4 KiB | 388 | 258 |
| README.external | H A D | 21-Oct-2019 | 881 | 26 | 17 |
| README.i18n | H A D | 22-Jan-2019 | 907 | 37 | 26 |
| README.lisps | H A D | 21-Oct-2019 | 7 KiB | 190 | 143 |
| README.rpms | H A D | 21-Oct-2019 | 1.3 KiB | 49 | 29 |
| aclocal.m4 | H A D | 27-Jan-2020 | 39 KiB | 1,076 | 971 |
| common-html.mk | H A D | 21-Oct-2019 | 1.5 KiB | 45 | 36 |
| common-info.mk | H A D | 21-Oct-2019 | 1.5 KiB | 44 | 36 |
| common.mk | H A D | 21-Oct-2019 | 1.8 KiB | 50 | 38 |
| config.guess | H A D | 03-Sep-2013 | 43.8 KiB | 1,531 | 1,321 |
| config.sub | H A D | 03-Sep-2013 | 34.6 KiB | 1,774 | 1,631 |
| configure | H A D | 03-May-2022 | 219.9 KiB | 7,476 | 6,208 |
| configure.ac | H A D | 27-Jan-2020 | 45.8 KiB | 1,421 | 1,328 |
| configure.lisp | H A D | 21-Oct-2019 | 5.7 KiB | 176 | 166 |
| install-sh | H A D | 03-Sep-2013 | 13.7 KiB | 528 | 351 |
| maxima-local.in | H A D | 21-Oct-2019 | 1.1 KiB | 36 | 26 |
| maxima.iss.in | H A D | 21-Oct-2019 | 21.6 KiB | 547 | 435 |
| maxima.spec.in | H A D | 27-Jan-2020 | 9.8 KiB | 398 | 347 |
| missing | H A D | 03-Sep-2013 | 10.1 KiB | 332 | 243 |
| test-driver | H A D | 10-Aug-2015 | 4.2 KiB | 140 | 84 |
| xmaxima-local.in | H A D | 21-Oct-2019 | 294 | 12 | 7 |
README
1Maxima is a symbolic computation program. It is full featured,
2doing symbolic manipulation of polynomials, matrices, rational
3functions, integration, Todd-coxeter, graphing, bigfloats. It has a
4symbolic debugger source level debugger for maxima code. Maxima is
5based on the original Macsyma developed at MIT in the 1970's.
6It comes with extensive self tests.
7
8Maxima is distributed under the GNU General Public License, with some
9export restrictions from the U.S. Department of Energy. See the file
10COPYING.
11
12Installation information is available in the file INSTALL. Summary
13information about this release can be found in the file NEWS. Detailed
14change information is available in the ChangeLog.
15
16A simple usage example:
17
18(%i1) pyth:a^2+b^2=c^2;
19(%o1) b^2+a^2=c^2
20
21(%i2) solve(pyth,a);
22(%o2) [a=-sqrt(c^2-b^2),a=sqrt(c^2-b^2)]
23
24(%i3) integrate(x*sin(a*x),x);
25(%o3) (sin(a*x)-a*x*cos(a*x))/a^2
26
27For more information on Maxima, see the Maxima web site,
28<http://maxima.sourceforge.net>.
29
README.developers-howto
1 Maxima project Git / build system HOWTO
2
3
4 1 General
5
6 Makefile.am is the file to modify, NOT Makefile
7 (Makefile is generated automatically from Makefile.am)
8
9 "make install" catches Makefile problems
10 that are not detected by "make" alone
11
12 Adding / removing files often leads to Makefile problems
13
14 To update your repository, execute
15 git pull # assuming origin/master points to the SF Maxima repo
16
17 Workflow with Git:
18 git pull # update your repo
19 git checkout master # work off master
20 git checkout -b scratch-pad # create a working branch
21 <do development, tests, commits, then, once satisfied...>
22 git checkout master # put yourself on master branch
23 git pull # update your repo, again
24 git merge scratch-pad # merge development work into master
25 git push origin master # push to SF Maxima repo
26
27 BE SURE NOT TO PUSH YOUR SCRATCH-PAD!
28
29 2 Renaming something in Git
30
31 -- Create a scratch/development branch as in 1.
32
33 -- git mv X Y
34 This moves X to Y and preserves the history.
35 Like any other change, this needs to be committed
36 as a separate step.
37
38 3 Adding / removing a file in maxima/src
39
40 -- Create a scratch/development branch as in 1.
41
42 -- Add new file X, then execute
43 git add X; git commit -m 'Message' -- X
44
45 -- Remove old file X
46 git rm X
47 Then execute "git commit" as above
48
49 -- Add / remove file name from maxima/src/Makefile.am
50
51 -- Add / remove file name from maxima/src/*-depends.mk
52
53 NOTE: There are several *-depends.mk files. These are
54 theoretically updated automatically but to the best
55 of my knowledge it is necessary to fix them by hand.
56
57 -- Add / remove file name in maxima/src/maxima.system
58
59 -- Verify that
60 "sh bootstrap; ./configure --enable-foolisp; make; make install"
61 and "run_testsuite();" all succeed
62
63 -- If the change affects the plotting routines: Verify that
64 tests/testbench_draw_manual.wxm still holds the right
65 results.
66
67 -- If the change affects drawdf() or plotdf(): Verify that
68 tests/testbench_drawdf_manual.wxm still holds the right
69 results.
70
71 -- Merge your work onto master and push the changes as in 1.
72
73
74 4 Adding / removing a file in maxima/share
75
76 -- Copy new file / remove old file
77 as you did in 3.
78
79 -- Add / remove file name in maxima/share/Makefile.am
80
81 -- Verify that
82 "sh bootstrap; ./configure --enable-foolisp; make; make install"
83 and "run_testsuite();" all succeed
84
85 -- If the change affects the plotting routines: Verify that
86 tests/testbench_draw_manual.wxm still holds the right
87 results.
88
89 -- Merge your work onto master and push the changes as in 1.
90
91
92 5.1 Creating a new share package
93
94 E.g., new package name = my_package
95
96 -- Naming conventions:
97
98 write_long_names_like_this, andNotLikeThisPlease,
99 norlikethiseitherthanks
100
101 spell_out_names, dnt_try_sv_typng_w_abbrvs_tnx
102
103 -- Create a new directory my_package
104
105 -- Put Lisp and/or Maxima files in the directory
106
107 At least one file must be named my_package.lisp or my_package.mac
108 Otherwise load(my_package) fails
109
110 -- Create texinfo documentation file my_package.texi
111 (PLEASE CREATE DOCUMENTATION, THANK YOU)
112
113 my_package.texi goes in maxima/doc/info
114 (same as other texinfo files)
115
116 Use maxima/share/template.texi as a template for my_package.texi
117
118 -- Create test file rtest_my_package.mac
119 (PLEASE CREATE A TEST FILE, THANK YOU)
120
121 Test file contains pairs of expressions:
122 input expression, then expected result
123
124 batch("my_package/rtest_my_package.mac", test);
125 executes the test
126
127
128 5.2 Adding a directory in maxima/share
129
130 -- Create a scratch/development branch as in 1.
131
132 -- Make the new directory and put the new files in it
133
134 -- Add the all the files in your new directory and commit this change:
135 git add .
136 git commit -m 'Message' -a
137
138 -- Put the my_package files on the file list of maxima/share/Makefile.am
139
140 -- Add my_package to SHARE-SUBDIRS-LIST in maxima/src/init-cl.lisp
141
142 -- Move my_package.texi to maxima/doc/info
143
144 Put my_package.texi on the list of files in
145 maxima/doc/info/Makefile.am
146
147 Put my_package on the list of topics in maxima/doc/info/maxima.texi
148 See instructions in comments at top of maxima/share/template.texi
149
150 -- Verify that
151 "sh bootstrap; ./configure --enable-foolisp; make; make install"
152 and "run_testsuite();" all succeed
153
154 -- Commit and push your work as in 1.
155
156
157 6 Adding / removing a file in maxima/tests
158
159 -- Create a scratch/development branch as in 1.
160
161 -- Copy new file / remove old file
162 and execute "git add" / "git rm"
163
164 -- Add / remove file name in maxima/tests/Makefile.am
165
166 -- Add / remove file name in maxima/tests/testsuite.lisp
167
168 -- Verify that
169 "sh bootstrap; ./configure --enable-foolisp; make; make install"
170 and "run_testsuite();" all succeed
171
172 -- Commit and push your work as in 1.
173
174
175 7 Updating the website
176
177 See the Git repository "website", particularly "README.md" there.
178
179
180 8.1 Backups of Git
181
182 All you need is the rsync tool and some disk space.
183
184 Issue the following command:
185
186 rsync -av 'rsync://maxima.git.sourceforge.net/gitroot/maxima/*' .
187
188
189 8.2 Backups of the ML subscribers list
190
191 You need to be a list admin to do that. Other then that you only
192 need a mail client to send mailman commands to
193 maxima-request@math.utexas.edu
194
195 The command to get the subscribers list is "who" followed by the
196 list admin password. Sending an empty mail with "who XXX" in the
197 subject line should be enough.
198
199 I have the following cron.weekly script to do this automatically:
200
201 | #! /bin/sh
202 |
203 | su myuser -c "echo end | mail -s \"who password\" maxima-request@math.utexas.edu"
204
205
206 8.3 Other Backups
207
208 Backups of the following stuff would be nice too:
209
210 - wiki
211
212 - bug database
213
214
215 9 Releases
216
217 9.1 Release policies
218
219 Releases are prepared (nominally) three times a year, on April 1,
220 August 1, and December 1. Releases simply package whatever seems
221 stable at that time.
222
223 It is the responsibility of developers (not the release
224 administrator) to copy bug fixes from the release branch to master
225 or vice versa (it doesn't matter whether bug fixes are introduced
226 on one branch or the other).
227
228 I don't recommend major changes on a release branch, but there is
229 really nothing to stop it. As always I'll appeal to good judgement.
230
231 If I've forgotten some step, please add it to this document.
232
233 9.2 Release numbering
234
235 The first release on the 5.mm release branch is 5.mm.0, the second
236 is 5.mm.1, third 5.mm.2, etc. The highest number on the branch is
237 the "best" or, at least, the most committed-to version. There is no
238 release candidate numbering.
239
240 The version major number has been 5 for many years. If you feel like
241 changing it to, say, 6, well, there's nothing to stop you.
242
243 9.3 Changelog
244
245 The changelog for 5.mm is named ChangeLog-5.mm.md (the suffix .md
246 indicating that it is in so-called "markdown" format). To obtain the
247 raw material for the changelog:
248
249 $ git log branch-5.${mm-1}-base..HEAD
250
251 Use the git-log output as the basis for ChangeLog-5.mm.md. Use your
252 best judgement as to what to include; the git-log output is
253 typically much, much larger than the changelog. Look at previous
254 changelogs to see the markdown format and organization.
255
256 Commit ChangeLog-5.mm.md to master. Don't forget to add it to
257 the top level "Makefile.am" so that it will be included in the
258 release tarball.
259
260 9.4 Verifying the functionality of the maxima tarball
261
262 The autotools offer a few make targets that allow to verify the
263 maxima release:
264
265 $ make pdf
266 isn't done automatically on "make all" so it is good to test if this
267 make target works.
268
269 $ make check
270 runs the standard testsuite, the testsuite for the share packages
271 and the tests for the ask_* functions for all lisps maxima is compiled
272 with and returns an error if any test unexpectedly failed.
273
274 $ make distcheck
275 compiles maxima, builds a release tarball, extracts this tarball,
276 compiles it and runs "make check" on it in order to find out if
277 "make dist" has produced a working tarball no files are missing from.
278
279 $ mkdir build
280 $ ../configure
281 $ make
282 $ make distcleancheck
283 tests if "make disclean" brings maxima back into the original state.
284 this is very handy when building debian packages.
285
286 make installcheck
287 $ tests if "make install" results in a working maxima release.
288
289 Note that with Ubuntu Cosmic/Disco in Jan 2019 still only the first
290 two of these make targets run without errors.
291
292 9.5 Git commands for releases
293
294 Release versions live on a branch named branch-5_mm, and are tagged
295 5.mm.0, 5.mm.1, 5.mm.2, etc. The Git tag must be the same as the
296 version number declared to autoconf.
297
298 $ git checkout master
299 $ git tag -a branch-5_mm-base
300 $ git push --tags origin master
301 $ git checkout -b branch-5_mm
302 $ <edit configure.ac to set version number to 5.mm.0>
303 $ git add configure.ac && git commit
304 $ git tag -a 5.mm.0
305
306 <at this point, verify that you can build packages BEFORE you push>
307
308 $ git push --tags origin branch-5_mm-base
309 $ git checkout master
310 $ <edit configure.ac to set version number to 5.${mm-1}post>
311 $ git add configure.ac && git commit
312 $ git push origin master
313
314 Repeat 5.mm.0 stuff (edit configure.ac and tag) for 5.mm.1, 2, 3, ....
315
316 To copy bug fixes from one branch to another:
317
318 $ git cherry-pick -x <commit hash>
319
320 9.6 Building a release
321
322 $ git checkout branch-5_mm
323 $ sh bootstrap
324 $ ./configure
325 $ make dist-gzip
326
327 At this point you now have maxima-5.mm.nn.tar.gz.
328
329 Binaries for Linux are traditionally created by RPM.
330
331 I'll assume you know how to build stuff with RPM. Copy the tar.gz
332 to <path to rpm build tree>/SOURCES/. Then:
333
334 $ rpmbuild -ba maxima.spec
335
336 Debian packages can be built the following way:
337
338 - Install clisp, sbcl, gcl, ecl and debhelper.
339 - checkout the branch DebianPackaging
340 - Update the changelog contained in its debian directory: From there the
341 e-mail address of the packager and the version number of the Debian
342 package are taken. It also is important that gpg knows the private key
343 for the e-mail address mentioned in the last ChangeLog entry.
344 - copy the debian directory into the directory containing the contents of
345 the release tarball.
346 - cd into this directory and type:
347 $ debuild
348 - debuild will now complain that the source is missing and tell under which
349 names it will accept the tarball. Rename the tarball to this name and start
350 debuild again.
351 - a few minutes later gpg will ask for the key's password in order to sign
352 the newly built packages.
353
354 Unfortunately just using the Debian package included in the autotools won't
355 equip the Maxima package it generates with the metadata that allows to
356 install the wxMaxima package shipped with Debian and Ubuntu.
357
358 9.7 Uploading files
359
360 $ sftp mysfusername,maxima@frs.sourceforge.net
361 > cd /home/frs/project/m/ma/maxima
362 > cd Maxima-Linux
363 > mkdir 5.mm.nn-Linux
364 > cd 5.mm.nn-Linux
365 > lcd /path/to/rpms
366 > put maxima-*5.mm.nn*.rpm
367 > cd ..
368 > mkdir 5.mm.nn-source
369 > cd 5.mm.nn-source
370 > lcd /path/to/tar.gz
371 > put maxima-5.mm.nn.tar.gz
372 > quit
373
374 9.8 Announcements
375
376 Post an announcement about every 5.mm.nn release to the Maxima
377 mailing list. When it seems stable enough (i.e. no immediate plans
378 to create another release) feel free to announce it in other forums,
379 e.g. sage-devel.
380
381 Since wxMaxima does do a simultaneous release with Maxima and
382 windows installers containing wxMaxima and maxima are usually
383 published within hours of the new Maxima release the wxMaxima
384 developers beg to be informed in advance about the planned release
385 date. Filing a ticket at http://wxmaxima-developers.github.com/wxmaxima/
386 or sending the project maintainer an email should be sufficient
387 for this task.
388
README.external
1The following external tools are needed to build and/or use Maxima:
2
31) A supported Lisp implementation. See README.lisps.
4
52) To build Maxima in the standard manner, Bourne shell and make are
6 required. See INSTALL.
7
83) Maxima can also be built using nothing except Lisp. See
9 INSTALL.lisp.
10
114) Plotting uses gnuplot, <http://gnuplot.sourceforge.net>, by
12 default. Plotting can also be done with Maxima's xmaxima
13 application.
14
155) xmaxima requires Tcl/Tk, preferably version 8.5 or later.
16 xmaxima is both one possible interface to Maxima and a plotting
17 program. As a graphical interface it is not required but as a
18 plotting program it is required by some commands (plotdf, ploteq
19 and scene).
20
216) drawdf requires Vtk and its bindings for Tcl/Tk.
22
237) The scene command requires python-vtk
24
258) Building Maxima from GIT additionally requires the GNU autotools.
26
README.i18n
1Maxima 5.9.3 comes with documentation translated
2into Portuguese and Spanish languages.
3
4Configure options (see INSTALL for more details)
5
6 --enable-lang-es
7 --enable-lang-pt
8 --enable-lang-es-utf8
9 --enable-lang-pt-utf8
10
11trigger building of corresponding language
12pack. Each language pack contains documentation
13in info (for Maxima on-line help system) and
14HTML formats.
15
16First two configure options
17
18 --enable-lang-es
19 --enable-lang-pt
20
21build language packs for locales in ISO-8859-1
22(aka Latin1) encoding such as es_XX and pt_XX,
23where XX is any valid country code.
24This language packs work on all Lisp implementations.
25
26Second pair of options
27
28 --enable-lang-es-utf8
29 --enable-lang-pt-utf8
30
31build language pack for Unicode locales
32(es_XX.UTF-8, pt_XX.UTF-8).
33They are compatible only with Unicode-aware
34Lisp implementations such as ccl, clisp, cmucl, ecl,
35and sbcl.
36
37
README.lisps
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
README.rpms
1Installing rpms
2===============
3
4There are three Maxima binary rpms:
5maxima, maxima-exec-cmucl, and maxima-xmaxima.
6
7The maxima and maxima-exec-cmucl rpms must be installed together.
8
9maxima-exec rpms for other Lisp versions can also be installed,
10although you'll probably have to build them yourself.
11
12The maxima-xmaxima rpm is optional. Xmaxima is a Maxima GUI.
13
14
15Building rpms
16=============
17
18You can build rpm files from an unpacked tarball or Git checkout.
19
20(0) Go to the Maxima directory.
21
22 $ cd sandbox/maxima # or whatever is your top-level maxima directory
23
24(1) Set the version number.
25
26 Open ./configure.ac and change the AC_INIT line.
27 (This is the only way I know to change the version number.)
28
29 Optionally -- open ./maxima.spec.in and increment the `Release' number.
30 (This number is appended to the version number.)
31
32(2) Select Lisp version.
33
34 Open ./maxima.spec.in.
35
36 Change all `%define enable_<whatever>' to `0'
37 except for the selected Lisp; make that `1'.
38
39 Change all `%define <whatever>_flags' to `--disable-<whatever>'
40 except for the selected Lisp; make that `--enable-<whatever>'.
41
42(3) Build rpms.
43
44 $ make rpm
45
46 The maxima.spec file that is generated during this process builds
47 four binary rpms:
48 maxima, maxima-emacs, maxima-xmaxima, and maxima-exec-<whatever>.
49