minor incompatible change: MACROLET macro functions are now compiled with
(SPEED 1), leading to fewer efficiency notes being emitted when compiled
in otherwise high-SPEED environments.
minor incompatible change: when coalescing list data, the file compiler
respects substructure equality more accurately, with the side-effect of
coalescing along CDR chains as well as CARs. (lp#2025086)
minor incompatible change: FUNCTION type declarations for local variables
generate assertions around their use when called.
platform support
** on OpenBSD, the regression test suite expectations have been updated.
(lp#2026809, thanks to Sebastien Marie)
** on OpenBSD, the data limit is now 1GB. (lp#2027536, thanks to
Sebastien Marie)
** on Darwin with the SB-FUTEX feature, do not use unpaired
mach_thread_self() syscalls, avoiding resource leaks when creating
threads.
** on 64-bit RISCV, add support for some REM-by-multiplication
optimizations.
** on Windows, work around a C compiler bug relating to SYSV_ABI.
bug fix: FILE-POSITION on string output streams no longer crashes or
causes arbitrary memory overwrites. (lp#1839040)
bug fix: the compiler no longer constant-folds POSITION to NIL if the
START or END arguments are not valid.
optimization: the compiler derives types of &KEY arguments in local calls.
(lp#655562)
optimization: type tests of values of known union type can be faster if
the type being tested for has a non-trivial intersection with the known
type.
optimization: the low-level implementation of NUMBERP, REALP and RATIONALP
has been improved on x86-64 and arm64.
optimization: the compiler removes known-NIL arguments from calls to
APPEND and NCONC, and empty sequences from calls to CONCATENATE.
optimization: checks for symbols being bindable are now memoized, speeding
up compiled uses of PROGV.
optimization: SLOT-VALUE on STRUCTURE-OBJECTs with non-constant slot-name
argument is faster.
sbcl-2.3.6
11 months ago
platform support:
** restore building contribs on riscv; (lp#2002930)
** shorter constant-loading sequences on riscv;
** on OpenBSD, map the stack without executable permission (thanks to
Sébastien Marie)
** Restore OpenBSD/arm64 for OpenBSD 7.3 (lp#2024003, reported by Robert
Palm)
bug fix: AREF on multidimensional arrays with the wrong number of indices
now signals an error. (lp#2022327, reported by EU)
bug fix: the nature of NIL as both STRING and SEQUENCE is correctly handled
in the compiler's handling of string functions. (lp#2023118, reported by
Patrick Poitras)
bug fix: the sb-bsd-sockets tests no longer fail on systems configured
without IPv6. (reported by Will Senn)
bug fix: the compiler no longer transforms into incompletely-known functions
(lp#1824351)
optimization: better (the word-sized-type (ASH word-sized word-sized))
when the result can overflow. For arm64 and x86-64.
optimization: better unoptimized calls to CEILING, FLOOR.
optimization: functions that involve coercing floats now cons less.
For arm64 and x86-64.
optimization: array displacement to simple arrays is slightly faster.
(reported by Shubhamkar Ayare)
sbcl-2.3.5
1 year ago
enhancement: Unicode support has been updated to support version 15.0.0 of
the Unicode standard, including addition of characters and their collation
keys, and refinements to grapheme-, word- and line-breaking algorithms.
new contrib module: an interface to perf, a performance-analysing tool for
Linux. (thanks to Luke Gorrie and Philipp Marek)
platform support:
** on x86-64, prefer using the LEAVE instruction rather than MOV/POP at
function epilogue to restore RSP/RBP.
** support SB-FUTEX on OpenBSD. (thanks to Elijah Stone)
** support SB-FUTEX on Darwin/arm64. (thanks to Elijah Stone)
** fix compilation with clang on Windows. (lp#2018601, thanks to Andrew)
bug fix: inspecting objects with unbound slots produces output that is less
confusable with the string "unbound". (thanks to Nicolas Martyanoff)
optimization: make TN-REFs doubly-linked, allowing faster deletion.
(lp#2018124, reported by Matt Kaufmann)
optimization: MAPCAN/MAPCON are less accidentally quadratic. (thanks to
Gleefre)
optimization: improved arithmetic operations in the form of
(the word-sized-type (-+* word-sized word-sized)) when the result can
overflow. For arm64 and x86-64.
sbcl-2.3.4
1 year ago
enhancement: attempts to call non-callable objects can now provide
USE-VALUE restarts on x86-64 and arm64.
bug fix: ioctl() (both in SBCL's internals and through SB-POSIX) was
broken on ARM64/Darwin. (reported by fiddlerwoaroof)
platform support:
** support for cross-compiling the system to Android has been added;
(thanks to Gleefre)
** include likely absolute paths for gmp and mpfr on ARM64/Darwin; (thanks
to Elias Lawson-Fox)
** include another absolute path for mpfr on Windows; (thanks to Ari
Projansky)
** the PROMISE-COMPILE feature from the SB-CONCURRENCY contrib is now
available on all threaded platforms;
optimization: VALUES-LIST performs less redundant work on x86-64 and
ARM64.
sbcl-2.3.3
1 year ago
enhancement: LET-bound anonymous closures declared dynamic extent can now
be stack allocated, just like closures bound with FLET or
LABELS. Otherwise-inaccessible closure subparts of objects declared
dynamic extent can now also be stack allocated
optimization: many standard CL functions which take functional arguments
will automatically stack allocate any downward funarg closures.
optimization: better arithmetic between signed and unsigned words on arm64.
optimization: reduce consing when doing arithmetic resulting in small (3
words or fewer) bignums.
bug fix: miscompilation of some additions of signed and unsigned words on
x86-64. (lp#2008673)
bug fix: loading the SB-SIMPLE-STREAMS contrib no longer incompatibly
overwrites CL:OPEN's function type. (lp#2008811)
bug fix: implement the special-case automatic function definition for
PCL's slot accessor functions in the SB-EVAL interpreter. (lp#2008922,
reported by Jonathan Braud)
bug fix: allow the build to succeed under SBCLs older than 2.0.0 in the
event that the host emits STYLE-WARNINGs while compiling the
cross-compiler. (lp#2009493, reported by Kirill)
bug fix: restore compilation on ARM64 with OpenBSD. (lp#2009585, reported
by okflo)
bug fix: compiling a HANDLER-BIND with an function undefined at
compile-time produces a compile-time STYLE-WARNING. (lp2010176)
bug fix: support files bigger than 4GB on ARM64/Linux, *BSD. (lp#2011453,
reported by Yan)
bug fix: it is now possible to run sb-simd tests on systems without AVX2.
(lp#2011923, thanks to Sergio Durigan Junior)
bug fix: miscompilation of some conditional moves. (lp#2012312, reported
by Patrick Poitras)
bug fix: SB-GMP no longer signals a TYPE-ERROR when raising a ratio base
to a negative integer exponent. (lp#2012577, thanks to Ari Projansky)
bug fix: warn the user when they have declared a structure or
standard-object slot of :TYPE NIL.
sbcl-2.3.2
1 year ago
incompatible change: the :ORDER long-form-option in
DEFINE-METHOD-COMBINATION accepts NIL as well as :MOST-SPECIFIC-FIRST and
:MOST-SPECIFIC-LAST. A value of NIL implies no particular ordering of the
methods, and so disables checks of multiple methods with the same
specializers in that group.
bug fix: evaluate the :ORDER long-form-option in DEFINE-METHOD-COMBINATION
properly, avoiding an infinite loop in DEFINE-METHOD-COMBINATION if the
:ORDER argument leads to a cycle of compile-time constants.
bug fix: better compile time on chains of conditionals which have gaps in
integer ranges. (lp#1992349, reported by Mykola Matvyeyev)
bug fix: type derivation of VECTOR-LENGTH leading to wrong type handling
for MEMBER types involving vectors. (lp#2004094)
bug fix: equality constraint propagation in the presence of constants
could cause code to be not deleted when it should have been. (lp#2006487)
bug fix: better compile time when the compiler needs to perform checks to
see if fixnum or word computations result in overflow. (lp#2007741)
bug fix: miscompilation on ARM64. (lp#2007758, reported by Stephen
Westfold)
optimization: on x86-64, use SIMD instructions for UTF-8 buffer decoding;
various type-driven optimizations:
** comparisons of rationals with constant ratios or floats;
** comparisons of unsigned-bytes with fixnums;
** comparisons of fixnums with constant powers of two;
** equality of numbers with integers too large to be exactly represented
as floats;
** arithmetic operations on a mixture of signed and unsigned word-sized
quantities;
sbcl-2.3.1
1 year ago
sb-graph has been removed. To visualize IR1 in sbcl, it is recommended to
use the function IR1-TO-DOT (which only survives the final tree shake if
the feature :sb-devel is enabled at build time).
platform support:
** implement some peephole optimizations on arm64;
** support float traps on arm64;
bug fix: package-manipulation operations within fasls work as expected in
the absence of explicit block compilation requests. (lp#2000004, reported
by Shubhamkar Ayare)
bug fix: incorrect type simplification of certain CONS types.
(lp#1999352, reported by Paul Dietz)
bug fix: method combination group selection interprets the symbol * as
a wildcard element within proper qualifier-pattern lists. (reported by
Maciej Katafiasz and by Daniel Kochmański)
bug fix: &WHOLE can be used without error in define-method-combination
arguments lambda lists. (reported by Daniel Kochmański)
bug fix: bogus debug variables generated for closure variables whose value
cell had not yet been allocated could cause segfaults and gc crashes
(reported by _death on #sbcl)
bug fix: handling of float NaNs in two-arg numeric comparison functions is
more consistent with the required semantics in IEEE 754 when comparing
with rationals.
bug fix: ensure that the hide-packages test passes even when the system
retains internal cross-reference metadata. (lp#2002896, reported by 3b)
bug fix: don't trip an internal assertion in weak hash tables with
finalizers. (lp#1998064)
optimization: load-time only code is no longer retained at runtime when
functions close over top level bindings.
optimization: GO and RETURN-FROM now elide out-of-extent tag checks when
the compiler can prove it's safe even on high safety.
optimization: addition of a fixnum to a bignum generates less garbage.
optimization: in many cases, type inference and code generation is
improved for and around numerical comparison functions.
sbcl-2.3.0
1 year ago
enhancement: support for SLOT-VALUE and friends has been extended to
structure and condition instances.
enhancement: the error message for invalid array index conditions is clearer.
(lp#1999337, reported by Hadrien Lacour)
minor incompatible change: COMPILED-FUNCTION-P now returns false for
generic functions.
minor incompatible change: the compiler emit STYLE-WARNING conditions for
FIND and POSITION where the item sought can never be present in the
sequence.
optimization: support computing the remainder of a constant division by
multiplication.
optimization: faster out of line float truncation routines.
optimization: faster RATIONAL on 64-bit platforms.
optimization: more compact testing of widetags on x86-64 and arm64.
bug fix: type intersections of RATIONAL ranges with (NOT INTEGER) are
computed more consistently. (lp#1998008)
bug fix: fix miscompilation of integer/fixnum comparisons where both
arguments are on the stack.
sbcl-2.2.11
1 year ago
platform support:
** arm64: allow the use of CLISP as a build host. (lp#1996942, reported
by Andrew Patterson)
enhancement: improvements to constraint propagation around comparison
functions.
optimization: conditional move VOPs can work on boxed values and
produce less consing.
optimization: NUNION and UNION are generally faster.
bug fix: slot-makunbound-using-class can be redefined without redefining
the other slot methods. (lp#1956621, reported by Michał Herda)
bug fix: GETHASH on a table created without ":synchronized t" when run
concurrently in multiple threads could have returned incorrect results.
bug fix: build of contributed modules assumed that 'cat' was always
in /bin/cat on POSIX systems. (lp#1995224, reported by Kasper Gałkowski)
bug fix: INSPECT on an (ARRAY NIL) no longer hangs. (lp#1995639, reported
by Michał Herda)
bug fix: Fix miscompilation of FILE-STRING-LENGTH when the first argument
has a known FILE-STREAM type. (lp#1995881)
sbcl-2.2.10
1 year ago
platform support:
** win32: improved handling of stack overflow exceptions. (lp#1302866)
** Mac OS X: enforce stronger alignment when building the runtime.
(lp#1991485, reported by Yan)
** arm64: support for building the system without the sb-unicode feature
(i.e. with 8-bit characters) is restored.
bug fix: do not elide the GC store barrier in closures. (lp#1982608,
reported by Andrew Berkley)
bug fix: make sb-introspect tests pass when the system is built without
support for source locations. (lp#1635349, reported by Tomas Hlavaty)
bug fix: erroneous assumption that the format-control of a simple condition
was a string. (lp#1803727)
bug fix: compiler consistency failure in modular arithmetic widening.
(lp#1990715)
bug fix: provide a stub for a helper function (lp#1992316)