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.2, 2026-02-27
Back to top- minor incompatible change: IMAGPART of a negative float returns 0.0, not
-0.0, consistent with a treatment of reals as complexes with an imaginary
part of strictly 0.0, but strictly incompatible with the requirement that
the IMAGPART equal (* 0 <float>)
- platform support:
- support for Windows on arm64 has been added. (thanks to Masatoshi SANO)
- various mismatches and bugs related to mismatches between Win32 and
Unix have been addressed.
- fixed an issue in unsigned 32-bit compare-and-swap on RISC-V (thanks to
Andreas Schwab) and LoongArch.
- fixed the integration of the system with the (lack of) floating point
traps on RISC-V. (thanks to Andreas Schwab)
- implemented the missing runtime breakpoint-related functions on RISC-V.
(#2130944)
- fix for assembling large relative jumps on MIPS.
- fix for GC safety of function calling on RISC-V and LoongArch.
(reported by Will Sinatra)
- support little-endian PPC64 to write cores in ELF format.
- fix for SB-POSIX:STAT on Windows with the UCRT C library.
- numerous other fixes related to architecture definitions, particularly
on RISC-V, but also on LoongArch, MIPS, PPC and PPC64, and ARM64.
- enhancement: support stack allocation of results for struct return values
from alien functions. (thanks to Jesse Bouwman)
- bug fix: rounding of floats converted from ratios. (#2139007)
- bug fix: SCALE-FLOAT and RATIONALIZE on denormals gave wrong answers, and
converting ratios to denormals is both more correct and faster.
- bug fix: the ~E FORMAT directive scales its float more correctly.
(#1854151, #2016431, #2125287, reported by MichaĆ "phoe" Herda,
Robert Dodier and Francis Wright)
- bug fix: the error when failing to bind in DESTRUCTURING-BIND is now a
PROGRAM-ERROR.
- bug fix: the compiler respects INLINE and NOTINLINE declarations to
control compiler macros that apply to macros. (#1490345)
- bug fix: converting bignums to float will trap or return floating point
infinities as appropriate to the prevailing floating point modes.
- bug fix: division with a (COMPLEX FLOAT) result will be more consistent
with results involving negative zeros.
- bug fix: allow the full range of hash values in weak hash-tables with
user-defined hash functions. (#2141482, reported by Patrick Poitras)
- bug fix: malformed OPTIMIZE declarations no longer cause the compiler to
stop.
- bug fix: symbols with terminating macro characters in their names (or
non-terminating ones at the start) print with escapes when *PRINT-ESCAPE*
is true.
- bug fix: documentation issues, in README and the manual. (thanks to Carl
Gay)
- bug fix: compiler crash while transforming arithmetic operations on known
non-numeric inputs. (#2142297)
- bug fix: unsafe concurrent access to synchronized weak hash tables.
(#2142714)
- optimization: avoid consing when right-shifting a bignum gives a fixnum
result.
- optimization: various type tests in the presence of intersecting
constraints do less redundant work.
New in version 2.6.1, 2026-01-26
Back to top- minor incompatible change: the never-documented :NO-CONSTRUCTOR-DEFUN
option to DEFSTRUCT is no longer supported.
- platform support:
- support for the LoongArch architecture has been added. (thanks to
ZiLong Wang)
- support for FreeBSD on 32-bit and 64-bit PowerPC platforms has been
added. (thanks to Piotr Kubaj)
- SB-ALIEN now supports passing and returning structures by value (rather
than by reference) in accordance with the platform ABIs, on x86-64 and
arm64 platforms. (#313202, thanks to Jesse Bouwman)
- wide compare-and-exchange is supported on the arm64 platform for
Armv8.1-A or later.
- bug fix: signal a DIVISION-BY-ZERO error in calls of (/ 0 0).
(#2137266, reported by khbit)
- bug fix: compiler infinite loop from previously-acceptable recursive
inline expansions. (#2137380, reported by Frode Fjeld)
- bug fix: unnormalized inequality constraints causing a compiler infinite
loop. (#2137422, reported by Jesse Bouwman)
- bug fix: compiler infinite loop from a deleted loop with an remnant
TAGBODY. (#2137493)
- bug fix: miscompilation of REDUCE #'APPEND with non-null INITIAL-VALUE and
:FROM-END NIL. (#2137736, reported by Vasily Postnicov)
- bug fix: encode XREF locations in a way that allows for higher form
numbers. (#2137765, reported by Jim White)
- bug fix: lookups of optimized memory movers fails when *PRINT-BASE* is not
10. (#2138812, reported by Robert Dodier)
- bug fix: CLRHASH on a hash table with weak keys should not corrupt the
table's index vector. (#2138965, reported by Patrick Poitras)
- bug fix: address a number of type derivation subtleties related to
floating point zeros.
- optimization: various combinations of arithmetic operations with variables
and constants are simplified to have fewer calls.
- optimization: elide full calls to CONJUGATE when its argument is known to
be of type REAL. (#2137354, thanks to Vasily Postnicov)
- optimization: the compiler knows more about the type and results of
ARRAY-DIMENSION.
- optimization: transform ARRAY-DIMENSIONS away on objects with array types
of known dimensions. (#2138581, thanks to Vasily Postnicov)
- optimization: (equal (array-dimensions a) (array-dimensions b)) does not
cons intermediate lists.
- optimization: (make-array (array-dimensions a)) does not cons a list.
Older SBCL releases