Wrap everything with an abort restart which will quit and stop make.sh
from proceeding.
Also remove --disable-debugger from the default sbcl options for
better debugging.
* Over time, the process for producing an SBCL build for another
target architecture or OS has become more difficult and less
documented.
* Move all make.sh argument processing to make-config.sh.
* Have make-config.sh produce a file, output/build-config,
containing shell commands to set up important build parameters
such as where to find GNUMAKE, what SBCL_XC_HOST is, and so on.
* Source output/build-config in most of the make*.sh scripts.
* The practical upshot of all this is that a cross-compile
build is now a matter of alternating between target and host,
calling make-config.sh, make-host-1.sh, make-target-1.sh,
make-host-2.sh, make-target-2.sh, and following up with a
make-target-contrib.sh on the target, and you wind up with a
usable product. And, as make-config.sh does all of the arg
parsing, you can pass --xc-host= or --dynamic-space-size= or
whatever and it all works out.
Beginnings of a Win32 merge.
... rearrange the build scripts to use input from files rather
than <<HERE documents.
... (no other changes; just working to get the meaty changes
isolated from the fluff)
* bug fix: no more highly sporadic "couldn't check whether ~S is
readable" when reading a stream and an interrupt hits in the middle
of a select system call
* added with-restarted-syscall macro
* added abcl support to build scripts
More build fixes
... for our non-8859-1 friends, explicitly request the C locale
while building.
... running the tests (and indeed starting up the new sbcl)
in unknown locales will fail instantly, but that's probably
less annoying than having the build fail at cold-init time.
... probably stdin/out/err should fall back to ascii external format
if all else fails
Fix fixnum / sb!xc:fixnum xc bug (as in discussion with Bruno Haible
sbcl-devel 2005-03/2005-04)
... don't use the CL:FIXNUM type in immediate-constant-sc;
... write and use a test in before-xc.
Fix BUG #308
... use ucd.dat to generate a database for characters with information
about graphicness, caseness and the like;
... use the database in the ANSI character operators;
... (frob the compiler transforms to work with latin-1 characters)
This patch was brought to you by character_branch
CLISP build megapatch
... mostly putting #-SB-XC in front of :COMPILE-TOPLEVEL,
because clisp gives a full warning for function and
macro redefinition;
... workaround clisp's buggy pretty printer by not exercising it
as much: use (INHIBIT-WARNINGS 3);
... explicit :INITIAL-ELEMENT 0 when we're using 0 to mean
"uninitialized" in MAKE-ARRAY;
... SPECIAL-OPERATOR-P isn't a good test on the host for what
can become a target macro;
... slightly more portable floating point logic:
Explicitly set *READ-DEFAULT-FLOAT-FORMAT* so that we
don't create host LONG-FLOATs by accident;
LOAD-TIME-VALUE magic for negative floating point zeros;
Minor associated text file frobbage
... braindump some unrelated TODO items
Obligatory runtime code improvement
... fix one warning in gencgc.h
Committed patch for gencgc refactoring based on work done
on threads branch.
... to make header file management a lot simpler, and allow
the use of interesting typedefs in genesis :C-TYPE slot
options, we split runtime.h into lots of smaller files that
can be (semi-)independently included.
... all GC and GCish functions now have the same interface,
so no need for (eq *internal-gc* #'collect-garbage) test in
SUB-GC
... current_region_end_addr and current_region_free_pointer
go away, eliminating potential for weird bugs when they're
not synchronized properly. Yay OAOO
... disabled (actually, removed) inline allocation, as it
depended on old current_region_* (see above) and appears
to make not a lot of actual difference to run times anyway
pseudo-atomic support is now always compiled in. I can see
no good reason for not having it
... much code in alloc() collapsed. Also alloc() no longer
attempts to drop its PA and do a collection in the middle of
allocation - instead it uses the existing maybe_gc flag to
indicate that collection should happen when the allocation is
done. Possibly this has bad effects when trying to allocate
an object bigger than available dynamic space, but that would
fit if a GC were done first. Given the (complete lack of)
error handling for out-of-memory conditions in this and all
previous SBCL versions, it would be a foolish programmer who
was depending on this anyway, though.
Test that the cross-compiler knows about constants on startup
... or at least at the end of being built
SunOS versions less than 5.8 now fully supported (thanks to Eric
Marsden for diagnosis and testing)
don't need to load src/cold/shared.lisp twice in make-host-1.sh
corrected the sense of #!-SB-INTERPRETER case of
INTERNAL-APPLY-LOOP hack in debug-int.lisp
made grovel-headers.c run automatically as part of the build
process (so that the automatically-generated file
output/stuff-groveled-from-headers.lisp replaced the
old symlink src/code/target-os-types.lisp)
redid grovel_headers.c DEFCONSTANT macro as function
removed 'ln -sf $sbcl_arch-linux-types.lisp' stuff (from
src/runtime/make-config.sh??)
redid the definition of a stem in stems-and-flags.lisp,
as a relative path from SBCL base directory instead
of from the src/ subdirectory, so that it can now
refer to "output/stuff-groveled-from-headers.lisp
converted SIMPLE-/COMPLEX- -INTERSECTION to -INTERSECTION2
reviewed old SIMPLE-/COMPLEX- -INTERSECTION methods to make
them OK in the new world
made TYPE-INTERSECTION2 and TYPE-APPROX-INTERSECTION2 for
some things which used to call TYPE-INTERSECTION
made new with-&REST-list TYPE-INTERSECTION to replace
MAKE-INTERSECTION-TYPE-OR-SOMETHING
HIERARCHICAL-INTERSECTION is more descriptive than
VANILLA-INTERSECTION.
deleted unused SIMPLIFY2 stuff
deleted unused TYPE-INTERSECT and VALUES-TYPE-ALLOWP
Pure BOOLEAN TYPE-ENUMERABLE is too much trouble; relax to
generalized boolean instead.
tweaked DEFUN-CACHED so that it will work early in cold init
(if some clueless bozo happens to mess up types so
badly that it gets called early in cold init:-)
Now the AND type translator can just use TYPE-INTERSECTION.
added *SOFT-HEAP-LIMIT*
removed some unused symbols in SB!UNIX
tweaked /SHOW0 to automatically stringify and concatenate its
arguments, to abbreviate an idiom that I use a lot
wrote /HEXSTR0 to abbreviate another idiom
defined /PRIMITIVE-PRINT to abbreviate another idiom
DO-LOAD-TIME-CODE-FIXUP and DO-LOAD-TIME-VALUE-FIXUP are
only needed at cold init.
added tests/type.after-xc.lisp and tests/type.before-xc.lisp
upgraded SB-XC:TYPEP to handle (TYPEP #(1 2 3) 'VECTOR) etc.
Intersection with *EMPTY-TYPE* and *UNIVERSAL-TYPE* should
behave (and be commutative).
Guard against some type method operations on *. (easier than
worrying about them, or trying to make them right..)
moved STYLE-WARN and friends to SB-INT to eliminate thought
about whether they're visible e.g. in ir1tran.lisp
tripped over bug 84
made SB!C-CALL use SB!INT and SB!EXT so I can use /SHOW0 et al.
DEF-PRIMITIVE-TYPE stuff can become !DEF-PRIMITIVE-TYPE.
DEF-BOUNDED-TYPE and DEFINE-FLOAT-FORMAT can become
!DEF-BOUNDED-TYPE and !DEFINE-FLOAT-FORMAT.
moved DEFTYPE FLOAT-FORMAT earlier so that it's visible in
early-type.lisp (for NUMERIC-TYPE FORMAT slot :TYPE)
moved LIST, CONS, and NULL classes earlier in *BUILT-IN-CLASSES*
to try to help with RATIO cold init problem
removed pre-ANSI keyword-only stuff in ARG-INFO-KEYWORD and
in various &KEY-related error messages and symbol names
bug 12 fixed: (SUBTYPEP 'KEYWORD 'SYMBOL)=>T,T
added INTERSECTION-TYPE support to CTYPEP