[Top][All Lists]

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

Re: [Axiom-developer] Axiom Code Graphs

From: daly
Subject: Re: [Axiom-developer] Axiom Code Graphs
Date: Mon, 05 Dec 2011 02:37:36 -0500

On Mon, 2011-12-05 at 17:19 +1100, Minh Nguyen wrote:
> Hi Tim,
> On Mon, Dec 5, 2011 at 11:42 AM, daly <address@hidden> wrote:
> <SNIP>
> > Let me know if you have any questions.
> Thank you for your detailed explanation.  Let me explain what I want
> to do with the Axiom source code.  As part of my research project, I
> want to collect datasets on a variety of domains such as social
> interactions and technology.  For each domain, collect time stamped
> datasets on it.  In the case of the Axiom project, this means
> downloading all stable source releases of Axiom up to and including
> the latest stable release.  For each release, get a list of all
> functions, classes, methods, etc. and work out which one calls which.
> The general idea is to construct a (di)graph representation of such
> data in a source release.  I'm working on developing a mathematical
> model to explain how such interactions among units within a domain
> (e.g. functions, classes, methods in Axiom) change over time.  As you
> can guess, my stumbling block is how to extract a list of all
> functions, classes, methods, etc. from each Axiom source release and
> work out which one invokes which.  I hope you would help me by
> shedding some light on how to parse the Axiom source code in order to
> obtain the interaction (di)graphs I described above.

The Axiom source code is quite stable. In general we have been
rewriting the system into pure common lisp. This does not involve
changes to the function names or calling sequences. Code is 
migrating from individual files into literate books so many of
the files in src/interp have been removed.

Axiom is released every 2 months. The source code for the last
few releases is at

If you do
    git clone git://
you will get every change made to Axiom for the last 4 or 5
years. You can use git to see every change. I should warn you
that, on average, we have committed a new change every day.

There are 5 classes of changes. First, there is a rewrite of code
from the Boot language to common lisp. This does not change the
function. Boot is just a syntactic sugar that translates to lisp.

Second, code that is not used has been removed. For instance,
the code to support Aldor is gone.

Third, code that implements MacLisp and LispVM idioms is being
rewritten into straight common lisp.

Fourth, there have been file renames for 2 reasons. The whole
system was changed so every filename is only lower case. The
whole src/interp directory of files was renamed when support
for Boot was removed.

Fifth, new code has been added. There is new code for:
algebra, such as support for special functions,
HTML, such as Volume 11, which is the Axiom HTML browser,
numerics, such as Volume 10.5,
MathML, such as Arthur's extensions,
OpenMath, including the semantic CDs.

If you just want the names of functions or variables in any
release you can start Axiom and type:
 )lisp (do-all-symbols (x) 
        (format t "~s:~s~%" (symbol-package x) (symbol-name x)))
all on one line. This will list all of the function and
variable names. You can collect these lists and find what
changes from one version to the next.


reply via email to

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