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.6.10, 2026-10-29
Back to top- minor incompatible change: testing for float equality using `=` is now a
quiet operation, not signalling when given NaNs as input.
- enhancement: Unicode support has been updated to support version 18.0.0 of
the Unicode standard, including support for new scripts and additional
characters, refinements to segmentation algorithms and a number of fixes
for bugs uncovered along the way:
- minor incompatible change: SB-UNICODE:LINE-BREAK-CLASS no longer
accepts a :RESOLVE keyword argument.
- enhancement: the implementation of line-breaking rules for numbers now
implements the full number-like state machine rather than the previous
table-based approximation.
- enhancement: UTS10-style collation through SB-UNICODE:UNICODE< and
similar functions now supports the use of #\uFFFE as a field separator
and #\uFFFF as an upper bound.
- bug fix: the set of characters considered of type Close for sentence
breaking no longer includes Other Punctuation.
- bug fix: in sentence breaking, do not attach a CR not followed by a LF
to its preceding character for the purpose of cluster class
determination.
- bug fix: some characters corresponding to unallocated code points in
Hangul blocks are no longer treated as having Hangul syllable type T.
- bug fix: Ahom vowel sounds A and AA are no longer treated as being of
class Spacing Break Mark in grapheme clustering.
- bug fix: character corresponding to surrogate code points are no longer
treated as Control grapheme-break class.
- bug fix: emoji extenders are now in the Extend sentence-break class.
- bug fix: Complex Context-Dependent characters are handled as Alphabetic
or Combining Marks according to the default resolution in Unicode
line-breaking.
- bug fix: combining marks attached to otherwise unattached zero-width
joiners no longer inhibit line breaks.
- bug fix: subnormal floating point numbers print with the least number of
digits required to discriminate between adjacent floats, just as normal
floating point numbers do. (thanks to Arthur Miller)
- bug fix: inconsistency and heap corruption in :weakness :key hash tables
in some circumstances. (#2169495, reported by Igor Santos)
- bug fix: miscompilation of DPB and (SETF LDB) causing the wrong bit to be
set in some circumstances. (#2168668, reported by Willem Broekema)
- bug fix: compiler crash from parsing REAL types with large integer bounds.
(#2168680)
- bug fix: fix miscompilation involving constants of size between 64 and
128 bits on backends with a register pair implementation. (#2168763,
##2168767)
- bug fix: an infinite loop in the compiler's type solver. (#2168790)
- bug fix: non-convergent behaviour in constraint propagation. (#2168862)
- bug fix: SB-GMP could be caused to return malformed ratios. (#2168973,
reported by David Scherfgen)
- bug fix: SB-GMP returned the wrong value for GCD with an argument of the
form -2^(64k-1). (#2168975, reported by David Scherfgen)
- bug fix: better compiler reasoning for funcalling values derived as
mixtures of non-function and function-types, in particular excluding NULL
from being successfully funcalled. (#2168999, thanks to Vasily
Postnicov)
- bug fix: various compiler errors. (#2169379, #2171292, #2171329)
- bug fix: emit a compiler warning when ARRAY-DIMENSION is called with an
axis argument known to be out of bounds for its array argument.
(#2169659, thanks to Vasily Postnicov)
- bug fix: fix a test to actually test weak hash tables with EQL keys, which
had been failing to test anything since 2006. (#2171410, reported by
Igor Santos)
- bug fix: some compiler notes about deleted code were silenced.
- bug fix: in compiler messages, the outermost element of the processing
path was always missing, and the actual source form also got corrupted
sometimes.
- bug fix: evaluator errors from the simple evaluator now inherit from
PROGRAM-ERROR.
- bug fix: some bug fixes to the mark-region garbage collector (thanks to
iska and Hayley Patton)
- bug fix: address bugs in the reader regarding float syntax with large
(resp. small) decimal fraction and very large negative (resp. positive)
exponent. (thanks to Arthur Miller)
- bug fix: allow usage of SB-ASSEM:INST when *PRINT-CASE* is not :UPCASE.
(thanks to digikar99)
- bug fix: PRIN1-TO-STRING of MOST-NEGATIVE-FIXNUM failed with an internal
error when *PRINT-BASE* was 2 or 4. (thanks to Arthur Miller)
- bug fix: address a compiler failure related to MAKE-DOUBLE-FLOAT on PPC64.
(thanks to Piotr Kubaj)
- bug fix: types expressed as REAL and FLOAT ranges handle type conversion
of their bounds more carefully.
- bug fix: type checking for :KEY and :TEST arguments to ASSOC and RASSOC
uses the right data. (reported by Tito Latini)
- bug fix: miscompilation of conversions from (SIMPLE-ARRAY CHARACTER (*))
to UTF-8. (reported by Tom Gillespie)
- bug fix: a large number of issues found through extended random testing.
- optimization: some calls to EQUALP with a constant array argument can be
constant-folded if enough is known about the type of the other argument.
(#2169625, thanks to Vasily Postnicov)
- optimization: some type information was lost in (SAFETY 0) code leading
to slower generated code. (reported by Qiantan Hong)
- optimization: complete unboxed signed 128-bit arithmetic on arm64 and
x86-64, except for division.
- optimization: improved type derivation for local functions.
- optimization: loops with iteration variables tested for termination by
equality (rather than inequality) have better type inference.
- optimization: the compiler's handling of constraints has been optimized to
do less work somewhat faster.
- optimization: provide support for a four-way 64-bit permutation
instruction in SB-SIMD for AVX2. (thanks to Willem Broekema)
- optimization: the compiler is more aware of the return type of LOG in the
presence of mixed floating point formats.
- documentation: SB-MANUAL has several new sections: @GETTING-SBCL,
@RUNNING-WITHOUT-INSTALLATION, @PARTS-OF-SBCL, @FINDING-PARTS-OF-SBCL, and
many more under @EFFICIENCY.
- documentation: SB-MANUAL now includes variable initforms and argument
default values in the Texinfo output.
- documentation: provide an improved example of package-local nicknames.
(reported by Jacek Podkanski)
New in version 2.6.9, 2026-09-26
Back to top- minor incompatible change: structure slots defined as :READ-ONLY can be
written using SLOT-VALUE with the constant slot name, matching the
existing behaviour if the slot name is provided as a variable.
- enhancement: addition of u8.16-shuffle to SSE3 SB-SIMD support. (thanks
to Qiantan Hong)
- enhancement: addition of some AVX512 support to SB-SIMD. (thanks to Aaron
Estrada)
- bug fix: address a number of issues in the SB-SIMD contributed module.
(thanks to Sylvia Harrington)
- bug fix: don't improperly inherit dynamic extent nature of transformations
of lists constructed with dynamic extent.
- bug fix: don't call SB-GMP exponential function with a non-rational base.
(thanks to Ilia Gradina)
- bug fix: compiler internal error from stack manipulation in inline- and
dynamic-extent-heavy code. (#2156347, reported by Vasily Postnicov)
- bug fix: the SB-MANUAL contributed module should build more reliably on
Windows. (#2165787)
- bug fix: be more conservative when inferring types of components of
composite data structures lexically following a declaration in the
presence of possible side effects. (#2165835)
- bug fix: compiler miscompilation of type checks of unused optional
arguments. (#2165974, reported by Vasily Postnicov)
- bug fix: test consistency checks of system variables now correctly ignore
SB-IMPL::*READ-LINE-BUFFERS*, affecting particularly large heaps.
(#2167121, reported by 3b)
- bug fix: miscompilation through too-optimistic reuse of storage locations.
(#2167208)
- bug fix: compiler error from off-by-one access to internal data
structures. (#2167568)
- bug fix: compiler error from compilation of nested functions with
non-local exits. (#2167725)
- bug fix: compiler error after incautious value coalescing. (#2167800)
- optimization: microoptimizations to the return sequence to generic
arithmetic assembly routines on x86-64.
- optimization: checks for whether floats are integral are more compact.
- optimization: on arm64, integer-length is more efficient on
machine-word-sized integers.
- optimization: certain basic operations on numeric RATIO types have a fast
path.
- optimization: the GMP-INTEXP used in the SB-GMP implementation of EXPT is faster.
- optimization: self- and mutually-referential functions can be
automatically stack-allocated when the system can prove that no function
reference can escape.
- optimization: the compiler can propagate equality constraints over local calls.
- optimization: the compiler can make use of register pairs for unboxed signed
128-bit simple arithmetic on ARM64 and x86-64.
- optimization: constraint propagation is somewhat faster.
- optimization: provide the compiler with smarts for type inference for
SB-SYS:WITH-INTERRUPTS. (#2167153, reported by Vasily Postnicov)
Older SBCL releases