Page MenuHomeSolus

Update sbcl to 2.1.10
ClosedPublic

Authored by solene on Nov 9 2021, 11:08 AM.
Tags
None
Referenced Files
F11053492: D12253.id29725.diff
Thu, Aug 10, 11:19 PM
F11053491: D12253.id.diff
Thu, Aug 10, 11:19 PM
F11053490: D12253.id29744.diff
Thu, Aug 10, 11:19 PM
F11037834: D12253.diff
Wed, Aug 9, 9:18 PM
F10983334: D12253.diff
Sun, Jul 23, 1:56 PM
F10969693: D12253.diff
Thu, Jul 20, 11:20 PM
F10865588: D12253.id29725.diff
Jun 17 2023, 12:13 PM
F10863282: D12253.id29744.diff
Jun 17 2023, 1:41 AM
Subscribers

Details

Summary

Summarized changes

  • New features:
    • there is now a defined interface for defining foreign callable functions, which can be used for passing callbacks to foreign functions or for calling Lisp code from the foreign world as a shared library (preliminary support). See the revised manual section "Calling into Lisp From C" for more details.
  • Incompatibles changes:
    • the list form of the FUNCTION type specifier does not allow * as any argument type, but does allow * as a placeholder for wholly unspecified arguments when specifying the value(s) type.
    • the default (Lisp) toplevel option parser throws an error if it encounters an option which was intended to be used and removed by the C runtime.
    • the experimental DEFCAS macro has been removed.
    • finalizing classes with slots with duplicate symbol-names will only emit a warning if either slot name is an exported symbol.
    • simd-pack without a specific element-type is no longer treated as containing integers. A type must be supplied for VOPs to work on such values.
    • dynamic-extent arrays specialized on character and numeric types and created without either :INITIAL-ELEMENT or :INITIAL-CONTENTS will reflect previous contents of the stack instead of #\null (or 0) in all elements.
    • SB-SPROF:START-PROFILING no longer silently does nothing if the clock is already running. It instead stop and restarts with the newly provided options, and warns.
    • the experimental DEFINE-CAS-EXPANDER macro has been removed.
    • the hooks in *INIT-HOOKS* are called before starting the finalizer or other non-user threads.
    • the system attempts to refer to the supplied pathname in compiler diagnostics, if relevant, rather than the truename.
    • COMPILE-FILE does not merge the input file's pathname-directory into the output path if :OUTPUT-FILE was specified and has a directory that is not :UNSPECIFIC.
    • the backend instruction encoders for movzx and for string opcodes have changed their semantics.
    • support for the :SB-SAFEPOINT-STRICTLY, :SB-THRUPTION, and :SB-WTIMER build features has been removed
  • Bugfixes:
    • accept three operands for vshufpd.
    • a compiler error when attempting to compile a call to AREF with too many dimensions.
    • allow use of macros with improper argument list.
    • COERCE no longer attempts to guess what the user meant if they provide a type specifier of a union of types other than STRING.
    • compiler error resulting from attempting to zero a memory location with xor.
    • compiler notes are no longer emitted when compiling FORMATTER forms, including when implicitly triggered on a constant string argument to FORMAT.
    • derivation of the result type from subtraction sometimes erroneously excluded zero.
    • EQUALP hash tables whose keys contain arrays containing floats should behave correctly.
    • fix a compiler crash in type derivation of LOGTEST.
    • fix a compiler failure when a declared function type contains a literal structure with a valid MAKE-LOAD-FORM method.
    • fix OPEN-STREAM-P on streams closed by saving a core.
    • FTRUNCATE and similar functions are now more careful about deriving facts about the sign of zero they might return.
    • harmonize the behaviour of SLOT-BOUNDP on non-standard-objects between the various ways in which it can be called.
    • INTEGER-DECODE-FLOAT was computing the wrong answer for denormal double floats.
    • fix instruction encoding for TEST on RIP-relative addresses.
    • loading all-1s into an AVX2 register no longer causes an error.
    • print a single trailing zero after the decimal point for FORMAT ~E if there are no digits remaining to be printed and the width allows it.
    • RANDOM on a floating point argument now does not cons.
    • RANDOM on floats returns values strictly less than the float argument.
    • reduce the number of places where the system permissively accepts the symbol * as a type specifier where it should not be accepted.
    • remove a spurious warning from COERCE.
    • remove a warning from inlining SET-EXCLUSIVE-OR.
    • structures and conditions are now TYPEP all classes in the class precedence list of their class.
    • the code-walker used by the system's implementation of CLOS can handle defuns declared inline.
    • fix a bug in zeroing YMM registers.
    • fix instruction definitions for SSE blend and shuffle vector instructions.
    • handle heap corruption exceptions in our exception handler on win64.
    • improve exception handling on 64-bit Windows.
    • improvements to use of popcount
    • improve the test for whether pages need to be committed on Windows.
    • improve WAIT-UNTIL-FD-USABLE on Windows, reducing busy-looping.
    • release space back to the Operating System on Windows.
    • the debugger is better able to display SIMD packs.
    • work around address-space randomization causing instability on new versions of MinGW.
    • x86-64 machine code emitter crash when attempting to assemble some vector instructions.
  • Optimization:
    • EQUALP on specialized vectors and arrays is faster.
    • support routines for EQUALP hash tables generate less garbage.
    • extended loops updating iteration variables with THEN can perform specialized arithmetic for those updates.
    • in some cases, the jump table resulting from a compilation of TYPECASE is simpler.
    • IF BOUNDP followed by SYMBOL-VALUE can elide some memory loads and tests.
    • FBOUNDP on a constant symbol is now faster.
    • file compilation now produces smaller fasls for files which reference package literals.
    • derive the type of calls to FLOAT-SIGN.
    • arg-count mismatches in self-calls in defmethod are reported.
    • the SB-CLTL2 contrib now returns type information for generated structure accessors.
    • the block-compiler is more robust to files with intermingled compile-time and load-time effects. The semantics of the block-compiler remain not-entirely ANSI compatible.
    • (CAS SAP-REF-<x>) and CAS on alien integers is implemented on ppc64 and x86-64, working towards fixing #1894057
    • add support for vshuf* AVX2 instructions.
    • (SETF SBIT) is faster on x86-64.
    • code generation is improved for modular arithmetic involving signed operations.
    • the type of (LOOP ... COLLECT ...), and the type of COLLECT INTO variables, is derived as LIST.
    • new contrib module sb-graph producing graphical visualizations of Intermediate Representations of SBCL compilation data structures.
    • microoptimizations in multiple type-checking routines
Test Plan
  • install quicklisp
  • install alexandria library from quicklisp

Diff Detail

Repository
R2850 sbcl
Lint
Lint Not Applicable
Unit
Tests Not Applicable