[Top][All Lists]

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

[Axiom-developer] Layers

From: root
Subject: [Axiom-developer] Layers
Date: Wed, 27 Nov 2002 21:09:06 -0500

Yes, in the current state of the CVS the end result of the build
process is to create bootsys.

Axiom is built from layers, more for historical reasons than by

Layer 0 is common lisp. Certain extensions are used and these
exist in libspad.a so each common lisp needs to be extended 
with these extras. 

Thus building layer 0 consists of 
 (1) building noweb so we can parse pamphlet files
 (2) building libspad.a
 (3) building common lisp, resulting in obj/linux/bin/lisp
Layer 1 is bootsys. Axiom is partially written in common lisp and
partially written in a syntactic-sugar language called boot. The
boot translator reads boot files and generates common lisp. 
(Actually, MacLisp + Lisp/370 + Lisp/VM + common lisp but lets
not go there). 

The boot translator (in src/boot) is written in boot and thus needs
a boot translator to generate a boot translator. For this purpose
we "cache" the generated lisp code from the previous system and
use it to generate a new copy of the translator. Modifications to
the boot translator are not for the weak of heart.

The src/boot build uses obj/linux/bin/lisp to compile the cached
lisp code. This code is then loaded into a clean copy of lisp
and saved as obj/linux/bin/bootsys.

Layer 2 is depsys. The rest of the system depends on dozens of
macros and functions (maclisp-in-common-lisp, etc). Depsys is
a "compile environment" for all other system files. 

The goal of layer 2 is to generate obj/linux/bin/depsys.

Layer 3 is interpsys. Interpsys is the Axiom interpreter which
is the code layer you talk to at the Axiom command-line prompt.
Interpsys contains hundreds of files and many layers of functionality.

The goal of layer 3 is to generate mnt/linux/bin/interpsys.

Layer 4 is the compiler layer. Parts of this layer have been split out
of the distribution and is now run as a separate project and website.
There are 2 compilers, the "spad" compiler and the "aldor"
compiler. They have a compatible syntax (within the constraints of
their design goals as the spad compiler assumes the interpreter but
the aldor compiler cannot). Either compiler can be used. We use both.
The aldor compiler is available at The spad compiler
is built in to the interpsys layer.

Layer 5 is the compiled algebra code. The algebra code goes thru
its own dance in order to build up the type towers. The result of
this process is a directory of library code and a couple of 
daase ("database", shortened because I did a port to DOS once,
a long time ago) files which contain information needed to look
things up.

Layer 6 is the "utilities", like the graphics and hypertex front
end code. 

Layer 7 is the sman facility that runs the whole show.

Eight layers in all, assuming you don't want to argue about what
is and is not a layer. I'm working on layer 2 as we speak.


reply via email to

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