Fix C warnings on 32-bit Darwin build
[sbcl.git] / doc / internals / build.texinfo
blobdd3c67540ee1957f88f28f289390f4cbd436990b
1 @node Build
2 @comment  node-name,  next,  previous,  up
3 @chapter Build
5 @menu
6 * Cold init::
7 @end menu
9 @node Cold init
10 @comment  node-name,  next,  previous,  up
11 @section Cold init
13 At the start of cold init, the only thing the system can do is call
14 functions, because @code{COLD-FSET} has arranged for that (and nothing
15 else) to happen.
17 The tricky bit of cold init is getting the system to the point that it
18 can run top level forms. To do that, we need to set up basic
19 structures like the things you look symbols up in the structures which
20 make the type system work.
22 So cold-init is the real bootstrap moment. Genesis dumps
23 symbol<->package relationships but not the packages themselves, for
24 instance. So we need to be able to make packages to fixup the system,
25 but to do that we need to be able to make hash-tables, and to do that
26 we need @code{RANDOM} to work, so we need to initialize the
27 random-state and so on.
29 We could do much of this at genesis time, but it would just end up
30 being fragile in a different way (needing to know about memory layouts
31 of non-fundamental objects like packages, etc).