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.4, 2025-04-28
Back to top- enhancement: :FUN-END breakpoints now support the known values return
convention when DEBUG > 0. This means that tracing local functions works
in more situations.
- platform support:
- on x86-64, relocation of static space is always enabled.
- save-lisp-and-die with :callable-exports can be used for sbcl.dll on
Windows.
- Building with UCRT64 on Windows is now fully supported.
- bug fix: :FUN-END breakpoints work on PowerPC, SPARC, and MIPS again.
- bug fix: incorrect rounding when converting some bignums to floats.
- bug fix: the second value of the truncation functions is more consistently
computed for bignum floats.
- bug fix: fix code generation for constants being considered from
conflicting type propagation information. (#2107652)
- bug fix: fix 32-bit range check code generation on x86-64. (#2106432)
- bug fix: types are correctly propagated from the keyword argument
processor to their uses. (#2106358, reported by Vasily Postnicov)
- bug fix: fix compilation error from CHECK-TYPE when the value checked is a
keyword argument and the type specifier argument is not a valid type
specifier. (#2104089)
- bug fix: generate stack-manipulation code in the presence of non-local
exits and dynamic-extent declarations even more carefully. (#2043242)
- optimization: (LOGIOR A (- (MASK-FIELD (BYTE 1 constantN) A))), or its
equivalent (LOGIOR A (- (LOGAND (ASH 1 constantN) A))), is recognized as
an idiom for sign-extending the N+1-bit field in A, and can be used for
signed modular arithmetic.
- optimization: ROUND is faster for floats.
- optimization: TRUNCATE/FLOOR/etc. are faster on ratios.
- optimization: MAKE-SEQUENCE does not invoke the full type algebra when the
provided type specifier is simple.
- optimization: don't attempt to align branch targets if the SPACE
optimization quality is greater than 1.
- optimization: circularity detection for printing now places its temporary
data structures on the stack.
- optimization: faster GCD on fixnums, especially when the difference in
magnitude is large.
- optimization: the implementation of ISQRT has been replaced with the
(faster) algorithm currently implemented in CPython.
New in version 2.5.3, 2025-03-30
Back to top- enhancement: breakpoint debugger commands have been added. Included is a
stepper based on breakpoints requiring no extra instrumentation. However,
it still has less functionality than the existing single stepper. See the
new debugger manual section titled "Breakpoint Commands" for more
information on the new commands.
- minor incompatible change: the behaviour of :save-runtime-options has been
restored to match the documentation. (#2096995, reported by Zach Beane)
- minor incompatible change: invoking CHANGE-CLASS from user code no longer
grabs the CLOS world lock. Callers must take responsibility for ordering
execution of CHANGE-CLASS and any changes to the class hierarchy.
- platform support:
- (CAS SAP) is implemented on ARM v8.1 directly with CAS instructions.
- on x86-64, list constructors emit more compact code sequences,
particularly in the presence of multiple references to the same object.
- on x86 and x86-64, fix the stack overflow check to use signed
comparisons.
- on Darwin/arm64 and Linux/x86-64, provide a restart to disable
floating-point exceptions of the type signalled, and another to disable
all floating-point exceptions.
- bug fix: cycle detection in class precedence lists happens before adding
classes to the direct subclasses of the parent.
- bug fix: stack-allocated unaligned cons cells no longer cause errors in
the debugger.
- bug fix: local function type declarations no longer inhibit tail calls in
(SAFETY 0) code. (#2039301)
- bug fix: bad or unknown type specifiers in CHECK-TYPE do not crash or slow
down the compiler. (#2102644, #2102653, #2102714, #2104048)
- bug fix: numerous bug fixes relating to the type system's handling of
arrays make SUBTYPEP more reliable and less likely to express a
contradiction. (#1996980, #2100563, #2100728, #2100779,
#2100784, #2100812, #2100825, #2101192, #2101215, #2101803,
#2102684)
- bug fix: improve other aspects of the type system's self-consistency.
(#2101073, #2101170, #2101183, #2101189, #2101399, #2101589)
- bug fix: fix compiler type error when deriving the type of FTRUNCATE.
(#2101073)
- bug fix: fix compiler error when deriving constraints for single-floats.
(#2102759)
- bug fix: startup tuning for particular microarchitectures no longer
accidentally disables one of the optimizations.
- optimization: ROW-MAJOR-AREF is transformed to use the same array
machinery as one-dimensional array references. (Thanks to Scott Burson
for the suggestion)
- optimization: list constructors emit shorter code sequences on x86-64,
particularly in the presence of multiple references to the same object.
- optimization: FLOOR and CEILING on ratios do not unnecessarily cons.
- optimization: provide specialized CALL-NEXT-METHOD functions for the
no-argument and full-argument cases.
Older SBCL releases