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.5, 2026-05-29

Back to top

  • minor incompatible change: the condition signalled when an accessed slot is missing from an object is no longer a TYPE-ERROR.
  • minor incompatible change: the condition signalled when accessing an uninitialized structure slot is no longer a TYPE-ERROR.
  • minor incompatible change: the implementations of standardized functions treating lists as sets, such as INTERSECTION and UNION, take more advantage of the freedom to return the elements of the result in any order.
  • platform support:
    • add low-level support for floating point state manipulation on PPC64/FreeBSD. (thanks to Piotr Kubaj)
    • improve the software emulation of displaced instructions on ARM64.
    • restore building the system using the musl C library. (#2153432, reported by Tom Gillespie)
    • fix some SB-SIMD shifting instructions on AVX2. (#2152791, reported by Willem Broekema)
  • enhancement: definition sources for alien callbacks are now findable by name in SB-INTROSPECT.
  • bug fix: the SYMBOL restart for finding packages now actually performs a non-local exit. (#2153092, reported by Zach Shaftel)
  • bug fix: TYPEP on large disjoint numeric union types compiles faster using fewer resources. (#2151818, reported by James McDonald)
  • bug fix: strings of arbitrary size with fill-pointer set to 1 are character designators. (reported by _death)
  • bug fix: the KEEP-OLD restart established by ADD-PACKAGE-LOCAL-NICKNAME keeps the old nickname instead of going ahead with the change (and the restart report function no longer returns from ADD-PACKAGE-LOCAL-NICKNAME).
  • bug fix: when EXPORT results in a conflict between symbols exported by different used packages, the TAKE-NEW restart now shadowing-imports the new symbol instead of doing nothing and leaving the package in an inconsistent state.
  • bug fix: the SB-EVAL interpreter checks program syntax more thoroughly.
  • bug fix: compiler cross-reference data is decoded correctly for a functional with more than one entry for a given name.
  • bug fix: TYPE-ERRORs signalled by SBCL are more likely to have a DATUM that is not of the condition's EXPECTED-TYPE.
  • bug fix: the code walker no longer uses the stack to walk PROGN bodies.
  • optimization: in various situations, INTERSECTION and UNION will use hash-tables to perform the operation more quickly.

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.

Older SBCL releases