0.9.11.31: misc win32 improvements
* Check for correct "expand" in canonicalize-whitespace, and skip
canonicalization if it doesn't seem right. (Windows "expand" is
something quite different.)
* RUN-PROGRAM now always returns a process structure, which reports
the exit-code of the process when :WAIT was true. :WAIT nil
process-structures still keep their :RUNNING status indefinitely
on Windows, though.
* FIND-EXECUTABLE-IN-SEARCH-PATH actually searches the path, and adds
"exe" as :TYPE if :TYPE is missing on Windows.
* ASDF:RUN-SHELL-COMMAND searches for Bourne-shell on Windows, as there
is no default location.
* SB-GROVEL directly runs gcc and the groveler instead of indirecting
via shell, and the groveler directly writes to the lisp-file instead
of via stdout and shell redirection.
* Hack SB-POSIX till it builds and passes all applicable tests on Windows.
Mostly this involved plenty of #-win32, but a few tests needed to
be adjusted for the delication Microsoft constitution.
* Implement COPY-STREAM in ASDF-INSTALL so that it doesn't have to
depend on SB-EXECUTABLE.
* Take the .exe suffix into account when installing over an old SBCL
on MSYS.
* Adjust UNPARSE-NATIVE-WIN32-NAMESTRING slightly: Windows OS functions
like stat don't like to have directory names ending with a slash.

This is good enough to run unpatched Slime with *COMMUNICATION-STYLE*
NIL, and build & pass tests with all contribs except SB-SIMPLE-STREAMS.

0.8.5.26:
Record filesystem information during the build in debug information
relative to SYS, not to /home/kevin/sbcl or equivalent.
... change to core code: tiny if ugly;
... change to warm load: only to refer to files as lpns rather
than physical namestrings;
... change to vanilla-modules: tiny;
... change to asdf modules: well, erm, less tiny. I'm not pleased
by the need to duplicate similar logic in every .asd, but
I think it's a similar symptom to the duplication of the
TEST-OP logic in many of them: the coupling between asdf
and the rest of the system is slightly wrong.

(At startup, SYS by default has translations that refer back to
the build-time values; distributors may wish to alter this for
their binaries, for instance by setting translations to
distribution-known values when dumping any final image)

0.8.2.33
Implement INTERRUPT-THREAD, which forces another thread to
execute a function supplied by the caller.

In the process, design a mostly entirely new scheme for
calling Lisp code as a result of a handled signal: instead of
calling into Lisp directly, frob the signal context and the
stack to arrange that the Lisp is called after the signal
handler itself has returned. This is expected to be
applicable to signal handlers generally (and will have portability
benefits), but needs them to be changed around to call it.
Presently it's used only for interrupt-thread (SIGRTMIN)
and control stack exhaustion (one branch of SIGSEGV)

In principle, all you need do to use this in other places is
call return_to_lisp_function in the signal handler, with the
context and the function object that you wish to be called.
For the x86 you also need to make sure the signal is being
handled on the alternate signal stack, otherwise you'll
overwrite your own stack frame.

0.8.2.23
A full and final answer[*] to all the people who keep asking
for slightly tangential software to be added to contrib: to
wit, a contrib module to automate the downloading and
installing of packages that are _not_ part of contrib.

* (require 'asdf-install)
* (asdf-install:install 'xlunit)

or
$ sbcl-asdf-install xlunit

See contrib/asdf-install/README for more details and scary
security-related muttering.

Also added a :INITIAL-FUNCTION to SB-EXECUTABLE:MAKE-EXECUTABLE
so that files don't have to be written such that the
application starts as soon as they're loaded