Commit [a4a6ac] Maximize Restore History

Implement DEFINE-LOAD-TIME-GLOBAL.

This is the patch proposed on sbcl-devel (ca. November 2013)
with alterations for 2 out of 3 concerns raised by Nikodemus.

Indeed users can not roll their own equivalent of the new macro
using just the new proclamation. It's confusing to expose the
feature, as it would mean introducing another thing like
(DECLAIM (EVENTUALLY-ALWAYS-BOUND X)) ; *HYPOTHETICAL*
and then explaining how compilation "times" a/k/a "situations" are
not quite the same as "now" and "eventually", and why 2N choices
exist for one concept. YAGNI/Occam's Razor come to mind.

Were a user to try something like
(eval-when (:load-toplevel) (proclaim '(always-bound x)))
it can not possibly have any unusual effect due to PROCLAIM being
an ordinary function, whereas eval-when :compile-toplevel of same
certainly means that X is right now always bound.
So only the new macro is documented, not its implementation.

Closes lp#1253688

Douglas Katzman Douglas Katzman 2014-02-03

added tests/defglobal.impure-cload.lisp
changed src/code/late-extensions.lisp
changed src/code/symbol.lisp
changed src/compiler/globaldb.lisp
changed src/compiler/ir1tran.lisp
changed src/compiler/ir2tran.lisp
changed src/compiler/proclaim.lisp
changed NEWS
changed package-data-list.lisp-expr
tests/defglobal.impure-cload.lisp Diff Switch to side-by-side view
Loading...
src/code/late-extensions.lisp Diff Switch to side-by-side view
Loading...
src/code/symbol.lisp Diff Switch to side-by-side view
Loading...
src/compiler/globaldb.lisp Diff Switch to side-by-side view
Loading...
src/compiler/ir1tran.lisp Diff Switch to side-by-side view
Loading...
src/compiler/ir2tran.lisp Diff Switch to side-by-side view
Loading...
src/compiler/proclaim.lisp Diff Switch to side-by-side view
Loading...
NEWS Diff Switch to side-by-side view
Loading...
package-data-list.lisp-expr Diff Switch to side-by-side view
Loading...