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.