Tim Bradshaw <tfb+google@tfeb.org> wrote:
+---------------
| John Thingstad wrote:
| > A much bigger problem is that you need to construct
| > the entire datastrucure each and every time. Nothing is
| > remembered between runs.
|
| Yes, I think this must be an issue for C/C++ systems. Every
| compilation unit requires the compiler to start from a completely blank
| slate and reconstruct (by header files etc) everything on which that
| unit may depend. I think some C/C++ environments attempt to deal with
| this though.
+---------------
(*sigh*) Yet another lesson from the 70's forgotten...
This also used to be a problem with TOPS-10 Monitor builds.
The TOPS-10 Monitor was written in MACRO-10 assembler, in
many small sources files each with *dozens* of includes of
header files. A build of just the kernel could take *hours*!
Then at some point [with the 5-Series Monitors? 1972?] they
fixed MACRO-10 to save parsed headers in memory [on the '10
you could issue multiple compilation commands to one invocation
of a compiler or assembler], then soon after added saved-on-disk
"compiled" forms of the headers. That brought the kernel build
down to just a couple of *minutes*, and a full system build
down from days to hours.
Of course, right about the same time C was re-inventing the
"start from scratch every time" model... and never got past it. :-(
-Rob
-----
Rob Warnock <rpw3@rpw3.org>
627 26th Avenue <URL:http://rpw3.org/>
San Mateo, CA 94403 (650)572-2607