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.4, 2026-04-29
Back to top- minor incompatible change: when DEFSETF is called on a name that was
previously used as a (presumed) call to a function, it issues a single
STYLE-WARNING (like DEFMACRO).
- minor incompatible change: SB-EXT:PROCESS-KILL no longer supports the
:PTY-PROCESS-GROUP option (which was never correctly implemented).
- minor incompatible change: the :INITIAL-OFFSET argument for typed
DEFSTRUCT, if given, no longer accepts NIL.
- platform support:
- more likely to support 32-bit linux's struct timeval with 64-bit time_t.
- the runtime's main function is now defined as a weak symbol for
platform/compiler combinations that support it.
- on Windows, individual empty arguments for RUN-PROGRAM are escaped.
- add input/output speed fields for our definition of the termios
structure, addressing a crash in sb-posix:tcsetattr on OpenBSD.
(#2150499, thanks to Robert Palm)
- bug fix: address infinite loops in the compiler. (#2144911, #2148056)
- bug fix: if an FTYPE has been proclaimed for a function, don't mix NULL
with explicitly-typed keyword arguments. (#2147050, reported by Vasily
Postnicov)
- bug fix: compiler error from treatment of unused results. (#2147383)
- bug fix: compiler error from invalid dimension arguments to MAKE-ARRAY.
(#2147384)
- bug fix: compiler error arising from continuing to optimize deleted nodes.
(#2147385)
- bug fix: make sure linkage-table alien entries have base-string names.
(#2147646, thanks to Seokjun Lee)
- bug fix: make sure CHECK-TYPE's expansion does not include internal
non-externalizable objects. (#2148777, reported by Willem Broekema)
- bug fix: alien calls involving passing structs by value are less likely to
read or write wrong areas of memory. (thanks to Jesse Bouwman)
- bug fix: lowering EQUALP to EQUAL handles constant dotted lists correctly.
- bug fix: a number of standard functions perform more explicit type checks
on their arguments.
- bug fix: only return the primary value from (LIST*/APPEND/NCONC <values>).
- bug fix: correct treatment of escaped closing brackets in pathname
patterns.
- bug fix: escape dots in pathnames more correctly.
- bug fix: the hash set for function names will incur collisions less
frequently. (reported by Andrew Wolven)
- bug fix: the system is now capable of expressing select() on the whole
range of possible file descriptors.
- optimization: compiler optimizations for (REPLACE vector list) now apply
given :START1 and/or :END1 keyword arguments.
- optimization: CONCATENATE is faster for concatenating list arguments to a
VECTOR.
- optimization: ROUND for integers is more compact.
- optimization: on 64-bit x86, implement TRUNCATE using the Lemire, Kaser,
Kurz transform.
New in version 2.6.3, 2026-03-29
Back to top- minor incompatible change: (MAKE-ARRAY X :ELEMENT-TYPE 'UNDEFINED) now
signals an error, consistent with (UPGRADED-ARRAY-ELEMENT-TYPE
'UNDEFINED).
- platform support:
- fix disassembler on ppc for the MFLR and ISEL instructions
- the Lisp Return Address object (as part of the Lisp calling convention)
is no longer needed or supported on PPC, SPARC, MIPS or ARM. (This
also frees up a widetag slot previously held by return-pc-widetag)
- remove sensitivity to SBCL init files when building embedcore-sbcl.
(thanks to Robert Brown)
- add support for the ADCX and ADOX instructions on x86-64. (thanks to
Robert Smith)
- on PPC64, indicate the number of return values through flags, making
function calls four times faster.
- fix FFI involving int128 arguments on x86-64. (thanks to Andreas
Franke)
- fix build on OpenIndiana/x86-64. (thanks to Andreas Wacknitz)
- fix build on Haiku/x86-64.
- bug fix: improved stability of (particularly) the mark-region garbage
collector. (#2142711)
- bug fix: compiler type error in complicated expression involving BOOLE and
conditionals. (#2142949)
- bug fix: dotted lists involving symbols whose names begins with "DEF" are
not definitions. (#2143114, reported by Glenn Thompson)
- bug fix: STABLE-SORT miscompiled on declared union types involving both
LIST and VECTOR. (#2143163, reported by akater, thanks to Vasily
Postnicov)
- bug fix: more consistent results between compiler and interpreter in
numerical computations involving negative zeros. (#2143383)
- bug fix: USE-PACKAGE once again signals the correct error if an attempt is
made to use the KEYWORD package.
- bug fix: EQUALP on hash tables is no longer sensitive to irrelevant
aspects of the hash table.
- bug fix: SB-INTROSPECT:DEFTYPE-LAMBDA-LIST is more robust against types
defined in low debug situations.
- bug fix: ENSURE-GENERIC-FUNCTION ensures that the allocation of a generic
function does not happen in an arena. (Thanks to Andreas Franke)
- optimization: actually return early when we hit the cache for a
:MAKUNBOUND slot access. (thanks to John Mallery)
- optimization: streams opened with WITH-OPEN-FILE avoid having finalizers.
- optimization: improvement of COUNT on non-simple bit-vectors, or simple
ones with :START/:END arguments. (#2142062, thanks to Andrew Berkley)
- optimization: SIMD routines for checking strings for ASCII-only content
are more compact.
- optimization: the reader prefers base-string symbol-names of uninterned
symbols if possible.
- optimization: (length (remove-duplicates a s)) doesn't cons an
intermediate sequence.
- optimization: REMOVE-DUPLICATES uses hash-tables in more situations.
- optimization: UPGRADED-ARRAY-ELEMENT-TYPE is now faster.
Older SBCL releases