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.5, 2025-05-31
Back to top- minor incompatible change: the output from TRACE is now prefixed by a
FRESH-LINE on *TRACE-OUTPUT*.
- platform support:
- On Linux, the system is better at negotiating with the kernel to find
locations for Lisp memory spaces, succeeding more often than
previously.
- bug fix: resolve signed/unsigned char mismatch in RUN-PROGRAM on Windows.
(#2110525, reported by awlygj)
- bug fix: compiler confusion given sufficiently complex derived type
constraints. (#2109902)
- bug fix: compiler inconsistency in low-level representation leading to
inconsistent transformations. (#2109837)
- bug fix: return NIL from calls to DOCUMENTATION on illegal function names.
- bug fix: calls to APPLY or VALUES-LIST on some combinations of constant
arguments could lose the constant nature after transformation. (thanks to
Hayley Patton)
- optimization: some micro-improvements to bignum operations, particularly
on x86-64 and arm64
- optimization: allow the result of MAKE-STRING to be allocated on the stack
when :element-type is unknown.
- optimization: the compiler will recognize the use of ZEROP on the results
of LENGTH and REM (on suitable operands) to avoid full computation of the
intermediate result.
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.
Older SBCL releases