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

New in version 2.6.0, 2025-12-28

Back to top

  • enhancement: the compiler will recognize certain combinations of high-level optimizations as expressible by shorter machine instruction sequences, documented in the manual under "Recognized idioms" in the "Efficiency" section.
  • enhancement: the SB-COVER code coverage tool can emit a report in a format compatible with the LCOV open-source tool.
  • bug fix: compiled code calling EXPT with constant integer exponent (or 1/2) and floating point base is more consistent with out-of-line EXPT. (#1899969, #2136082)
  • bug fix: fix SCALE-FLOAT on denormal floats. (#2000178, re-reported by Barton Willis)
  • bug fix: the system's test of constructing an ELF core is compatible with storing code coverage information. (#2131956)
  • bug fix: inconsistent result from SUBTYPEP on array types. (#2132250)
  • bug fix: the SB-COVER reporting utilities can now annotate source files containing array literals using #A(<dims> <eltype> . <contents>) syntax. (#2134290)
  • bug fix: compiler error resulting from losing some already-computed derived type information. (#2136852)
  • bug fix: miscompilation of DPB involving non-word-sized intermediate results but a word-sized final result. (#2137028)
  • bug fix: compiler error when asserting the result of a known non-list to be of a type union involving a CONS with a given CAR. (#2137030)
  • bug fix: miscompilation of DPB with constant byte positions above the number of bits in a word. (#2137046)
  • bug fix: miscompilation of PHASE with a negative zero argument. (#2137068, #2137119)
  • bug fix: failure to round-trip types involving positive and negative zeros of different floating point representations. (#2137140)
  • optimization: machine arithmetic can be used when bit-shifting bignum inputs in a modular arithmetic context.
  • optimization: extending an association list, including using backquote notation, is recognized as ACONS and is potentially stack-allocatable.
  • optimization: some intermediate copies of lists are elided for calls to maybe-copying operations surrounded by a call to COPY-LIST.
  • optimization: a number of comparison operations on rationals are simplified where possible.
  • optimization: a number of arithmetic operations recognize and elide double negations or calls to ABS.
  • optimization: tracking code with coverage information uses a weak vector per fasl file, rather than a list of per-function weak pointers.
  • optimization: REDUCE has been tweaked for better performance both on lists and vectors.
  • optimization: for simple-bit-vectors of the right alignment and length, REVERSE will operate a word-at-a-time.

Older SBCL releases