changes in sbcl-1.5.9 relative to sbcl-1.5.8:
* platform support:
** a message intended to be more helpful will be displayed for an mmap
failure on OpenBSD.
** the soft-float ABI on ARM32 is better supported, in particular in
returning double floats from calls into C.
* optimizations:
** CASE and ECASE with symbols as keys may be optimized into a vector
lookup if all result forms are quoted or self-evaluating objects.
** CASE and ECASE can be optimized into a jump table on the x86[-64]
backends with arbitrary result forms provided that the clause keys
are either all fixnums, all characters, or all symbols.
** a number of forms are converted to use CASE in circumstances where that
makes sense, including calls to POSITION, MEMQ and MEMBER, and TYPECASE
where the types are MEMBER/EQL types.
** POSITION of a variable symbol in a constant sequence of symbols is
converted to CASE and thence to a jump table.
** TYPECASE of a variable where the clauses are member types is converted
to CASE and thence to a jump table.
** a number of slow instructions are no longer used on x86 and x86-64
machines. (Thanks to Fanael Linithien)
** the compiler is better at tracking the implications of branches after
EQ and EQL tests.
** parsing &KEY lists is slightly less register-intensive.
** a pattern-based peephole optimizer pass has been added, running some
simple transformations on the x86-64 backend.
* enhancements: more thorough compile-time type checking of various
initforms (defclass, &key, defstruct).
* bug fix: unions of complicated CONS types are less likely to cause an
infinite loop. (lp#1799719)
* bug fix: DESCRIBE on functions not named by extended function designators
no longer signals a type error. (lp#1850531, reported by Michal Herda)