;;;; -*- coding: utf-8; fill-column: 78 -*-
-changes relative to sbcl-1.0.53:
+changes relative to sbcl-1.1.0:
+ * enhancement: WITH-COMPILATION-UNIT no longer grabs the world-lock. (COMPILE and
+ COMPILE-FILE still do.)
+ * bug fix: SB-CLTL2:MACROEXPAND-ALL correctly handles shadowing of symbol-macros
+ by lexical bindings.
+ * bug fix: stack allocation was prevented by high DEBUG declaration in several
+ cases.
+
+changes in sbcl-1.1.0 relative to sbcl-1.0.58:
+ * enhancement: New variable, sb-ext:*disassemble-annotate* for controlling
+ source annotation of DISASSEMBLE output. Defaults to T.
+ * enhancement: TIMEOUT arguments added to WITH-MUTEX and WITH-RECURSIVE-LOCK, and
+ WAIT-P argument added to WITH-RECURSIVE-LOCK.
+ * enhancement: SB-EXT:ATOMIC-PUSH and SB-EXT:ATOMIC-POP allow atomic operations
+ on list heads.
+ * enhancement: Optional features (not enabled by default) allow the
+ use of signals for inter-thread synchronization to be reduced on certain
+ supported platforms (currently Linux, Solaris, and FreeBSD on x86 and
+ x86-64). Set (and :sb-thread :sb-safepoint :sb-thruption :sb-wtimer)
+ to test these experimental features. Known remaining bugs include minor
+ thread safety issues, less timely freeing of memory by GC, and certain
+ (not yet optimally low) runtime overhead. Thanks to Anton Kovalenko.
+ * optimization: CL:SORT and CL:STABLE-SORT of lists are faster and use fewer
+ comparisons, particularly on almost-sorted inputs.
+ * bug fix: Reading floats with large exponents no longer takes too much time
+ before reporting that the exponent is too large.
+ * bug fix: SB-BSD-SOCKETS:SOCKET-RECEIVE with a UDP socket now works
+ correctly when the received datagram is larger than the provided buffer.
+ (lp#1023438, thanks to Robert Uhl)
+ * bug fix: SB-EXT:GET-CAS-EXPANSION returned a bogus read-form when given
+ a SYMBOL-VALUE form with a constant symbol argument.
+ * bug fix: SB-EXT:GET-CAS-EXPANSION signaled an error when a macro expanding
+ into a DEFCAS defined place was used as the place.
+ * bug fix: FIND and POSITION signaled a type-error when non-bits where looked
+ for from bit-vectors.
+ * bug fix: a race condition around thread creation could (in SBCL 1.0.57)
+ lead to internal errors or crashes (lp#1058799).
+ * documentation: a section on random number generation has been added to the
+ manual. (lp#656839)
+
+changes in sbcl-1.0.58 relative to sbcl-1.0.57:
+ * enhancement: implicit generic function warnings now specify the package
+ in which the new generic function is being created.
+ * enhancement: SB-EXT:ATOMIC-UPDATE makes it easy to perform non-destructive
+ updates of CAS-able places (similar to Clojure's swap!).
+ * enhancement: run-program no longer decodes and re-encodes environment when
+ :environment argument is not provided. (lp#985904)
+ * enhancement: errors during compiler-macro expansion no longer cause
+ runtime errors, only a compile-time warning, otherwise behaving as if
+ the compiler macro had declined to expand.
+ * optimization: On x86-64, code alignment of block headers is done with
+ multi-byte NOPs now instead of repetitions of the single-byte NOP.
+ * optimization: MAP-INTO is substantially faster when the target sequence is
+ of unknown type; mapping into lists is no longer O(N^2). (lp#1001043,
+ thanks to James M. Lawrence)
+ * optimization: the compiler no longer heap-conses to check exits in cases
+ where the exit function is dynamic extent, or when it can prove the exit
+ function cannot escape. (lp#1002534)
+ * optimization: SB-SEQUENCE:DOSEQUENCE is faster on vectors of unknown
+ element type, and vectors that aren't SIMPLE-ARRAYs.
+ * optimization: CL:SORT and CL:STABLE-SORT are more efficient in execution
+ speed (around 1/3 the time in some cases), and a little better in terms of
+ comparison calls. (Thanks to Takeru Ohta)
+ * bug fix: On SPARC, a limitation on the number of code constants emittable
+ by the compiler has been lifted, allowing certain long functions to
+ compiled and assembled which had previously been unsupported; fixes
+ cl-bench on this ISA (lp#1008996).
+ * bug fix: potential for infinite recursion during compilation of CLOS slot
+ typechecks when dependency graph had loops. (lp#1001799)
+ * bug fix: error forms reported with some program-errors were not escaped
+ properly.
+ * bug fix: functions from EVAL are now on more equal footing with functions
+ from COMPILE. (lp#1000783, lp#851170, lp#922408)
+ * bug fix: ENSURE-GENERIC-METHOD-COMBINATION accepts method combination
+ objects as its :METHOD-COMBINATION argument, not just lists designating
+ method combinations. (lp#936513)
+ * bug fix: run-program no longer unconditionally uses /tmp/ for temporary
+ files. (lp#968837).
+ * bug fix: restore build on solaris/sparc. (lp#1008506)
+ * bug fix: an issue with LDB in the PowerPC backend has been resolved;
+ this fixes an issue found with cl-postgres (thanks to Tomas Hlavaty).
+ * bug fix: compiler-macro lambda-lists specifying non-keyword symbols
+ as keyword arguments no longer accidentally match unevaluated symbols
+ against them.
+ * bug fix: FORMAT used to loop infinitely in some cases when a COLINC
+ parameter was zero, now it signals an error. (lp#905817, fixed since
+ 1.0.56.19)
+ * bug fix: run-program with :pty t no longer makes the pty as the process's
+ controling terminal.
+ * bug fix: spawning threads on OS X 10.8 no longer crashes the process
+ (lp#1012811).
+
+changes in sbcl-1.0.57 relative to sbcl-1.0.56:
+ * RANDOM enhancements and bug fixes:
+ ** bug fix: the range and distribution of random integers could be
+ catastrophically wrong when the compiler derived the type of its
+ argument as a disjoint set of small integers.
+ ** bug fix: the distribution of random integers is now completely
+ uniform even when the specified limit is not a power of two.
+ (Previously some values could be about 0.1 % more probable than
+ others in the worst case.) (lp#309467)
+ ** RANDOM on large integer arguments is generally faster and conses
+ less than before; this is visible for fixnums above a length of
+ about 24 bits, but extremely so for bignums: the old implementation
+ used time and space quadratical in the size of the argument there,
+ the new one is linear.
+ * enhancement: redesigned protocol for quitting SBCL. SB-EXT:EXIT is the new
+ main entry point, SB-EXT:QUIT is deprecated.
+ * enhancement: additions to the SB-THREAD API: RETURN-FROM-THREAD,
+ ABORT-THREAD, MAIN-THREAD-P, and MAIN-THREAD.
+ * enhancement: FASL loading no longer grabs the world-lock.
+ * enhancement: GENCGC reclaims space more aggressively when objects being
+ allocated are a large fraction of the total available heap space.
+ (lp#936304)
+ * enhancement: backtraces show the correct number of arguments for frames
+ called with too many arguments.
+ * enhancement: support for abort(3), exit(3), and _exit(2) has been added to
+ SB-POSIX.
+ * enhancement: ASDF has been updated 2.21.
+ * optimization: fewer uses of full calls to signed modular functions.
+ (lp#903821)
+ * optimization: typechecking alien values is typically 5 x faster.
+ * optimization: FDEFINITION, SYMBOL-FUNCTION, MACRO-FUNCTION, and FBOUNDP
+ are 20% faster.
+ * bug fix: file compilation performance issues when dumping subtypes
+ of CHARACTER (lp#994487)
+ * bug fix: fixed disassembly of some SSE instructions on x86-64.
+ * bug fix: SB-SIMPLE-STREAMS signals an error for bogus :CLASS arguments in
+ OPEN. (lp#969352, thanks to Kambiz Darabi)
+ * bug fix: CASE normal-clauses do not allow T and OTHERWISE as keys.
+ (lp#959687)
+ * bug fix: (SETF (FIND-CLASS X) NIL) removed proper name of the underlying
+ classoid even if X was not the proper name of the class. (lp#941102)
+ * bug fix: declaration leakage between lexical environments due to careless
+ use of NCONC in MAKE-LEXENV. (lp#924276)
+ * bug fix: ENSURE-DIRECTORIES-EXIST now works when
+ *default-pathname-defaults* contains NAME or TYPE components.
+ * bug fix: PPRINT couldn't print improper lists with CARs being some symbols
+ from CL package, e.g. (loop . 10).
+ * bug fix: run-program with existent or non-existent files for :output or
+ :input when :if-output-exists or :if-input-does-not-exist are NIL properly
+ returns NIL instead of signalling an obscure error.
+ * bug fix: fix miscompilation of some logand forms with large constant
+ arguments. (lp#974406)
+ * bug fix: account for funcallable-instance objects properly in ROOM.
+ * bug fix: incorrect octets reported for c-string decoding errors.
+ (lp#985505)
+ * bug fix: miscompilation of LDB on the PowerPC platform. (thanks to Bruce
+ O'Neel)
+ * bug fix: better input error reporting for COMPILE-FILE. (lp#493380)
+ * bug fix: default size of non-nursery generations has been shrunk on GENCGC,
+ allowing faster release of memory back to the OS. (lp#991293)
+ * bug fix: WITH-DEADLINE (:SECONDS NIL :OVERRIDE T) now drops any
+ existing deadline for the dynamic scope of its body.
+ * bug fix: compiler-internal interval arithmetic needed to be more
+ conservative about open intervals when operated on by monotonic but not
+ strictly-monotonic functions. (lp#975528)
+ * bug fix: copy-tree caused stack exhaustion on long linear lists, and now
+ it's also slightly faster. (lp#998926)
+ * bug fix: better error messages for malformed declarations.
+ (lp#1000239)
+ * bug fix: define-condition didn't return the name of the defined condition.
+ * documentation:
+ ** improved docstrings: REPLACE (lp#965592)
+
+changes in sbcl-1.0.56 relative to sbcl-1.0.55:
+ * bug fix: fix copy-structure. When copying from stack to heap, garbage
+ could end up in the heap making GC unhappy.
+ (Thanks to James Knight, lp#911027)
+ * enhancements
+ ** SBCL can now be built using Clang.
+ ** ASDF has been updated 2.20.
+ * bug fix: compiler errors when weakening hairy integer types. (lp#913232)
+ * bug fix: don't complain about a too-hairy lexical environment for inlining
+ when the function has never been requested for inlining. (lp#963530)
+
+changes in sbcl-1.0.55 relative to sbcl-1.0.54:
+ * 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. (lp#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, lp#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. (lp#902537)
+ * optimization: specialized arrays with non-zero :INITIAL-ELEMENT can
+ be stack-allocated. (lp#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.
+ * optimization: truncation operations on integers with constant divisor
+ arguments 1 and -1 are optimized away.
+ * 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. (lp#896379)
+ * bug fix: DEFGENERIC warns about unsupported declarations, as specified
+ by ANSI. (lp#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.
+ (lp#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. (lp#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. (lp#841312)
+ * bug fix: missing failure-to-stack-allocate compiler notes for some
+ forms of MAKE-ARRAY with dynamic-extent. (lp#902351)
+ * bug fix: some of the compile-time side-effects of DEFCLASS were not caught
+ by package locks.
+ * bug fix: Proper handling of --dynamic-space-size option on 32 bit platforms.
+
+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
+ 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.
+ (lp#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. (lp#805100)
+ * enhancement: on win32, ABS of complex floats guards better against
+ overflows. (lp#888410)
+ * 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.
changes in sbcl-1.0.53 relative to sbcl-1.0.52:
* enhancement: on 64-bit targets, in src/compiler/generic/early-vm.lisp,