sbcl-2.5.2 released

Christophe Rhodes via Sbcl-announce <[email protected]> Fri, 28 Feb 2025 17:44:51 +0000
Newsgroups gmane.lisp.steel-bank.announce
Message-ID <[email protected]>
Dear all,

I've just gone through the release process for SBCL 2.5.2, which should
now be available in version control and on SourceForge.  Notable changes
in this release are summarized below; perhaps of particular note is the
tightening of the interpretation of FTYPE declarations with &OPTIONAL
and &KEY -- we no longer implicitly include the default value of the
argument into the type; this might cause type errors where none were
signalled before (for non-conforming code), though it does also allow
tighter type inference.

Enjoy!  Best wishes,

Christophe

changes in sbcl-2.5.2 relative to sbcl-2.5.1:
  * minor incompatible change: in some instances when the compiler cannot
    prove that a NIL-valued branch is unreachable, where NIL is not compatible
    with the expected type, a type warning will no longer be issued.
  * minor incompatible change: the compiler will more strictly treat type
    declarations for &OPTIONAL and &KEY arguments in FTYPE declarations, no
    longer effectively adding an implicit (OR ... <default>) type when the
    function itself has a default value not matching the declared type for
    that argument.
  * enhancement: type errors in structure constructors are now restartable,
    with a USE-VALUE restart provided.
  * enhancement: CHECK-TYPE warns about type conflicts at compile-time.
  * enhancement: FTYPE declarations for functions which set their parameters
    are checked.
  * enhancement: new print control variable SB-EXT:*PRINT-CIRCLE-NOT-SHARED*,
    when used in conjunction with *PRINT-CIRCLE*, prints #1# only for
    circularities and not simple sharing.
  * platform support
    ** on Windows, make sure to commit memory after zeroing during
       save-lisp-and-die. (lp#2097197, reported by _3b)
    ** on Linux, add the TCP_USER_TIMEOUT constant to SB-BSD-SOCKETS.  (thanks
       to Mihai Bazon)
    ** on *BSD, make TCP_KEEPCNT, TCP_KEEPIDLE and TCP_KEEPINTVL available
       where the OS supports it.
    ** on x86-64, optimize BOUNDP for known-global symbols.
    ** on x86-64, optimize KEYWORDP for some arguments.
    ** on arm64, don't trigger an assertion when using FMOV on complex
       single-float registers.
    ** on arm64, improve type checking for (AND SYMBOL (NOT NULL)).
  * bug fix: using structure read macros with shared structure markers no
    longer signals type errors when the shared structure is in a slot with a
    type.  (lp#308936)
  * bug fix: non-conforming user macros which modify their source no longer
    trigger internal errors.  (lp#1371719, reported by _3b)
  * bug fix: the combination of CONSTANTLY and DYNAMIC-EXTENT declarations no
    longer causes an internal compiler error.  (lp#2059950, reported by
    bohonghuang)
  * bug fix: treat inlined functions analogously to constants in the compiler.
    (lp#2095560, reported by Vasiliy Postnicov)
  * bug fix: FTYPE declarations for &optional and &key arguments do not
    include default values when checking types.
  * bug fix: Storing coverage data no longer leads to miscompilations allowing
    reachability of unreachable code.  (lp#2092451, reported by mrkissinger)
  * optimization: elide bounds-checking for multidimensional arrays with known
    dimensions.  (reported by aeth)
  * optimization: alien callbacks are generally less heavyweight.
  * optimization: REMOVE shares the tail of the input list when there's
    nothing to remove.