[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Axiom-developer] Sources of the port of Axiom to SBCL/CMUCL/Clisp (was:

From: Gregory Vanuxem
Subject: [Axiom-developer] Sources of the port of Axiom to SBCL/CMUCL/Clisp (was: SBCL and compiler speed)
Date: Sat, 24 Feb 2007 15:46:28 +0100

Le vendredi 23 février 2007 à 00:41 +0100, Waldek Hebisch a écrit : 
> > 
> > I you want I can upload what I have done (more precisely what is
> > "distributable"), I planned to upload it Sunday but I'm not against this
> > idea (I'm busy). The bad news is that the interpreter is not
> > pamphletised [1], I do not think that the documentation must be done
> > now, it has to be done when merging and when, I think, we have _fixed_
> > the API (a lot of functions rely on CltL1 (GCL ?) (symbol used to
> > extensively for example)). WHat I'm saying does not prevent to document,
> > "conceptually", some part of the "interpreter" such that the database,
> > the compiler(s) etc...
> > 
> > Greg
> > 
> > [1] The build process is buggy too, somes versions of Make (the one in
> > Cygwin for example) does not accept the algebra Makefile and its
> > inclusions.
> > 
> It would be nice to see your version.  I certainly would like to
> know how you solved some specific problems (non-ANSI type declarations,
> BPINAME function etc).  I would like also to time build process.

Here are the sources:

It is based on the work of Juergen Weiss available here:

(So you can easily diff these to know who did what)

For the question of BPINAME, I have the same problem than you.
When I read your code I was particularly interested in your
implementation of this function. This function is
implemented but further investigations are needed.

For example the 

((and (consp func) (eq (car func) 'lambda)) (second (third func)))

is probably never used. Furthermore in boot code we can see several
reference to compiled-function-p before using BPINAME, compiled-function-p
is really implementation dependant so... I will work on this when time will 

Anyway there are numerous "TODO" in the code, if some of you want to work on
this port feel free to improve it :-) (when there are "QUESTION" in the code
this is because further investigation are needed and eventually I'll have to
ask Juergen Weiss why it's implemented this way). 

To compile it 'cd' to src/boot, edit the Makefile.(sbcl|clisp|cmu) and the
to change the variables defined if necessary (you'll have, for sure, to modify 
Export the AXIOM environment variable so for example with SBCL :

export AXIOM=/usr/local/axiom-cl/mnt/sbcl

and use 'make -f Makdefile.sbcl' to build bootsys with SBCL.

Do the same thing for src/interp and src/algebra.

To use Axiom do not forget to export the environment variable AXIOM
(this is necessary for the moment).

The build process has been done in such a way that you can easily build
Axiom for each CL implementation (and test the three at the same time).

And, a last remark (for fun) 

<Hans Reiser argument>

Original Axiom:
time echo ')r zdsolve' | /usr/local/axiom/mnt/linux/bin/AXIOMsys &>/dev/null

real    1m24.392s
user    1m21.025s
sys     0m1.010s
Axiom on SBCL:
time echo ')r zdsolve' | /usr/local/axiom-cl/mnt/sbcl/bin/interpsys &>/dev/null

real    0m29.127s
user    0m25.860s
sys     0m0.506s

</Hans Reiser argument>

And there are a lot of other types of remark...


PS: If you have fix, amelioration etc... please let me know.

PS2: For the "warriors" who want to use Aldor edit foam_l.lisp since
it's specialised for me (the |SInt| type). A better way is to use an integer
range as type instead of a predefined type such that fixnum. The
other problem is that we don't have the sources so we can not know
what exactly a |Sint| is.)

KNOWN PROBLEMS (not related to Axiom):

If you encounter a "NIL is not of type continuation" with CMUCL try to change
the safety optimise setting, this is apparently a bug in CMUCL.

Some versions of SBCL (mine for example (x86-64)), apparently, loop indefinitely
when computing the gcd with MOST-NEGATIVE-FIXNUM as one of its arguments. 
fix SBCL :-)

(this one is related to the build process of Axiom)
It will be not possible to build the algebra with some version of Make.
This need to be  fixed. The typical error message is something like
"can not load BASTYPE", this type is not available since the corresponding
.spad file is not compiled). On MinGW-MSYS I have to create the included 
with the "standard" version of make and use the "packaged make" to
build the algebra :-(

reply via email to

[Prev in Thread] Current Thread [Next in Thread]