sbcl-1.5.9 released
Christophe Rhodes <[email protected]> Tue, 26 Nov 2019 22:12:10 +0000
| Newsgroups | gmane.lisp.steel-bank.announce |
|---|---|
| Message-ID | <875zj68eyt.fsf@shin> |
Dear all,
I have tagged and uploaded sbcl-1.5.9; it should be available for
checkout or download now. This month's excitement has been the
development of a jump-table based optimization for various cases (pun
totally intended) of CASE, including some that are in disguise. It's
seen some testing, but as ever with new features, some caution may be
warranted. A summary of this and other changes in this release is
appeneded below.
Best wishes,
Christophe
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)