1.0.57: will be tagged as "sbcl-1.0.57"
break infinite recursion in GENERATE-SLOTD-TYPECHECK

  Compilation of a typecheck can cause class finalization, which in turn can
  cause calls to GENERATE-SLOTD-TYPECHECK.

  Given the right sort of dependency graph, this can cause a cycle which needs
  to be broken.

  Regression from 1.0.46.11, fixed bug 1001799.
implement ATOMIC-UPDATE

  Nicer than having to write explicit CAS loops.

  Also improve COMPARE-AND-SWAP docstring, and remove the EXPERIMENTAL label
  from it.
COMPILED-PROGRAM-ERROR source form needs *PRINT-ESCAPE*

  PRINC-TO-STRING is not what we want here.
factor debug-name cleaning into a separate function

  We will need it elsewhere too.
lazy *STACK-TOP-HINT*s

  Allow binding it to a symbol, which is resolved when entering the debugger:
  it denotes the name of the first uninteresting frame.

  This simplifies ERROR, CERROR, BREAK, %BREAK, and makes interrupts more
  efficient as we no longer need to find the interrupted frame when entering
  an interupt handler.

  It also makes (handler-bind ((error #'invoke-debugger)) ...) once again gain
  the benefits of the stack top hint, which we lost when we ceased the provide
  the hint around the call to SIGNAL for efficiency reasons. Best of both
  worlds, one hopes.
robustify COUNT-FULL-CALLS in the test suite

 Move it to compiler-test-utils.lisp, while at it.
refactor GET-TOPLEVEL-FORM &co between debugger and disassembler

  * Merge the implementations in debug.lisp and target-disassembler.lisp.

  * Get rid of most of the cacheing.

  * Prefer the DEBUG-SOURCE-FORM if it exists: thanks to *SOURCE-NAMESTRING*
    we can have misleading namestrings for functions generated by calls to
    EVAL during LOAD, etc.
fix source information for functions from EVAL

 * Removed the breathtaking (NAMED-LAMBDA (EVAL (DEFUN FOO)) ...) hack, which
   caused inconsistent source locations, and broke the built-in debugger
   source command for evaluated functions.

   Replace it with *SOURCE-FORM-CONTEXT-ALIST*, which allows the simple
   evaluator to communicate the original context to the compiler without
   messing with the function source.

   This also means we no longer have to wrap named-lambdas and lambdas in
   another lambda, but can instead compile them directly -- which in turn
   allows FUNCTION-LAMBDA-EXPRESSION to work correctly for definitions from
   EVAL and LOAD.

 * Additionally, use a handler to muffle any compiler notes from EVAL instead
   of using a declaration: those can leak to the user via F-L-E.

 * Change ACTUALLY-COMPILE to return a function signaling an error instead of
   returning NIL when compilation fails fatally. Doing this in
   ACTUALLY-COMPILE allows us to rely on COMPILE-IN-LEXENV always returning a
   function, and gives easy access to a better error message.

 * Properly associate COMPILER-ERRORS with their SIGNAL-ERROR restart.

 * Adjust debug.impure.lisp to be less dependent on the details of
   %SIMPLE-EVAL.

 * Test cases. Pay special attention to TEST-DEBUGGER in debug.impure.lisp.

 * New docstring for COMPILE. Added a sneaky teaser about COMPILE being able
   to recompile things, which is new starting to look feasible.
make ENSURE-GENERIC-FUNCTION accept method combination arguments

  Previously we only accepted a list designating the method combination, but
  since MOP also specifies a way to grab the actual method combination, we
  should really accept that as well.

  Fixes bug 936513.
some nincompoop broke the build

  *blush*
implicit generic function warning improvement

 the warning now prints out the package of the symbol that corresponds
 to the newly created generic function.
run-program: Don't decode and re-encode environ.

Leave environ unchanged when no :environment argument is provided.
Closes lp#985904.
run-program: Don't use /tmp unconditionally.

* Use TEMP on win32 and TMPDIR on non-win32.
* Don't delete just opened temporary files on windows, because opened
  files cannot be unlinked on windows.

Fixes lp#968837.
better SIGNAL

  Add *STACK-TOP-HINT*.

  Move out the *BREAK-ON-SIGNALS* stuff to a separate function for
  clarity. Conditionalize the call there, meaning those restarts don't need to
  be allocated unless we actually need them -- making SIGNAL faster and a lot
  less consy. (TYPEP calls still cons, though. Can't have everything...)
gensym: Don't restrict numerical argument to fixnum.

(gensym number) was restricted to fixnums, restrict it to
unsigned-byte, as per the standard.
Use multi-byte NOPs for code alignment on x86-64.

This is intended to speed up execution of such code sequences. It makes
the disassembly output somewhat more readable, too. The multi-byte NOP
instructions are chosen according to the recommendations of both AMD and
Intel. All existing x86-64 processors should support the "0f 1f" opcode
used.

This adds the needed infrastructure to the backend-independent compiler
parts and uses it from x86-64. Backends not using this functionality are
left unchanged.

Extend EMIT-ALIGNMENT to allow to specify multi-byte NOPs to be used
instead of repetitions of the single-byte NOP and change the call in
EMIT-BLOCK-HEADER on x86-64 to trigger this. Extend EMIT-SKIP to call
EMIT-LONG-NOP in this case.

On x86-64, add EMIT-LONG-NOP as the instruction emitter and extend the
disassembler entry for NOP to understand the multi-byte forms, too.

Make EMIT-FILLER decide more carefully whether to join fillers that are
adjacent in the list of segment annotations: Only join them if they are
immediately adjacent in the segment, too. (Otherwise the joined filler
would cover the wrong parts of a shortened alignment sequence.)

In certain circumstances %EMIT-ALIGNMENT splits an alignment into two
parts. This may not be necessary but has not yet been changed, so
sometimes one more long NOP than needed is assembled.
Add a missing launchpad reference to NEWS.
fix MAP-INTO performance

* remove the O(n^2) algorithm for lists

* use (MAP NIL ...) for all sequence types

* avoid unnecessary LENGTH calls

* update fill pointer after mapping succeeds, not before

* add tests for MAP-INTO (there were none!)

* add some WITH-TESTs to tests/map-tests.impure.lisp
automate widetag dispatching

* add DEFINE-ARRAY-DISPATCH

* replace the VECTOR-SUBSEQ* dispatch scaffolding
  with a DEFINE-ARRAY-DISPATCH call