sbcl-2.5.2 released
Christophe Rhodes via Sbcl-announce <[email protected]> Fri, 28 Feb 2025 17:44:51 +0000
| Newsgroups | gmane.lisp.steel-bank.announce |
|---|---|
| Message-ID | <[email protected]> |
Dear all,
I've just gone through the release process for SBCL 2.5.2, which should
now be available in version control and on SourceForge. Notable changes
in this release are summarized below; perhaps of particular note is the
tightening of the interpretation of FTYPE declarations with &OPTIONAL
and &KEY -- we no longer implicitly include the default value of the
argument into the type; this might cause type errors where none were
signalled before (for non-conforming code), though it does also allow
tighter type inference.
Enjoy! Best wishes,
Christophe
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.