Tags: mayerrobert/sbcl
Tags
changes in sbcl-2.1.8 relative to sbcl-2.1.7: * minor incompatible change: the experimental DEFINE-CAS-EXPANDER macro has been removed. * minor incompatible change: the hooks in *INIT-HOOKS* are called before starting the finalizer or other non-user threads. (thanks to Sean Whitton) * platform support: ** many improvements to code generation on arm64. ** avoid slow forms of the bit test instructions BT, BTS, BTR on x86-64. ** fix a bug in loading large core files on the Apple M1/arm64. (thanks to Mayank Manjrekar) ** fix a bug in loading core loading on the Apple M1/arm64. (reported by Eric Timmons) * enhancement: 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. (thanks to Sean Maher) * enhancement: (CAS SAP-REF-<x>) and CAS on alien integers is implemented on ppc64 and x86-64, working towards fixing lp#1894057 * bug fix: fix OPEN-STREAM-P on streams closed by saving a core. (lp#1938433, reported by Guillaume LE VAILLANT) * bug fix: remove a spurious warning from COERCE. (lp#1920931, reported by Andrew Berkley) * bug fix: remove a warning from inlining SET-EXCLUSIVE-OR. (lp#1936470, reported by Jerome Abela)
changes in sbcl-2.1.7 relative to sbcl-2.1.6: * incompatible change: on certain platforms (currently just x86-64), 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. * minor incompatible change: 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. * minor incompatible change: the system attempts to refer to the supplied pathname in compiler diagnostics, if relevant, rather than the truename. * enhancement: new contrib module sb-graph producing graphical visualizations of Intermediate Representations of SBCL compilation data structures. * platform support: ** improved code generation for unary minus in modular contexts on arm64. ** make the disassembler annotations slightly more robust on arm64. ** release space back to the Operating System on Windows. ** improve the test for whether pages need to be committed on Windows. ** fix a bug in the use of the VPCMPEQD opcode on x86-64. (lp#1928516, thanks to Marco Heisig) * optimization: the type of (LOOP ... COLLECT ...), and the type of COLLECT INTO variables, is derived as LIST. (lp#1934577, reported by SATO shinichi)
changes in sbcl-2.1.6 relative to sbcl-2.1.5: * minor incompatible change: 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. * platform support: ** improvements to unwind code generation on arm64. ** on x86-64, accept three operands for vshufpd. (reported by Bela Pecsek) ** on x86-64, improvements to use of popcount ** improve exception handling on 64-bit Windows. (thanks to Luis Borges de Oliveira) * bug fix: allow use of macros with improper argument list. (lp#1929623, thanks to Sean Maher) * bug fix: COERCE no longer attempts to guess what the user meant if they provide a type specifier of a union of types other than STRING. (lp#1929614) * bug fix: 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. (lp#883520)
changes in sbcl-2.1.5 relative to sbcl-2.1.4: * minor incompatible change: on x86-64, the backend instruction encoders for movzx and for string opcodes have changed their semantics. * platform support: ** compatibility: support the latest MinGW on x86. (lp#1923325, thanks to Alexis Rivera) ** bug fix: on x86-64, fix instruction encoding for TEST on RIP-relative addresses. (lp#1925808, reported by Shinmera on #sbcl, thanks also to 3b) ** bug fix: on x86-64, loading all-1s into an AVX2 register no longer causes an error. (thanks to Marco Heisig) ** bug fix: on arm64, improve disassembly of ADD with constant 0 as MOV ** enhancement: on arm64, support debugger commands RETURN-FROM-FRAME and RESTART-FRAME more efficiently. ** enhancement: on x86-64, add support for vshuf* AVX2 instructions. (reported by Bela Pecsek) ** optimization: faster function calls on arm64. ** optimization: (SETF SBIT) is faster on x86-64. * bug fix: INTEGER-DECODE-FLOAT was computing the wrong answer for denormal double floats. (lp#1926383, reported by Stavros Macrakis) * bug fix: RANDOM on a floating point argument now does not cons. (reported by Tito Latini) * bug fix: fix a compiler crash in type derivation of LOGTEST. (lp#1928243) * bug fix: fix a compiler failure when a declared function type contains a literal structure with a valid MAKE-LOAD-FORM method. (lp#1929160, thanks to Yurii Hryhorenko) * optimization: FBOUNDP on a constant symbol is now faster. * optimization: file compilation now produces smaller fasls for files which reference package literals. * optimization: derive the type of calls to FLOAT-SIGN.
changes in sbcl-2.1.4 relative to sbcl-2.1.3: * platform support: ** work around address-space randomization causing instability on new versions of MinGW. (lp#1921141) * bug fix: RANDOM on floats returns values strictly less than the float argument. * bug fix: compiler error on x86-64 resulting from attempting to zero a memory location with xor. (reported by Eric Marsden) * optimization: extended loops updating iteration variables with THEN can perform specialized arithmetic for those updates. * optimization: in some cases, the jump table resulting from a compilation of TYPECASE is simpler. * optimization: on x86-64, IF BOUNDP followed by SYMBOL-VALUE can elide some memory loads and tests.
changes in sbcl-2.1.3 relative to sbcl-2.1.2: * minor incompatible change: support for the :SB-SAFEPOINT-STRICTLY, :SB-THRUPTION, and :SB-WTIMER build features has been removed * platform support: ** support for :SB-CORE-COMPRESSION on Darwin/ARM64 ** support ARM v8.1 atomic and compare-and-swap instructions ** x86, x86-64: microoptimizations in multiple type-checking routines * bug fix: structures and conditions are now TYPEP all classes in the class precedence list of their class. (reported by Luis Oliveira) * bug fix: derivation of the result type from subtraction sometimes erroneously excluded zero. (lp#1916895) * bug fix: reduce the number of places where the system permissively accepts * as a type specifier where it should not be accepted. (lp#1860919) * bug fix: the code-walker used by the system's implementation of CLOS can handle defuns declared inline. (reported by Don Cohen) * optimization: EQUALP on specialized vectors and arrays is faster. * optimization: support routines for EQUALP hash tables generate less garbage.
changes in sbcl-2.1.2 relative to sbcl-2.1.1: * platform support: ** support for ARM64 macOS; ** improvement in coverage mark implementation on non-x86oid backends, approaching the existing x86oid support; ** more empirically-robust retrieval of the program counter from illegal instruction traps on SPARC; ** retain fewer dead objects when saving cores with precise collectors. * incompatible change: MAP-ALL-SAMPLES and MAP-TRACE-SAMPLES are no longer present in the SB-SPROF contrib module. * minor incompatible change: SB-SPROF:WITH-PROFILING defaults to all threads. SB-SPROF:START-PROFILING no longer accepts a :SAMPLING keyword. * enhancement: the sb-introspect contrib now supports finding the lambda lists of method combinations. (thanks to Didier Verna) * enhancement: short-form DEFSETF now stores a source-location. * bug fix: canonical unions of CONS types were being incorrectly computed. (lp#1912863, reported by James Kalenius) * bug fix: better understanding of array simplicity (or otherwise) in the type system. (lp#1903241) * bug fix: unions of rational and integer types now have a single canonical form, allowing more correct reasoning about them in the type system. * bug fix: less likely to overclaim certainty about type equality of union types. (lp#1916040) * bug fix: HANDLER-BIND evaluates the forms producing handler functions only once. (lp#1916302, reported by Christophe Junke) * optimization: FIND on constant sequences can be compiled into a jump table, in a similar manner to POSITION * optimization: the compiler's awareness of numeric contagion rules for operations on pairs of floating point numbers is improved. (lp#1914094, thanks to Andrew Berkley)
changes in sbcl-2.1.1 relative to sbcl-2.1.0: * platform support: ** restore non-threaded NetBSD builds; ** adjust how the finalizer thread is started; (lp#1906571, lp#1907872) ** fix the encoding of PEXTR on x86-64; * minor incompatible change: emit warnings for list iteration forms when the object being iterated over is known not to be a list. (lp#1908819, reported by Michael Fiano) * bug fix: detect 2 or 1 as an invalid number of arguments passed to optimized slot writing or reading effective method respectively. (lp#1909659, reported by Michal Herda) * bug fix: division by zero errors were in some cases not being signalled. (lp#1910098, reported by il71) * bug fix: erroneous coercions in the type system could lose precision. (lp#1910294) * bug fix: literal (read-time evaluated) NaNs in source code no longer cause compiler crashes. (lp#1909881, reported by Michal Herda) * bug fix: detect more erroneous syntax in method bodies. (lp#1912362, reported by Paul M. Rodriguez) * optimization: the compiler's understanding of EXPT is improved, reducing the introduction of COMPLEX types. (lp#1908830, reported by Michael Fiano) * optimization: the compiler is better at computing numeric contagion when (COMPLEX FLOAT) types are involved. * micro-optimizations: ** moving from slightly-bigger-than-fixnum ranges is more efficient on x86-64; ** encode character comparisons with smaller operands on x86-64; ** truncating (and related operations) on floats can be inlined in more cases on 64-bit platforms; ** rounding can use specialized instructions on ARM64 and on x86-64 when SSE4 is available;
changes in sbcl-2.1.0 relative to sbcl-2.0.11: * minor incompatible change: the MAKE-EA internal function, used in the assembler, has been removed (affecting some libraries defining their own Virtual Operations) * new feature: SB-EXT:PRIMITIVE-OBJECT-SIZE can be used to interrogate the low-level size in memory of objects. (lp#1636910, reported by anquegi) * platform support: ** pass required -std argument to the compiler on Solaris (lp#1885751, thanks to Jesse Off) ** better treatment of non-ASCII program arguments on Windows (lp#1907970, reported by Timofei Shatrov) ** implement the improved TYPEP with structure types on all other supported platforms (32-bit PowerPC, ARM, ARM64, MIPS, SPARC, RISC-V) * enhancement: stream dispatch (to vanilla ANSI / Gray / Simple variants) has been rewritten and optimized, fixing a number of bugs including: ** performance of WRITE-SEQUENCE on composite streams (lp#309136) ** handling of CLOSE on SYNONYM-STREAM (lp#1904257, reported by Richard M Kreuter) ** handling of CLOSE on BROADCAST-STREAM with no components (lp#1904722, reported by Richard M Kreuter) ** loading SB-SIMPLE-STREAMS breaks functionality of other stream classes (lp#1908132) ** some excessive consing in READ-LINE * enhancements related to RUN-PROGRAM: ** improved the documentation related to the ARGS argument (lp#806733, reported by mon_key) ** added a PRESERVE-FDS argument * bug fix: ensure that TYPE-OF returns something even on internal instances, which may become visible in the debugger. (lp#1908261, reported by Philipp Marek) * bug fix: iteration variables established by standard forms should always be considered used by the compiler. (lp#719585, reported by Roman Marynchak) * bug fix: don't allow compiler transformations to weaken the requirement against extended (list-form) function names in FUNCALL and related operators. (lp#310069) * bug fix: improve automated version number generation in branches. (lp#897867, thanks to Martin Cracauer) * bug fix: add possibly-spurious futex wakes when unwinding from a call to futex-wait, to avoid deadlocks from interrupted waits. (lp#1038034) * bug fixes in the compiler: ** error on malformed DESTRUCTURING-BIND (lp#1738638) ** error on malformed SPECIAL declaration (lp#1740756) ** error from use of VALUES type in COERCE (lp#1887712) ** enforcement of FTYPE types involving &OPTIONAL (lp#1903932) ** checking for proper-list-ness before applying transforms (lp#1905512) ** compilation of LAMBDA form including a malformed DEFUN (lp#1906056) ** memory fault from VALUES-related handling in high DEBUG code (lp#1906563) ** transforms handle explicit NIL arguments in :END arguments to SEARCH (lp#1907924) * bug fix: return COMPILED-FUNCTION for TYPE-OF on compiled functions. (lp#1906583) * some bugs were also closed in this release cycle as obsolete, having been fixed by the passage of time or other change in the environment: ** floating point error reporting on OS X (lp#309454) ** load-shared-library not working from non-main threads on OS X (lp#592425) * optimization: CONSTANTLY on constant arguments returns a more efficient function. (lp#1852585) * optimization: perform fewer Lisp/Alien representation conversions in callbacks. * optimization: perform fewer redundant widetag tests when doing type tests of complicated union types. * optimization: signed-integer division on machine-word sized operands is now implemented using multiplication, affecting TRUNCATE, FLOOR, CEILING, MOD and REM. (This optimization was already performed on unsigned-integer division)
changes in sbcl-2.0.11 relative to sbcl-2.0.10: * minor incompatible change: (ARRAY NIL (*)) is not a subtype of STRING, as is consistent with a majority of maintained CL implementations. * minor incompatible change: ARRAY-RANK-LIMIT is decreased from 65529 to 256 * optimization: TYPEP on structure types is faster and more compact on x86[-64] and ppc64. * optimization: LOGCOUNT is faster on arm64. * optimization: SIGNUM can be inlined if its argument type is known. (lp#1903533) * bug fix: compiler crash in tail call handling. (lp#1903938) * bug fix: crash in traceroot. (lp#1903419, reported by Michal Herda) * bug fix: DESCRIBE called with a string as second argument no longer mutates that string. (lp#1903901, reported by Michal Herda) * bug fix: stack clobbering by 256-bit SIMD packs on x86-64. (lp#1901685, reported by Marco Heisig)
PreviousNext