News
New SBCL versions are usually released at the end of each
month: check the Sourceforge File List to see the current version. The new features of the two most recent SBCL releases are listed below.
Please see the complete news page for details on all historical SBCL releases.
New in version 2.5.2, 2025-02-28
Back to top- 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. (#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. (#308936)
- bug fix: non-conforming user macros which modify their source no longer
trigger internal errors. (#1371719, reported by _3b)
- bug fix: the combination of CONSTANTLY and DYNAMIC-EXTENT declarations no
longer causes an internal compiler error. (#2059950, reported by
bohonghuang)
- bug fix: treat inlined functions analogously to constants in the compiler.
(#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. (#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.
New in version 2.5.1, 2025-01-31
Back to top- minor incompatible change: SBCL now reveals details of its COMPLEX
representations through UPGRADED-COMPLEX-PART-TYPE, rather than hiding
them.
- minor incompatible change: the compiler will warn on the use of a
SATISFIES type with an undefined function. (#576608, reported by Roman
Marynchak)
- minor incompatible change: (room t) now counts the space taken by the
internals of hash-tables and CLOS instances.
- platform support
- fixes to the included version of ASDF, and to sockets functions, for
the Haiku operating system. (thanks to Alexandru Popa)
- add support for CAS (compare-and-swap) on SAPs for arm64, x86-64 and
(partially) RISC-V. (#1894057, reported by Yukari Hafner)
- the system is now consistent with 64-bit time_t on 32-bit linux
platforms. (#2063340, reported by Peter van Eynde)
- restore building on 32-bit ARM with newer gcc versions. (#1839783,
reported by Sébastien Villemot)
- fix large stack allocation on 64-bit Windows.
- CL portability fixes to the definitions of certain compiler structures,
detected by CLISP. (#2064301, #2064312, thanks to Robert Brown)
- bug fix: a misplaced assertion regarding weak hash tables would trigger
if a garbage collection hit at just the wrong time. (#2096998)
- bug fix: structure BOA constructors with &REST arguments no longer cause
structure slots named NIL or T to be unconditionally initialized with the
values NIL and T respectively.
- bug fix: structure BOA constructors without values for some slots no
longer cause compilation errors for initforms that are not a single
variable.
- bug fix: sequence functions handle :TEST and :TEST-NOT both being given
uniformly. (#309143)
- bug fix: the type system is better equipped to handle complicated unions
of numeric types. (#308937, #1694839, #1734959, #2073544)
- bug fix: misoptimization of VALUES-LIST in the presence of intervening
stack operations. (reported by haruhi.s)
- bug fix: apply the limit to inline expansions more selectively.
(#2092518, reported by Andrew Kravchuk)
- bug fix: compiler-detected type mismatches are reported even given the
presence of inlined functions. (#2092613, reported by Vasily Postnicov)
- bug fix: improved type error detection for inlined array construction forms.
(#2092889, reported by Vasily Postnicov)
- bug fix: accesses to multidimensional arrays are now checked based on the
(internal) INSERT-ARRAY-BOUNDS-CHECKS declaration, as with one-dimensional
arrays. (#2095155, thanks to Vasily Postnicov)
- bug fix: sb-bsd-sockets:socket-connect handles EINTR caused by GC signals.
Older SBCL releases