
more cmucl & sbcl questions
Quote:
> I guess what I am confused about is the "bootstrapping" part. I've never
> built anything that required "bootstrapping", or if I did, I didn't know it
> explicitly.
> From what I gather, bootstrapping, in this case, means that a lisp system is
> needed to build certain parts of the SBCL/CMUCL lisp system, though the
> basic parts are buildable / compilable in the normal fashion. Is this
> correct?
No -- you're confusing two issues here.
One is that both SBCL and CMUCL are written in Common Lisp[*]. So,
just as you need a C compiler to build your "traditional"
applications, so you need a Lisp compiler to build CMUCL or SBCL.
The second comes from the fact that Lisp is a language in which the
act of compilation and/or loading changes the state of the
compiler.
A difference (probably the main one) between SBCL and CMUCL is the
method whereby the two systems attempt to deal with this. CMUCL's
build procedure depends on knowledge of CMUCL's own internals;
therefore, CMUCL can only be built with CMUCL itself; moreover, since
the internals can change, it can only be trivially built with a CMUCL
that is not very different from the one you're trying to build;
otherwise, you need to load "bootstrap files" at various points in the
build to change the internals in the course of the compilation.
SBCL, on the other hand, has a build procedure that doesn't depend on
knowledge of its internals; therefore, any sufficiently unbuggy Lisp
compiler can be used to build SBCL, just as any sufficiently unbuggy C
compiler can be used to build applications written in C.
Christophe
[*] Well, mostly
--
Jesus College, Cambridge, CB5 8BL +44 1223 510 299
http://www-jcsu.jesus.cam.ac.uk/~csr21/ (defun pling-dollar
(str schar arg) (first (last +))) (make-dispatch-macro-character #\! t)
(set-dispatch-macro-character #\! #\$ #'pling-dollar)