emacs.d/clones/www.sbcl.org/sbcl-internals/Cold-init.html
2023-01-18 20:30:47 +01:00

64 lines
2.4 KiB
HTML

<html lang="en">
<head>
<title>Cold init - SBCL Internals</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="SBCL Internals">
<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Build.html#Build" title="Build">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This manual is part of the SBCL software system. See the `README'
file for more information.
This manual is in the public domain and is provided with
absolutely no warranty. See the `COPYING' and `CREDITS' files for
more information.
-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
</head>
<body>
<div class="node">
<p>
<a name="Cold-init"></a>
Up:&nbsp;<a rel="up" accesskey="u" href="Build.html#Build">Build</a>
<hr>
</div>
<!-- node-name, next, previous, up -->
<h3 class="section">1.1 Cold init</h3>
<p>At the start of cold init, the only thing the system can do is call
functions, because <code>COLD-FSET</code> has arranged for that (and nothing
else) to happen.
<p>The tricky bit of cold init is getting the system to the point that it
can run top level forms. To do that, we need to set up basic
structures like the things you look symbols up in the structures which
make the type system work.
<p>So cold-init is the real bootstrap moment. Genesis dumps
symbol&lt;-&gt;package relationships but not the packages themselves, for
instance. So we need to be able to make packages to fixup the system,
but to do that we need to be able to make hash-tables, and to do that
we need <code>RANDOM</code> to work, so we need to initialize the
random-state and so on.
<p>We could do much of this at genesis time, but it would just end up
being fragile in a different way (needing to know about memory layouts
of non-fundamental objects like packages, etc).
</body></html>