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
- 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
- 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.