Releases: sbcl/sbcl
Releases · sbcl/sbcl
SBCL 2.4.8
- bug fix: the elftool utility finds a writeable directory in more
situations. (thanks to Shinmera) - bug fix: SLOT-MAKUNBOUND does not attempt to dereference a PROGN variable
in the interpreter. - bug fix: READ-SEQUENCE into displaced arrays with a non-zero offset now
writes to the right memory location. - bug fix: fix some erroneous file position calculations in the editcore
utility (exposed by a change in the libzstd compression implementation). - bug fix: do not break the build on STYLE-WARNINGs for earlier SBCL build
hosts. (lp#2064671, reported by Patrick Poitras) - bug fix: various bug fixes for ppc64le (lp#2074275, reported by Claude R. C.)
- bug fix: address a rounding error in the TAN type deriver which led to a
miscompile in cl-pdf. (lp#2077100, reported by Gian Pierro Carrubba) - bug fix: overoptimization of FIND with a :TEST of CHAR-EQUAL. (lp#2077539)
- optimization: detection of duplicate names in loaded code now scales
subquadratically. - optimization: switch from Floyd's to Brent's cycle detection for lists.
- optimization: EQUAL on lists should be faster.
- optimization: fewer filesystem operations are performed when working out
what to LOAD. - optimization: various microoptimizations on hash tables and
associated operations. - optimization: strings are now hashed using FNV-1A, replacing Bob Jenkins'
one-at-a-time hash. - optimization: fewer redundant validations of the sequence bounding indices
in POSITION on strings. - optimization: many improvements to type derivation on the arguments to and
results of standard functions - optimization: adding many (hundreds) methods to a generic function can be
done faster.
SBCL 2.4.7
- minor incompatible change: the compiler will emit optimization notes
related to complex type checks only at high SPEED optimization settings. - minor incompatible change: the GET-FOREGROUND symbol is now exported from
the SB-THREAD package. (thanks to Philipp Marek) - minor incompatible change: code objects are now printed with their ending
address as well as their start address. - platform support:
** fix occasional saved core corruption on Win32. (reported by Luís
Borges de Oliveira)
** address some crashing cases in arena support. (reported by Andreas
Franke)
** fix a hard-coded path tocp
. (thanks to Hraban Luyat)
** address relocation issues on PIC-flavoured arm64. (lp#2067153, thanks
to leafze)
** fix a crash in the arm64-dissassembler if a code component is missing.
** fix a crash on 32-bit musl libc systems. (reported by Will Sinatra)
** fix building with link-time optimization. (lp#2072800, reported by Eli
Schwartz)
** fix building with newer llvm. (lp#2071545, reported by Yan)
** mitigate the lack of gc-safety in SB-VM::REMOVE-STATIC-LINKS.
(lp#2045433) - bug fix: COMPILE installs its second argument as the value of its non-null
NAME argument, even if the second argument was already compiled.
(lp#2071324, reported by Tim Bradshaw) - bug fix: allow the hashing routines in sb-md5 to work on arrays with more
than 2^29 elements. - bug fix: allow READ-SEQUENCE and WRITE-SEQUENCE to read and write files
bigger than 4GB. - bug fix: READ-SEQUENCE returns the index of the first unmodified element
of its sequence. (reported by Janis Dzerins) - optimization: various improvements to floating point rounding routines.
- optimization: PHASE called on the result of COMPLEX now elides the
intermediate COMPLEX object. - optimization: the compiler is more aware of the types of COMPLEX, ATAN,
APPEND and NCONC.
SBCL 2.4.6
- enhancement: name conflicts resulting from colliding symbols in IMPORT and
USE-PACKAGE are resolved once for each name, rather than between pairwise
colliding symbols. - enhancement: calls to structure constructors with type mismatches in
default initforms cause compile-time warnings. - platform support:
** fix constant-folding of %log1p and %log2 on 32-bit x86.
** fix the encoding of popcntd on ppc64 - bug fix: EXPORT could be tricked into exporting two distinct symbols of
the same name from the same package. - bug fix: two-argument calls to LOG with arguments of different precision
do not lose accuracy through insufficiently-precise intermediate values. - bug fix: :NEWLINE options in DEFAULT-EXTERNAL-FORMAT are respected when
opening files. (reported by Marco Antoniotti) - bug fix: extend type declarations for the iteration variable of DOLIST
with NULL during the evaluation of the result clause. (lp#942237) - bug fix: #\uE0 (LATIN CAPITAL LETTER A WITH GRAVE) was incorrectly not
downcased with STRING-DOWNCASE. (lp#2067841, reported by Matt Kaufmann) - bug fix: backquoted lists as arguments to MAKE-ARRAY were miscompiled.
(lp#2069345, reported by Dan Bothell) - bug fix: resolve the circularity between the type system and the CLOS
metaobject protocol more robustly. (lp#2069502, reported by Jan Moringen) - bug fix: misplaced tilde in a logical pathname error message.
(lp#2069995, thanks to Marco Heisig) - optimization: various speedups to UTF-8 based external format streams and
other stream routines.
SBCL 2.4.5
- incompatible change: attempting to pass or return alien structs by value
now signals errors. Previously, such attempts would silently tend to
corrupt registers or memory; there is work in progress to allow such calls
conforming to the platform ABI. (thanks to Rongcui Dong) - minor incompatible change: function debug info is compressed only if the
system is compiled with libzstd, rather than falling back to a pure-lisp
compression implementation. - minor incompatible change: the compiler will warn in more cases when it
can detect incorrectly-typed arguments to FORMAT directives ~C and ~R - minor incompatible change: strings are converted to a more compact
representation if possible before being used as docstrings. - platform support:
** explicitly include stdlib.h where needed on OpenBSD. (thanks to
Sebastien Marie)
** make the editcore utility work on Windows. (thanks to Luís Borges de
Oliveira)
** fix memory initialization in RUN-PROGRAM on Windows.
** resolve a deadlock in %INTERRUPT-THREAD on Darwin. (lp#2062940,
reported by Yan)
** hang on startup under some terminal emulators on OS X 14.5.
(lp#2067313, reported by Richard M Kreuter) - enhancement: when (> debug 1), try to find source locations for code
expanded from macros that copy their input forms. - bug fix: the method-combination generic function caches were missing some
of the generic functions constructed during the PCL build itself.
(reported by Didier Verna) - bug fix: SXHASH on equal PATHNAME objects could return different values in
different cores. (reported by Luís Borges de Oliveira) - bug fix: spurious compiler warnings on SORT in some circumstances.
(lp#2065609, reported by William G Lederer) - optimization: faster bignum addition and negation on arm64, x86-64.
- optimization: faster type tests for (unsigned-byte X) for X being
multiples of the platform word size, on arm64, x86-64.
SBCL 2.4.4
- minor incompatible change: after-GC hooks are now called in the finalizer
thread on threaded builds. - platform support:
** on win32 on 64-bit systems, clear x87 state as well as SSE state after
an exception. (lp#2000435, reported by David Scherfgen) - enhancement: type assertions resulting from declarations involving variable
numbers of multiple values are now checked. - enhancement: support for memory allocation arenas is now available on the
arm64 platform. - enhancement: the cross-referencing facility is now able to handle
anonymous functions. - enhacnement: the SB-INTROSPECT contrib finds callees in methods of generic
functions. - bug fix: inconsistency in VOP definitions implementing DPB. (lp#2059842)
- bug fix: MASK-FIELD miscompilation. (lp#2059849)
- bug fix: caching a state-dependent type function leads to wrong type
inference further down the line. (lp#2059888) - bug fix: internal consistency violation after failing to apply a
MAKE-ARRAY transform. (lp#2060083) - bug fix: check the array index before constant-folding an array reference.
(lp#2060347) - bug fix: don't try to apply type constraints from SATISFIES
types. (lp#2060756) - bug fix: the JOIN-THREAD-PROBLEM function is now exported from the
SB-THREAD package. (lp#2063385, thanks to Benjamin Lee) - bug fix: compare-and-swap works as expected on SLOT-VALUE of
FUNCALLABLE-STANDARD-OBJECT instances. (reported by qhong) - bug fix: on arm64, and x86-64 with some non-default build options, integer
rounding functions treat minus zero more consistently. - bug fix: disassembly of stack allocation of vectors caused a crash.
(reported by bohonghuang) - bug fix: don't leak memory when decompressing a compressed core.
- optimization: the amount of space needed for debug-info is about 50% less,
leading to a total default image size reduction of more than 10%. - optimization: on arm64 and x86-64, encoding constants in machine code is
sometimes smaller. - optimization: on arm64 and x86-64, list accumulation is done with less
space overhead. - optimization: APPLY can apply a function to the REST of a &REST list
without additional consing.
SBCL 2.4.3
- enhancement: when dumping debug information to fasl files, the system
respects the SOURCE_DATE_EPOCH environment variable (if set) as the latest
timestamp to be used. - contributed module: the sb-perf contributed module, an interface
originally by Luke Gorrie to Linux's perf, is now included by default on
Linux. (Thanks to Philipp Marek) - platform support:
** on Linux and BSD variants, timezone querying is now faster.
** Arm64/Darwin: allow configuring the system with a relocatable static
space.
** PPC64: allow configuring the system with fasteval. - bug fix: erroneous transform of EQUALP on characters (lp#2055425)
- bug fix: float rounders (FTRUNCATE and related functions) handle minus
zero more consistently, returning minus zero as the primary value when
rounding to zero from a negative value. - bug fix: type checks for (VECTOR T) were giving the wrong answer for
vectors displayed to simple multi-dimensional arrays. (reported by
_death) - bug fix: do not transform away division by BIT when the BIT might still
include 0. (lp#2056184, reported by xizang) - bug fix: various errors related to imperfections in the perfect hash
generator. (lp#2055794, lp#2056341) - bug fix: respect declarations for symbol macros inside defmethod.
(lp#2056514, reported by Jonathan Braud) - bug fix: failure to set structure slots to floats on Arm64. (lp#2058148,
reported by Bibek Panthi) - optimization: improvements to the implementation of CASE.
- optimization: faster PARSE-INTEGER :radix 10/16 on word-sized integers.
- optimization: improvements to LOGBITP.
SBCL 2.4.2
- bug fix: restore the ability to inherit from both SEQUENCE and
SB-MOP:FUNCALLABLE-STANDARD-OBJECT. (lp#2050088, reported by Christophe
Junke) - bug fix: COERCE will not convert lambda forms to functions if given a type
naming a (strict) subclass of FUNCTION. - bug fix: LOG with a double-float and a ratio argument (in either order) do
not lose precision through a single-float intermediate argument. - bug fix: LOG to the base 2 of integer powers of 2 are more likely to get
the mathematically precise answer. - bug fix: LOG on ratios very near 1 with numerator or denominator being
near a power of 2 will use log1p and so will lose less precision. - bug fix: the utf-8 external format with Unix line-endings updates its
character size information when taking the fast path for a buffer of ascii
characters. (lp#2054169, reported by John Carroll) - bug fix: don't print the contents of a possibly no-longer-valid
dynamic-extent cons in PRINT-OBJECT method for THREAD objects.
(lp#2026195, reported by Jake Connor) - bug fix: place external entry points for functions consistently before any
local functions. (lp#2051169, reported by Fedorov Alexander) - bug fix: remove unactionable optimization notes for backquoted forms and
ordinary calls to APPEND at high speed. (lp#2051401, reported by Robert
Brown) - bug fix: infinite loop in COPY-SEQ on zero-length arrays of element-type
NIL. (lp#2051759, reported by Devon Sean McCullough) - bug fix: fix compilation of non-top-level struct constructors.
(lp#2052329, reported by Robert Poitras) - bug fixes in SB-SIMD:
** improve bounds checking in SB-SIMD. (lp#2012010, reported by Patrick
Poitras)
** fix SB-SIMD AVX f64.4-reverse (lp#2012986, thanks to Ari Projansky)
** fix SB-SIMD shuffles on AVX and SSE2 (lp#2012990, reported by Ari
Projansky)
** fix lifetimes in sse+xmm0 VOPs (lp#2015329, reported by Ari Projansky) - optimization: a number of internal tables, particularly those related to
Unicode support have been converted to use perfect hash mechanisms,
improving both speed and space. - optimization: FIND, POSITION, ASSOC and RASSOC with constant sequence
arguments containing symbols as keys are compiled to perfect hash lookups. - optimization: the compiler runs a jump-to-jump elimination pass on x86-64.
- system integrity: compiling the system itself on x86-64/linux now produces
bitwise-identical cross-compiled fasls whether the build host is cmucl,
ccl, clisp or sbcl itself.
SBCL 2.4.1
- enhancement: compact instance headers are partially supported with the
mark-region parallel garbage collector. - enhancement: functions with declared return types have their return values
type-checked in optimization regimes with high SAFETY and (DEBUG 3). - platform support:
** disable ASLR on FreeBSD. (lp#2047655, thanks to Konstantin Belousov)
** link to libpthread on FreeBSD. (thanks to Konstantin Belousov)
** restore build on 64-bit riscv. (lp#2034713, lp#2048869, reported by
Guillaume LE VAILLANT)
** restore build on 64-bit ppc.
** fix case in referring to a header file. (lp#2047726, thanks to Andrew Kravchuk)
** the fastrem-32 feature (for optimized computations of FLOOR) is now
available on all platforms. - bug fix: resweep moved lines after compaction in the mark-region parallel
garbage collector. - bug fix: infinite loops in the compiler on some constructs with SATISFIES
types. (lp#2047289, lp#2047706, lp#2049631) - optimization: various hash tables implementing part of the system
(packages, Unicode data tables) have been converted to use perfect hash
functions. - optimization: TYPECASE on structure class hierarchies is implemented using
a perfect hash. - optimization: eliminate bound checks with relative offsets. (lp#1830314)
- optimization: the compiler has more knowledge of how to optimize
DIGIT-CHAR. - optimization: the compiler can elide intermediates for some calls to
APPLY, CONCATENATE and MAKE-ARRAY with arguments that are freshly-consed
modifications of existing sequences. - optimization: (LOOP FOR X IN (REVERSE LIST) ...) is now faster and conses
less. - optimization: (LOOP ... APPEND ...) is more compact, and does less work if
appending NIL. - optimization: type tests of various array types are faster and shorter.
SBCL 2.4.0
- minor incompatible change:
*COMPILE-VERBOSE*
and*LOAD-VERBOSE*
are bound
to NIL when the system is started with the --script command-line argument.
(reported by Hraban Luyat, thanks to Nicolas Martyanoff) - minor incompatible change: when looking for its core file, the system
checks the validity of whatever is pointed to by /proc/self/exe, and
assesses argv[0] if /proc/self/exe is invalid. (thanks to Philipp Marek) - minor incompatible change: the system no longer provides type names on the
standard (CL) symbols ARRAY-RANK, ARRAY-TOTAL-SIZE, PATHNAME-HOST,
PATHNAME-TYPE, PATHNAME-DIRECTORY, FLOAT-RADIX or FLOAT-DIGITS.
(lp#2045559) - platform support
** the mark-region parallel garbage collector can be enabled on arm64.
(Thanks to Hayley Patton)
** fix build on modern FreeBSDs. (lp#2046966, thanks to David J. Flander) - bug fix: restore compiler type inference correctness on calls to REDUCE
with :INITIAL-VALUE but no :FROM-END. (lp#2044856, reported by Patrick
Poitras) - bug fix: compiler error when declaring SB-EXT:MUFFLE-CONDITIONS on an
unknown type. (lp#2045442) - bug fix: the disassembler provided non-pretty output for registers in some
cases. (lp#2046004, reported by Fedorov Alexander) - bug fix: the system is slightly less likely to exhaust the stack again
when reporting a control stack exhaustion error. - optimization: GC write barriers are eliminated in more cases.
- optimization: improved type derivation of iteration variables with mixed
types. - optimization: remove unused initial values from LET bindings, improving
register type selection. - optimization: lower EQUALP/EQUAL/EQL to EQL/EQ in FIND/MEMBER based on the
input types. - optimization: better type derivation for DPB, LOGIOR.
SBCL 2.3.11
- minor incompatible change: streams with an external-format specified with
:REPLACEMENT will use their replacement data once per stream unit that
causes a decoding error (rather than, in some cases, once for a sequence
of bytes none of which is a valid character start position for that
external-format). - minor incompatible change: external-format designators with unsupported or
unrecognized options now signal an error when used. - enhancement: During generic function dispatch, for a generic function
using standard- or short-method-combination, if there are no applicable
primary methods the system will call the generic function
SB-PCL:NO-PRIMARY-METHOD, whose default behaviour is to signal an error.
Users may define methods on this generic function. - enhancement: external formats for unibyte encodings and utf-8 now support
newline variants. - enhancement: character decoding and encoding errors signalled by stream or
octet functions now provide a USE-VALUE restart for handlers to provide
replacement input or output. - enhancement: READ-SEQUENCE and WRITE-SEQUENCE support user-defined
sequences; the default implementation proceeds element-by-element, reading
or writing single bytes or characters to or from the stream as
appropriate. - bug fix: OCTETS-TO-STRING using unibyte external formats with unallocated
codepoints (e.g. iso-8859-3) correctly signal or use replacements rather
than taking bits from the address of NIL and converting those bits to
a character. - bug fix: FILE-STRING-LENGTH now returns NIL if the input datum is not
encodable in the stream's external format. - bug fix: table-based multibyte external formats (EUC-JP, Shift-JIS, GBK)
now honour a replacement character (in the external format or through
restarts) when encoding to octets. - bug fix: converting from octets using the UCS-2, UCS-4 and UTF-32 external
formats no longer reads past the end of an octet array with a non-integral
number of two- or four-byte units. - bug fix: converting from octets using the UCS-2, UCS-4, UTF-16 or UTF-32
external formats now returns a simple string, as required by the type
declaration of OCTETS-TO-STRING. - bug fix: providing an invalid external format argument to OPEN or
WITH-OPEN-FILE (or the internal MAKE-FD-STREAM) no longer leaks a file
descriptor. - bug fix: SB-ROTATE-BYTE recognizes out-of-relevant-range BYTE
specifications for integers before attempting to cons up enormous bignums
for masking and shifting. (lp#2042937) - bug fix: fix type derivation on compiling SB-ROTATE-BYTE forms with
non-zero POSITION in the byte specifier. (lp#2042775) - bug fix: fix multiple assembler errors when compiling MAKE-ARRAY,
MAKE-STRING and similar with a large constant size. (lp#2037347, lp#2038744) - bug fix: fix internal error when compiling (SETF SBIT) with a large
constant index. (lp#2037415) - bug fix: fix internal compiler error on invalid lambda list parameters in
LABELS. (lp#2040334) - bug fix: fix internal compiler error when compiling some
infinitely-recursive LABELS forms. (lp#2042704) - bug fix: fix internal compiler error when attempting to inline a jump to a
label that has been deleted. (lp#2043262) - bug fix: FILL-POINTER should never be made to go negative. (lp#2042452)
- optimization: external formats with :REPLACEMENT no longer bind handlers
for coding errors around conversion functions, and so should cons less and
be faster. - optimization: when the :EXTERNAL-FORMAT argument to STRING-TO-OCTETS or
OCTETS-TO-STRING is a compile-time constant, the external format is
resolved at load time rather than on each call. - optimization: the compiler is able to constrain the types of inputs to
some functions given a derived or asserted type of the function's return
value. - optimization: the compiler performs fewer redundant type checks in ASSOC,
GETF and similar functions.