News
New SBCL versions are usually released at the end of each
month: check the Sourceforge File List to see the current version. The new features of the two most recent SBCL releases are listed below.
Please see the complete news page for details on all historical SBCL releases.
New in version 1.0.55
Back to top- enhancements to building SBCL using make.sh:
- --fancy can be specified to enable all supported feature enhancements.
- --with-<feature> and --without-<feature> can be used to specify
which features to build with.
- --arch option can be used to specify the architecture to build for.
(Mainly useful for building 32-bit SBCL's on x86-64 hosts, not
full-blows cross-compilation.)
- enhancement: extended package prefix syntax <pkgname>::<form-in-package>
which allows specifying name of the default interning package for the
whole form.
- enhancement: when *READ-EVAL* is true, arrays with element type other than
T can be printed readably using #.-based syntax. (Thanks to Robert Brown)
- enhancement: MAKE-ALIEN signals a storage-condition instead of returning a
null alien when malloc() fails. (#891268)
- enhancement: SB-EXT:PRINT-UNREADABLY restart for PRINT-NOT-READABLE
conditions can be conveniently accessed through function with the same
name, analogously to CONTINUE.
- enhancement: SB-EXT:*SUPPRESS-PRINT-ERRORS* can be used to suppress errors
from the printer by type, causing an error marker to be printed instead.
(Thanks to Attila Lendvai)
- enhancement: BACKTRACE and DESCRIBE now bind *PRINT-CIRCLE* to T, and
generally behave better when errors occur during printing.
- enhancement: the test runner now takes a --report-skipped-tests argument
to report the individual tests skipped as well as the number of skipped
tests.
- enhancement: undefined functions now appear in backtraces as ("undefined
function") instead of ("bogus stack frame") on x86oids.
- enhancement: detected deadlocks no longer cause stderr to be spammed, and
deadlock errors are reported in an easier-to-decipher manner.
- enhancement: DESCRIBE on type designators reports the expansion in more
cases.
- enhancement: SBCL now provides either an explicit :BIG-ENDIAN or
:LITTLE-ENDIAN in *FEATURES*, instead of :BIG-ENDIAN being implied by lack
of the :LITTLE-ENDIAN feature. (Thanks to Luís Oliveira, #901661)
- enhancement: better disassembly of segment-prefixes on x86 and other
instruction prefixes (e.g. LOCK) on x86 and x86-64.
- optimization: FIND and POSITION on bit-vectors are orders of magnitude
faster (assuming KEY and TEST are not used, or are sufficiently trivial.)
- optimization: SUBSEQ on vectors of unknown element type is substantially
faster. (#902537)
- optimization: specialized arrays with non-zero :INITIAL-ELEMENT can
be stack-allocated. (#902351)
- optimization: the compiler is smarter about representation selection for
floating point constants used in full calls.
- optimization: the compiler no longer refuses to coerce large fixnums to
single floats inline, except on x86 where this limitation is still
necessary.
- bug fix: deadlock detection could report the same deadlock twice, for
two different threads. Now a single deadlock is reported exactly once.
- bug fix: interval-arithmetic division during type derivation did not
account for signed zeros.
- bug fix: compiler error when typechecking a call to a function with
non-constant keyword arguments.
- bug fix: misoptimization of TRUNCATE causing erratic behaviour.
- bug fix: condition slot accessors no longer cause undefined function
style-warnings when used in the :REPORT clause of the DEFINE-CONDITION
form that defines them. (#896379)
- bug fix: DEFGENERIC warns about unsupported declarations, as specified
by ANSI. (#894202)
- bug fix: SUBTYPEP tests involving forward-referenced classes no longer
bogusly report NIL, T.
- bug fix: bogus style-warnings for DEFMETHOD forms that both declared some
required arguments ignored and performed assignments to others.
(#898331)
- bug fix: *EVALUATOR-MODE* :COMPILE treated (LET () ...) identically
to (LOCALLY ...) leading to internally inconsistent toplevel-formness.
- bug fix: non-toplevel DEFSTRUCT signaled a style warning for unknown type.
- bug fix: redefining a function whose previous definition contained an
unknown type no longer causes a style-warning. (#806243)
- bug fix: undefined functions now appear in backtraces as ("undefined
function") instead of ("bogus stack frame") on non-x86oids.
- bug fix: backtraces are no longer cut off at ("undefined function") when
called under certain circumstances (involving a caller-allocated stack
frame) on PPC.
- bug fix: RUN-PROGRAM leaked a file-descriptor per call on non-Windows
systems. (regression since 1.0.53)
- bug fix: GC deadlocks from dladdr() on certain platforms.
- bug fix: broken standard streams no longer automatically cause recursive
errors on debugger entry.
- bug fix: build ignored --dynamic-space-size=<size> argument to make.sh
(regression since 1.0.53)
- bug fix: attempts to stack allocate a required argument to a function with
an external entry point caused compiler-errors.
- bug fix: compiler notes for failed stack allocation for a function argument
no longer claim to be unable to stack allocate the function.
- bug fix: COERCE now signals a type-error on several coercions to
subtypes of CHARACTER that are forbidden according to ANSI. (#841312)
- bug fix: missing failure-to-stack-allocate compiler notes for some
forms of MAKE-ARRAY with dynamic-extent. (#902351)
- bug fix: some of the compile-time side-effects of DEFCLASS were not caught
by package locks.
New in version 1.0.54
Back to top- minor incompatible changes:
- RENAME-FILE on a symbolic links used to rename the linked-to file
instead of the link.
- DELETE-DIRECTORY on symbolic link to a directory used to delete the
directory, but now signal an error instead. Use TRUENAME to resolve the
pathname if you wish to delete the linked directory, and DELETE-FILE if
you wish to delete the
- The internal SB-THREAD::SPINLOCK API has been deprecated, and using
symbols associated with it will trigger a compile-time warning.
- thread-related enhancements:
(This work has been funded by the SBCL Threading 2011 IndieGoGo campaign.
Many thanks to generous donors!)
- Threading is now more reliable on non-Linux platforms. We still don't
consider threads on non-Linux platforms good enough to enable them by
default, but they're in a clearly better shape now.
- Deadlines supported now on all platforms.
- All blocking functions in the threading API now have a :TIMEOUT
argument.
- Semaphore notification objects have been added to SB-THREAD.
- SB-CONCURRENCY contrib now includes Allegro-style GATE objects.
- SB-EXT:COMPARE-AND-SWAP has been extended to support SLOT-VALUE,
STANDARD-INSTANCE-ACCESS, and FUNCALLABLE-STANDARD-INSTANCE-ACCESS.
- Users can now defined new places usable with SB-EXT:COMPARE-AND-SWAP
using an API anologous to defining new SETFable places.
- GC-related enhancements and bug fixes:
- --dynamic-space-size and --control-stack-size now understand Kb, Mb,
and Gb suffixes. Default is megabytes as before.
- on GENCGC targets, the default dynamic space size is now 512Mb for
32-bit systems, and 1Gb for 64-bit systems. (OpenBSD/x86-64 is the only
exception, defaulting to mere 444Mb to fit under default ulimits.) The
new defaults are in place to prevent hitting swap on low-end systems.
Use build-time option --dynamic-space-size to build an SBCL with
another default, or the runtime option to adjust the size at startup: a
good size is at most equal to the amount of physical memory the system
has.
- on GENCGC targets, nursery and generation sizes now default to 5% of
dynamic-space size.
- on GENCGC targets, SB-KERNEL:MAKE-LISP-OBJ no longer categorically
refuses to create SIMPLE-FUN objects.
- on 64-bit GENCGC targets, setting the nursery size above 4Gb now works.
(#870868)
- on CHENEYGC targets, SB-KERNEL:MAKE-LISP-OBJ now does the same
validation of pointer objects as GENCGC does, instead of a
comparatively weak bounds-check against the heap spaces.
- SB-BSD-SOCKETS bug fixes:
- GET-PROTOCOL-BY-NAME had a significant memory leak.
- GET-HOST-BY-NAME and GET-HOST-BY-ADDRESS small amounts of memory on
systems with getaddrinfo().
- GET-HOST-BY-NAME and GET-HOST-BY-ADDRESS weren't thread or interrupt
safe outside systems with getaddrinfo().
- enhancement: ASDF has been updated 2.019.
- enhancement: special-case TCO prevention for functions which never return
extended to untrusted types, keeping one more frame's worth of debug
information around in many cases.
- enhancement: debug-names of anonymous and local function are more
descriptive. Affects backtraces and SB-SPROF results. (#805100)
- enhancement: on win32, ABS of complex floats guards better against
overflows. (#888410)
- enhancement: RUN-PROGRAM now distinguishes exec() failing from child
process exiting with code 1. (#676987)
- enhancement: convenience function SET-SBCL-SOURCE-LOCATION for informing
the system where on the filesystem the SBCL sources themselves are
located. (Thanks to Zach Beane)
- enhancement: the compiler is now able to derive tighter bounds for
floating point numbers in some cases. (Thanks to Lutz Euler, #894498)
- bug fix: on 64-bit targets, atomic-incf/aref does index computation
correctly, even on wide-fixnum builds. (#887220)
- bug fix: (DIRECTORY "foo/*/*.*") did not follow symlinks in foo/ that
resolved to directories.
- bug fix: type mismatch when assigning to lexical variables no longer
result in fasl-dumping internal type objects. (#890750)
- bug fix: type mismatch on (SETF AREF) and function return values no
longer result in fasl-dumping internal type objects.
- bug fix: With several combinations of argument types, for example (EXPT
<integer> <(complex double)>), EXPT now uses double-precision throughout
instead of partially calculating only to single-precision. (#741564;
thanks to Lutz Euler)
- bug fix: SYMBOL-VALUE-IN-THREAD is no longer able to construct bogus
objects when interrupted by GC on PPC.
Older SBCL releases