;; Now that we use the compiler for macros, interpreted
;; /SHOW doesn't work until later in init.
#+sb-show (print "/hello, world!")
+ (sb!ext:purify)
;; Until PRINT-OBJECT and other machinery is set up,
;; we want limits on printing to avoid infinite output.
;; GC :FULL T isn't nearly as effective as PURIFY here?
;; (GC :FULL T gets us down to about 38 Mbytes, but PURIFY
;; gets us down to about 19 Mbytes.)
- (let ((*gc-notify-stream* *standard-output*))
- (sb-int:/show "done with warm.lisp, about to GC :FULL T")
- (gc :full t))
+ (sb-int:/show "done with warm.lisp, about to GC :FULL T")
+ (gc :full t)
;; resetting compilation policy to neutral values in
;; preparation for SAVE-LISP-AND-DIE as final SBCL core (not
(space 1)
(speed 1)))
+ ;; Lock internal packages
+ #+sb-package-locks
+ (dolist (p (list-all-packages))
+ (unless (member p (mapcar #'find-package '(:keyword :cl-user)))
+ (lock-package p)))
+
(sb-int:/show "done with warm.lisp, about to SAVE-LISP-AND-DIE")
;; Even if /SHOW output was wanted during build, it's probably
;; not wanted by default after build is complete. (And if it's
;; wanted, it can easily be turned back on.)
#+sb-show (setf sb-int:*/show* nil)
+ ;; The system is complete now, all standard functions are
+ ;; defined.
+ (setq sb-c::*flame-on-necessarily-undefined-function* t)
(sb-ext:save-lisp-and-die "output/sbcl.core" :purify t)
EOF