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.11, 2025-11-30
Back to top- incompatible change: the compiler's internal representation of "source
paths" for unquoted forms within backquotes has changed. Other developer
tools using this representation, including callers of some exported
SB-INTROSPECT functions, will misreport the location of signalled
conditions and/or definitions in top-level forms including backquotes and
commas.
- minor incompatible change: undefined syntaxes following
*READ-BASE*-related reader macros (such as #B, #O, #X, #R) now signal
reader errors.
- minor incompatible change: the convenience reader syntax pkg::(...) no
longer triggers package locks for the PKG package.
- minor incompatible change: building with the SB-DEVEL feature inhibits
identical code folding at the end of the build of the SBCL system itself.
- enhancement: improve the compiler's knowledge of the dimensions of the
result of MAKE-ARRAY. (#2130477, thanks to Vasily Postnicov)
- enhancement: the SB-COVER contributed module has been made substantially
more robust; collecting coverage no longer inhibits various CLOS
optimizations. (For SBCL developers, it is now capable of reporting on
the coverage of the SBCL system itself, provided it is built with the new
:SB-COVER-FOR-INTERNALS build-time feature.)
- bug fix: REQUIREing the SB-MD5 contributed module no longer installs a
compiler optimization policy restriction of SPACE being at least 1.
- bug fix: don't miscompute the sizes of garbage collector data structures
for running with dynamic space heap sizes above 128GiB.
- bug fix: ENOUGH-NAMESTRING when the pathname and defaults arguments are
both logical pathnames with the same host returns a shorter string than
previously.
- bug fix: the compiler retains fewer temporary data structures when
compiling code with coverage data.
- bug fix: requiring the SB-MD5 contrib module no longer installs a
restriction on the SPACE optimization quality.
- bug fix: internal compiler floating point error while compiling certain calls
to CEILING. (#2132231)
- bug fix: miscompilation of TYPEP on intersections of types including
rational ranges. (#2132207)
- bug fix: miscompilation of MISMATCH from insufficiently cautious type
derivation. (#2132187)
- bug fix: internal compiler error while compiling ASH from an incorrect
consistency check. (#2132156)
- bug fix: internal compiler error from missing constant-folding stub for
internal function. (#2132126)
- bug fix: miscompilation of GET-PROPERTIES at low SAFETY optimization
qualities. (#2131985)
- bug fix: internal compiler error while generating code for multiplications
of fixnums where the result is also asserted to be a fixnum. (#2131894)
- bug fix: the asserted real range of ATANH was incorrectly stated as
[-1,1]. (#2131711)
- bug fix: incorrect type error resulting from wrong type derivation of
REDUCE #'LOGIOR. (#2131699)
- bug fix: specialized XEPs should not be generated during
block-compilation or interpretation. (#2131118)
- bug fix: fix a wrong compiler transform for MAKE-ARRAY leading to
miscompilation. (#2131048)
- bug fix: miscompilation of type checks of (UNSIGNED-BYTE <X>) for large
<X>. (#2130028)
- bug fix: it is now possible to inline functions containing SPECIAL
declarations on symbols in locked packages. (#2129827, reported by
Scott L. Burson)
- bug fix: various internal compiler errors. (#2132022, #2129649)
- bug fix: various wrong results and inconsistencies from SUBTYPEP on ARRAY
types. (#2130374, #2130424, #2130441, #2130457, #2130508,
#2130518, #2130526, #2130542, #2130588, #2130950, #2131079,
#2131149, #2131179, #2131186, #2131271, #2131618, #2130262)
- optimization: LOGTEST participates in compiler transforms related to
modular (machine-sized) arithmetic.
- optimization: more arithmetic combinations simplifications.
- optimization: (car (list a)) doesn't allocate a list.
New in version 2.5.10, 2025-10-27
Back to top- platform support:
- handling of "./" and "../" in pathname functions on Windows is improved.
(#2125908, reported by khbit)
- use x29 for the control frame pointer on arm64, improving backtrace
tooling.
- provide a plugin to lldb to display backtraces (contrib/lldb_bt.py).
- an experimental option for performing GC without interrupting and
stopping foreign function calls. Enabled via --with-nonstop-foreign-call
(for arm64, x86-64 (outside of Windows, where that's already the case.))
- bug fix: some interactions between TWO-WAY-STREAM (and ECHO-STREAM) and
user-defined streams have been cleaned up.
- bug fix: the SB-COVER contributed module can now annotate source files
containing COMPLEX literals. (A number of other more minor cosmetic
issues have also been fixed).
- bug fix: compiler crash from reoptimizing with some stale type information.
(#2125944)
- optimization: SLOT-VALUE calls with known slot-name on values which are of
type (OR NULL <STRUCT>) are transformed to a null check and a structure
access.
- optimization: the compiler will apply constraints to the result of calling
RANDOM. (#2126978, thanks to Vasily Postnicov)
- optimization: the compiler will perform type derivation on CL:APPLY called
with a known function.
- optimization: fusion of type checking and move of 64-bit integers is
enabled on arm64 and x86-64.
- optimization: allocation fusion for (PUSH (CONS A B) LIST) on x86-64.
- optimization: improvements of type derivation for float rounding operations.
- optimization: constant folding when one of the arguments is
(if v constant1 constant2)
Older SBCL releases