changes in sbcl-2.5.2 relative to sbcl-2.5.1:
* minor incompatible change: in some instances when the compiler cannot
prove that a NIL-valued branch is unreachable, where NIL is not compatible
with the expected type, a type warning will no longer be issued.
* minor incompatible change: the compiler will more strictly treat type
declarations for &OPTIONAL and &KEY arguments in FTYPE declarations, no
longer effectively adding an implicit (OR ... <default>) type when the
function itself has a default value not matching the declared type for
that argument.
* enhancement: type errors in structure constructors are now restartable,
with a USE-VALUE restart provided.
* enhancement: CHECK-TYPE warns about type conflicts at compile-time.
* enhancement: FTYPE declarations for functions which set their parameters
are checked.
* enhancement: new print control variable SB-EXT:*PRINT-CIRCLE-NOT-SHARED*,
when used in conjunction with *PRINT-CIRCLE*, prints #1# only for
circularities and not simple sharing.
* platform support
** on Windows, make sure to commit memory after zeroing during
save-lisp-and-die. (lp#2097197, reported by _3b)
** on Linux, add the TCP_USER_TIMEOUT constant to SB-BSD-SOCKETS. (thanks
to Mihai Bazon)
** on *BSD, make TCP_KEEPCNT, TCP_KEEPIDLE and TCP_KEEPINTVL available
where the OS supports it.
** on x86-64, optimize BOUNDP for known-global symbols.
** on x86-64, optimize KEYWORDP for some arguments.
** on arm64, don't trigger an assertion when using FMOV on complex
single-float registers.
** on arm64, improve type checking for (AND SYMBOL (NOT NULL)).
* bug fix: using structure read macros with shared structure markers no
longer signals type errors when the shared structure is in a slot with a
type. (lp#308936)
* bug fix: non-conforming user macros which modify their source no longer
trigger internal errors. (lp#1371719, reported by _3b)
* bug fix: the combination of CONSTANTLY and DYNAMIC-EXTENT declarations no
longer causes an internal compiler error. (lp#2059950, reported by
bohonghuang)
* bug fix: treat inlined functions analogously to constants in the compiler.
(lp#2095560, reported by Vasiliy Postnicov)
* bug fix: FTYPE declarations for &optional and &key arguments do not
include default values when checking types.
* bug fix: Storing coverage data no longer leads to miscompilations allowing
reachability of unreachable code. (lp#2092451, reported by mrkissinger)
* optimization: elide bounds-checking for multidimensional arrays with known
dimensions. (reported by aeth)
* optimization: alien callbacks are generally less heavyweight.
* optimization: REMOVE shares the tail of the input list when there's
nothing to remove.