changes in sbcl-1.0.54 relative to sbcl-1.0.53:
* 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
** 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
** on GENCGC targets, nursery and generation sizes now default to 5% of
** 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.
** 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. (lp#805100)
* enhancement: on win32, ABS of complex floats guards better against
* enhancement: RUN-PROGRAM now distinguishes exec() failing from child
process exiting with code 1. (lp#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, lp#894498)
* bug fix: on 64-bit targets, atomic-incf/aref does index computation
correctly, even on wide-fixnum builds. (lp#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. (lp#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. (lp#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.