News - Steel Bank Common Lisp

4 min read Original article ↗

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

New in version 2.6.8, 2026-08-28

Back to top

  • minor incompatible change: FILE-POSITION on composite streams returns a more accurate result for CONCATENATED-STREAM, and NULL on TWO-WAY-STREAM and ECHO-STREAM.
  • platform support:
    • improvements to code generation for the ARM64 backend.
    • improved support for AVX512 instruction encoding and decoding. (thanks to Arthur Miller)
  • various enhancements to the SB-SIMD contributed module. (thanks to Sylvia Harrington and Arthur Miller)
  • bug fix: FILE-POSITION on a stream after reading input into a list or generic sequence returns the correct result.
  • bug fix: allow the manual to build on more platforms. (#2162021)
  • bug fix: infinite loop in the compiler while attempting to remove data moves. (#2162597)
  • bug fix: debugger failed to handle (COMPLEX DOUBLE-FLOAT) entities on the stack. (reported by Clint Seinen)
  • bug fix: error reporting from STRING-TO-OCTETS reported using the wrong string indices. (#2164924)
  • optimization: the compiler performs assignment conversion in nearly all possible cases now, along the lines of Fluet and Weeks' "Contification using Dominators" of 2001., which transforms state-machine-like code written in terms of local functions into the equivalent tagbody/go control structures.
  • optimization: type inference of parameters is now possible for local functions which recursively call themselves. (#486416, reported by Tobias Rittweiler)
  • optimization: special-case DPB with newbyte of 0 or -1.
  • optimization: more improvements to UTF8 encoding and decoding.
  • optimization: multiple structure TYPEP tests in sequence can elide redundant memory loads of layouts.
  • optimization: transform ZEROP of (LDB ...) to an equivalent zero test with a mask. (#2162824, thanks to Vasily Postnicov)

Older SBCL releases