axiom-developer
[Top][All Lists]
Advanced

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

Re: [Axiom-developer] Build machinery -- support for out of source build


From: Bill Page
Subject: Re: [Axiom-developer] Build machinery -- support for out of source build
Date: Mon, 2 Jul 2007 01:09:58 -0400

On 7/1/07, Gabriel Dos Reis wrote:
...
In build-improvements, the dependency is slightly more complicated
because I have added a full bootstrap in three stages:
   (1) build from cached Lisp translation -- boot0
   (2) use boot0 to build from Boot source code -- boot1
   (3) use boot1 to build from Boot source code -- boot2

There should be a bootstrap compare between stages 1 and 2 -- not done
at the moment in build-improvements.  To the dependencies take into
account that staged build.  In case, an unnecessary rebuild is done.


I think this "bootstrap compare" step is very important and should be
added to build-improvements. Previous tests done with the Axiom Gold
sources showed that the "stage 1" (which is the only stage implemented
in Gold) is *not* sufficient to ensure that the generated Lisp is
identical to that generated by a stage 2 build. In particular stage 1
is missing some Lisp code optimizations that are apparently possible
when all of the Axiom library types are known and propagated to
dependent modules.

We had a lot of discussion about this on this email list a few years
ago when it seemed to me most related to the solution of mutual
dependencies across several Axiom source modules. In principle
solution of these mutual dependencies might require a large number of
iterations in order to read a fixed point. But in the case of Gold,
stage 3 always generated identical code as stage 2.

But this view pre-dates the more recent work done by Waldek in
wh-sandbox on the new bootstrap procedure. As I understand it, this
new procedure makes use of a flag built-in to the SPAD compiler but
not previously used (and apparently no where adequately documented),
which allows the complete and consistent type system of the Axiom
library to be compiled directly from the SPAD sources (not using any
bootstrap lisp code), in a single initial pass. After this is done
there are no longer any dependencies between the library modules and
they may be compiled in any convenient order so a subsequent pass
generates the Lisp code and compiles it to object code. I think the
intention here of the original Axiom developers was to solve the
cross-module mutual dependency problems that I referred to above - but
that is really only a guess.

Waldek has included some initial documentation of this new bootstrap
process in the pamphlet files of wh-sandbox and on this list. But I
think more work might be needed to re-assure ourselves that this new
process does indeed solve the problem.

You are certainly right that these changes drastically alter the
nature of the dependencies among the modules in the Axiom algebra
library.

Regards,
Bill Page.




reply via email to

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