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)