mirror of
git://git.code.sf.net/p/sbcl/sbcl
synced 2026-09-10 07:26:40 -04:00
9316 lines
516 KiB
Plaintext
9316 lines
516 KiB
Plaintext
;;;; -*- coding: utf-8; fill-column: 78 -*-
|
||
changes in sbcl-2.2.8 relative to sbcl-2.2.7:
|
||
* minor incompatible change: support for 32-bit x86/Darwin has been removed.
|
||
* bug fix: fix miscompilation related to empty infinite loops preceded by
|
||
conditional expressions. (lp#1986810, reported by Artyom Bologov)
|
||
* bug fix: fix gc invariant violations. (lp#1983218, reported by Marius
|
||
Gerbershagen; lp#1983248, reported by Vasily Postnicov)
|
||
* bug fix: use CC to compile SBCL as a shared library. (lp#1976148,
|
||
reported by Pierre Neidhardt)
|
||
* bug fix: don't crash the system completely if RUN-PROGRAM fails to create
|
||
a pipe. (lp#1979841, reported by Thor Kristofferson)
|
||
* bug fix: be more disciplined about use of C system includes. (lp#1981799,
|
||
reported by Mark Evenson)
|
||
* bug fix: STRING/= returning wrong results for some cases when :END1/:END2
|
||
were not compile-time constants. (lp#1983284)
|
||
* bug fix: compile-time checking of :START and :END keyword arguments to
|
||
FILL is more complete.
|
||
* optimization: adjacent type tests on the same value are more compact
|
||
(arm64, x86-64).
|
||
* optimization: the compiler can inline COPY-STRUCTURE in more cases.
|
||
* optimization: type checks for non-simple arrays are shorter.
|
||
* optimization: printing strings (as Lisp data) is faster.
|
||
|
||
changes in sbcl-2.2.7 relative to sbcl-2.2.6:
|
||
* minor incompatible change: the compiler emits full WARNINGs for undefined
|
||
references to variables in TYPE and DYNAMIC-EXTENT declarations, and for
|
||
SETQ of an undefined variable. (This was the historic behaviour for
|
||
everything except the DYNAMIC-EXTENT case, which used to emit a
|
||
STYLE-WARNING, but these diagnostics got lost in a refactoring since
|
||
sbcl-2.2.2)
|
||
* minor incompatible change: literal objects (strings, in particular)
|
||
in compiled code may at the discretion of the runtime be placed in
|
||
read-only memory. Violations of CLHS 3.7.1 could produce memory faults.
|
||
If ":PURIFY NIL" is given to SAVE-LISP-AND-DIE then no read-only memory
|
||
will be used.
|
||
* enhancement: Unicode support has been updated to support version 10.0.0 of
|
||
the Unicode standard, including addition of characters and refinements to
|
||
breaking and collation algorithms.
|
||
* bug fix: AVX is no longer used for loading simd-pack-256 constants.
|
||
(lp#1928097)
|
||
* bug fix: fix building the manual when some contribs are blocked or
|
||
otherwise disabled. (lp#1979821, thanks to Robert Schiele)
|
||
* bug fix: fix type derivation of sequence functions with highly-specific
|
||
declared argument types. (lp#1980292, reported by James Kalenius)
|
||
* bug fix: internal error when optimizing chains of conditionals in local
|
||
functions. (lp#1981607, reported by Pasha K)
|
||
* bug fix: fix comparison of negative floats with bignums.
|
||
* optimization: faster TRUNCATE with float arguments.
|
||
* optimization: EQUALP hashing of large floating point values should
|
||
generate less garbage.
|
||
|
||
changes in sbcl-2.2.6 relative to sbcl-2.2.5:
|
||
* minor incompatible change: support for 32-bit x86 on macOS has been
|
||
removed.
|
||
* new contrib: sb-simd, to provide a convenient interface for SIMD
|
||
programming on x86-64. (Thanks to Marco Heisig and other sb-simd
|
||
contributors)
|
||
* enhancement: core compression now uses zstd instead of zlib. (lp#1881089)
|
||
* enhancement: provide compiler warnings for specialized array type
|
||
mismatches in CONCATENATE.
|
||
* enhancement: provide compiler warnings for bad sequence bounding index
|
||
designator arguments to sequence functions.
|
||
* enhancement: The sb-mpfr contrib now allows coercion from MPFR-FLOATs
|
||
to CL:RATIONAL. (Thanks to Robert Smith)
|
||
* bug fix: fix compilation failure related to declaiming types of constants.
|
||
(lp#1977726, reported by Pierre Neidhardt)
|
||
* bug fix: fix race condition in CLOS optimized constructors. (lp#1951341)
|
||
* bug fix: fix too-eager elision of allocation barriers when initializing
|
||
closure and structure objects.
|
||
* optimization: fasl files are now usually smaller (up to 10% on default
|
||
policy) and may load faster, especially on high debug.
|
||
* optimization: faster string comparisons on arm64, x86-64.
|
||
* optimization: faster [n]string-down/upcase on arm64, x86-64.
|
||
* optimization: faster [n]reverse for 8- and 32-bit element vectors on
|
||
arm64, x86-64.
|
||
* optimization: faster type tests for (CONS (EQL symbol)) on x86-64.
|
||
|
||
changes in sbcl-2.2.5 relative to sbcl-2.2.4:
|
||
* minor incompatible change: SB-EXT:*DERIVE-FUNCTION-TYPES* being NIL now
|
||
means that function calls will strictly only use type information from
|
||
proclaimed ftypes. The previous behavior (still the default) of using
|
||
derived type information from the same file is specified with :SAME-FILE.
|
||
(lp#1393302)
|
||
* minor incompatible change: RENAME-FILE now overwrites the target file on
|
||
Windows too, making its behaviour consistent with other platforms.
|
||
* minor incompatible change: inlining of local function is inhibited if
|
||
policy DEBUG = 3.
|
||
* platform support:
|
||
** single-stepping is now supported on 64-bit PowerPC platforms. (thanks
|
||
to Thomas Fitzsimmons)
|
||
** the :SB-LINKABLE-RUNTIME feature is now supported on 32-bit and 64-bit
|
||
PowerPC platforms. (thanks to Thomas Fitzsimmons)
|
||
* optimization: improved type derivation of REDUCE with some known reducing
|
||
functions.
|
||
* enhancement: debug source locations now work correctly for top level forms
|
||
with policy DEBUG = 1, as well as for block compiled files.
|
||
* enhancement: TRACE now supports tracing macro functions, compiler-macro
|
||
functions, individual methods and local functions. See the user manual for
|
||
more details. (lp#375314)
|
||
* bug fix: fix integer comparisons on x86-64 and arm64 (lp#1971088, reported
|
||
by Guillaume LE VAILLANT)
|
||
* bug fix: coverage instrumentation behaves correctly with respect to
|
||
non-local exits.
|
||
* bug fix: ftype proclamations now take effect immediately during block
|
||
compilation.
|
||
* bug fix: block compilation of top-level closures now work. (lp#1931730,
|
||
reported by Sean Maher)
|
||
* bug fix: streams opened from RUN-PROGRAM but left unclosed because of a
|
||
non-local exit no longer cause unrelated streams to be closed later.
|
||
|
||
changes in sbcl-2.2.4 relative to sbcl-2.2.3:
|
||
* enhancement: better constraint propagation in the compiler. Specifically,
|
||
the compiler can now derive the type of X in control flow join situations
|
||
such as
|
||
(LAMBDA (X) (ECASE (1 ...) (2 ...)) X)
|
||
or
|
||
(LAMBDA (X) (ETYPECASE (INTEGER ...) (SYMBOL ...)) X)
|
||
instead of forgetting all information about X after the E(TYPE)CASE.
|
||
* optimization: inlined functions enclosed in local macro definitions no
|
||
longer save their entire lexical environment, reducing unnecessary
|
||
memory retention.
|
||
* optimization: faster (< integer fixnum) comparisons (ARM64 and x86-64).
|
||
* platform support:
|
||
** RUN-PROGRAM is faster on Linux and FreeBSD if close_range(2) is
|
||
available.
|
||
* bug fix: block compilation now interacts more correctly with the creation
|
||
of new packages.
|
||
* bug fix: internal compiler error in array reference
|
||
optimizer. (lp#1966624)
|
||
|
||
changes in sbcl-2.2.3 relative to sbcl-2.2.2:
|
||
* minor incompatible change: SB-THREAD:MUTEX-OWNER may return :THREAD-DEAD
|
||
if the apparent owner either exited nearly instantly after releasing the
|
||
mutex (and is not now the owner), or died and never released it.
|
||
* minor incompatible change: building the system with the simple semi-space
|
||
copying collector is no longer supported.
|
||
* minor incompatible change: support for PPC/Darwin has been removed.
|
||
* platform support:
|
||
** fix regressions in threads on RISC-V. (lp#1962598)
|
||
** threads are now enabled by default on RISC-V.
|
||
** The generational garbage collector is now supported on MIPS.
|
||
* optimization: fasls containing standard object literals are now smaller
|
||
and load more efficiently.
|
||
* optimization: faster arithmetic (*-+) on word-sized integers when the
|
||
result is not known to fit into a word (ARM64 and x86-64).
|
||
* bug fix: EQness of constants is now always preserved when block compiling.
|
||
|
||
changes in sbcl-2.2.2 relative to sbcl-2.2.1:
|
||
* platform support:
|
||
** all architectures now share the coverage mark instrumentation
|
||
implementation, meaning that performance now equals what had been
|
||
implemented only on x86 architectures.
|
||
** fixed a performance regression on x86-64 from changes in AVX2 register
|
||
handling. (lp#1960081, reported by Michael Kappert)
|
||
** fixed a garbage collection bug on ppc64 manifesting in occasional
|
||
corruption on threaded programs. (lp#1959338, lp#1952973)
|
||
** micro-optimizations in type tests for (SIGNED-BYTE 64).
|
||
* enhancement: improved handling of source locations for some classes
|
||
of compile time and runtime errors.
|
||
* enhancement: better source locations for structure accessors.
|
||
* bug fix: SB-COVER now always instruments top level forms correctly.
|
||
* bug fix: muffling conditions now works correctly on higher debug settings.
|
||
* bug fix: local muffling declarations now scope correctly with respect to
|
||
undefined variable warnings.
|
||
* optimization: calls to STRING= can now return NIL more quickly on strings
|
||
of unequal length.
|
||
|
||
changes in sbcl-2.2.1 relative to sbcl-2.2.0:
|
||
* incompatible change: DEFINE-ALIEN-CALLBACK, which has never been exported
|
||
from a public package, has been deleted. It is superseded by
|
||
SB-ALIEN:DEFINE-ALIEN-CALLABLE.
|
||
* minor incompatible change: compiler warnings are emitted on more
|
||
provably-erroneous code involving sequence functions on specialized
|
||
arrays.
|
||
* platform support:
|
||
** support getting thread IDs on FreeBSD. (thanks to Felix Lange)
|
||
** faster function call sequence on arm64.
|
||
** the built-in buffer size for file streams is increased to 8KB.
|
||
* enhancement: provide a restart for method lambda list mismatches that
|
||
fmakunbounds the generic function.
|
||
* enhancement: provide a USE-VALUE restart around type errors signalled from
|
||
(SETF SLOT-VALUE).
|
||
* enhancement: when UPDATE-INSTANCE-FOR-DIFFERENT-CLASS (or -REDEFINED-)
|
||
undergoes a non-local exit, restore the instance to its original state.
|
||
(thanks to Michał phoe Herda)
|
||
* enhancement: the :SYNCHRONIZED keyword argument to MAKE-HASH-TABLE is no
|
||
longer experimental.
|
||
* bug fix: fix an erroneous compiler tranform for (EXPT SINGLE-FLOAT
|
||
INTEGER). (lp#1958061, thanks to Vasily Postnicov)
|
||
* bug fix: disassembly of closures is more likely to show the relevant code
|
||
if more than one closure closes over the same environment. (lp#1956870,
|
||
reported by Michał phoe Herda)
|
||
* bug fix: RUN-PROGRAM with :IF-EXISTS :APPEND no longer signals an error if
|
||
the output does not exist. (lp#1958569, thanks to Ingo Krabbe)
|
||
* optimization: reorder basic blocks to have loop code fall through more
|
||
often. (thanks to Hayley Patton)
|
||
* optimization: sequences larger than the buffer size are written to streams
|
||
without going through a buffering stage. (reported by Philipp Marek)
|
||
|
||
changes in sbcl-2.2.0 relative to sbcl-2.1.11:
|
||
* platform support:
|
||
** support for FreeBSD on 64-bit arm platforms has been added.
|
||
** the :SB-LINKABLE-RUNTIME build-time feature is now supported on 32-bit
|
||
and 64-bit arm platforms, and on the FreeBSD operating system.
|
||
** bug fix: correct encoding for vmovsd. (lp#1953483, reported by Marco
|
||
Heisig)
|
||
** bug fix: support ABIv1 callbacks on big-endian ppc64. (lp#1900343,
|
||
thanks to Thomas Fitzsimmons)
|
||
** bug fix: don't misuse mprotect() in dynamic space on Windows.
|
||
(lp#1955723, reported by 3b)
|
||
* enhancement: catch type mismatches for REPLACE, SUBSTITUTE, MAKE-ARRAY
|
||
with :INITIAL-CONTENTS.
|
||
* optimization: printing symbols is around 10% faster than previously.
|
||
* bug fix: don't use the current type of non-returning functions when
|
||
redefining them in another file. (lp#1953214, reported by Nicolas Hafner)
|
||
* bug fix: eliminate stack cleanups more conservatively. (lp#1954330,
|
||
reported by Daniel Kochmański)
|
||
* bug fix: check consistently in tests for the existence of VOPs.
|
||
(lp#1952896, reported by Sébastien Villemot)
|
||
|
||
changes in sbcl-2.1.11 relative to sbcl-2.1.10:
|
||
* minor incompatible change: *COMPILE-PRINT* now defaults to NIL. T gives
|
||
the old behavior of echoing top level forms. Users who want to see a
|
||
report of the phases of compilation can use *COMPILE-PROGRESS* and the
|
||
corresponding COMPILE-FILE :PROGRESS argument.
|
||
* optimization: The compiler assignment-converts functions much more
|
||
aggressively; local or non-entry block-compiled functions
|
||
which always return to the same place are automatically converted into the
|
||
equivalent loop or goto control structures.
|
||
* enhancement: on x86-64 and ppc64 platforms, the system uses inline
|
||
instructions rather than page protection to implement a store barrier for
|
||
the garbage collector.
|
||
* enhancement: improved reporting of code deletion notes.
|
||
* platform support:
|
||
** unbound-variable restarts for amd64 are now supported.
|
||
** bug fix: single-floats to foreign functions on 32-bit ARMel.
|
||
(lp#1950080, reported by Sebastien Villemot)
|
||
** bug fix: opening files with names containing non-ASCII characters on
|
||
Windows works better. (reported by Nikolay)
|
||
** bug fix: use fp_xsave to access the floating point flags and control
|
||
word in Haiku signal contexts. (Thanks to Al Hoang)
|
||
** bug fix: complex single-float support on riscv64.
|
||
** optimization: support for accessing elements of &rest args directly on
|
||
ppc64, mips, riscv.
|
||
** optimization: parse a /proc file rather than executing uname for
|
||
SOFTWARE-VERSION on Linux
|
||
* bug fix: fix crash from SB-COVER:RESET-COVERAGE. (lp#1950059, reported by
|
||
Gregory Czerniak)
|
||
|
||
changes in sbcl-2.1.10 relative to sbcl-2.1.9:
|
||
* incompatible change: simd-pack without a specific element-type is no
|
||
longer treated as containing integers. A type must be supplied for VOPs to
|
||
work on such values.
|
||
* minor incompatible change: the list form of the FUNCTION type specifier
|
||
does not allow * as any argument type, but does allow * as a placeholder
|
||
for wholly unspecified arguments when specifying the value(s) type.
|
||
* minor incompatible change: the default (Lisp) toplevel option parser
|
||
throws an error if it encounters an option which was intended to be used
|
||
and removed by the C runtime. (lp#1945081, reported by Luke Gorrie)
|
||
* new feature: there is now a defined interface for defining foreign
|
||
callable functions, which can be used for passing callbacks to foreign
|
||
functions or for calling Lisp code from the foreign world as a shared
|
||
library (preliminary support). See the revised manual section "Calling
|
||
into Lisp From C" for more details.
|
||
* enhancement: arg-count mismatches in self-calls in defmethod are reported.
|
||
(lp#1912436, reported by 3b)
|
||
* enhancement: the SB-CLTL2 contrib now returns type information for
|
||
generated structure accessors. (lp#1934859, reported by SATO shinichi)
|
||
* optimization: code generation is improved for modular arithmetic involving
|
||
signed operations.
|
||
* platform support:
|
||
** x86-64 machine code emitter crash when attempting to assemble some
|
||
vector instructions. (lp#1945975, thanks to Marco Heisig)
|
||
** conditional move instructions are now supported on arm64.
|
||
** a number of new peephole optimizations have been implemented on arm64.
|
||
** arm64 on Darwin now uses gcc-compatible thread-local storage.
|
||
* bug fix: compiler notes are no longer emitted when compiling FORMATTER
|
||
forms, including when implicitly triggered on a constant string argument
|
||
to FORMAT. (lp#1946246, reported by SATO shinichi)
|
||
* bug fix: a compiler error when attempting to compile a call to AREF with
|
||
too many dimensions. (lp#1902985)
|
||
* bug fix: harmonize the behaviour of SLOT-BOUNDP on non-standard-objects
|
||
between the various ways in which it can be called. (lp#732229, reported
|
||
by Zach Beane)
|
||
* bug fix: FTRUNCATE and similar functions are now more careful about
|
||
deriving facts about the sign of zero they might return. (lp#1732009,
|
||
reported by Paul Dietz)
|
||
|
||
changes in sbcl-2.1.9 relative to sbcl-2.1.8:
|
||
* minor incompatible change: the experimental DEFCAS macro has been removed.
|
||
* minor incompatible change: finalizing classes with slots with duplicate
|
||
symbol-names will only emit a warning if either slot name is an exported
|
||
symbol. (lp#1943559)
|
||
* platform support:
|
||
** the debugger is better able to display SIMD packs. (thanks to Marco
|
||
Heisig)
|
||
** fix a bug in zeroing YMM registers. (thanks to Marco Heisig)
|
||
** fix instruction definitions for SSE blend and shuffle vector
|
||
instructions. (thanks to Marco Heisig)
|
||
** handle heap corruption exceptions in our exception handler on win64.
|
||
** improve WAIT-UNTIL-FD-USABLE on Windows, reducing busy-looping.
|
||
(thanks to Fabio Almeida)
|
||
* bug fix: EQUALP hash tables whose keys contain arrays containing floats should
|
||
behave correctly. (lp#1942424, reported by Nicolas Neuss)
|
||
|
||
changes in sbcl-2.1.8 relative to sbcl-2.1.7:
|
||
* minor incompatible change: the experimental DEFINE-CAS-EXPANDER macro has
|
||
been removed.
|
||
* minor incompatible change: the hooks in *INIT-HOOKS* are called before
|
||
starting the finalizer or other non-user threads. (thanks to Sean Whitton)
|
||
* platform support:
|
||
** many improvements to code generation on arm64.
|
||
** avoid slow forms of the bit test instructions BT, BTS, BTR on x86-64.
|
||
** fix a bug in loading large core files on the Apple M1/arm64. (thanks
|
||
to Mayank Manjrekar)
|
||
** fix a bug in loading core loading on the Apple M1/arm64. (reported by
|
||
Eric Timmons)
|
||
* enhancement: the block-compiler is more robust to files with intermingled
|
||
compile-time and load-time effects. The semantics of the block-compiler
|
||
remain not-entirely ANSI compatible. (thanks to Sean Maher)
|
||
* enhancement: (CAS SAP-REF-<x>) and CAS on alien integers is implemented on
|
||
ppc64 and x86-64, working towards fixing lp#1894057
|
||
* bug fix: fix OPEN-STREAM-P on streams closed by saving a core.
|
||
(lp#1938433, reported by Guillaume LE VAILLANT)
|
||
* bug fix: remove a spurious warning from COERCE. (lp#1920931, reported by
|
||
Andrew Berkley)
|
||
* bug fix: remove a warning from inlining SET-EXCLUSIVE-OR. (lp#1936470,
|
||
reported by Jerome Abela)
|
||
|
||
changes in sbcl-2.1.7 relative to sbcl-2.1.6:
|
||
* incompatible change: on certain platforms (currently just x86-64),
|
||
dynamic-extent arrays specialized on character and numeric types and
|
||
created without either :INITIAL-ELEMENT or :INITIAL-CONTENTS will reflect
|
||
previous contents of the stack instead of #\null (or 0) in all elements.
|
||
* minor incompatible change: SB-SPROF:START-PROFILING no longer silently
|
||
does nothing if the clock is already running. It instead stop and restarts
|
||
with the newly provided options, and warns.
|
||
* minor incompatible change: the system attempts to refer to the supplied
|
||
pathname in compiler diagnostics, if relevant, rather than the truename.
|
||
* enhancement: new contrib module sb-graph producing graphical
|
||
visualizations of Intermediate Representations of SBCL compilation data
|
||
structures.
|
||
* platform support:
|
||
** improved code generation for unary minus in modular contexts on arm64.
|
||
** make the disassembler annotations slightly more robust on arm64.
|
||
** release space back to the Operating System on Windows.
|
||
** improve the test for whether pages need to be committed on Windows.
|
||
* optimization: the type of (LOOP ... COLLECT ...), and the type of COLLECT
|
||
INTO variables, is derived as LIST. (lp#1934577, reported by SATO
|
||
shinichi)
|
||
|
||
changes in sbcl-2.1.6 relative to sbcl-2.1.5:
|
||
* minor incompatible change: COMPILE-FILE does not merge the input file's
|
||
pathname-directory into the output path if :OUTPUT-FILE was specified
|
||
and has a directory that is not :UNSPECIFIC.
|
||
* platform support:
|
||
** improvements to unwind code generation on arm64.
|
||
** on x86-64, accept three operands for vshufpd. (reported by Bela
|
||
Pecsek)
|
||
** on x86-64, improvements to use of popcount
|
||
** improve exception handling on 64-bit Windows. (thanks to Luis Borges
|
||
de Oliveira)
|
||
* bug fix: allow use of macros with improper argument list. (lp#1929623,
|
||
thanks to Sean Maher)
|
||
* bug fix: COERCE no longer attempts to guess what the user meant if they
|
||
provide a type specifier of a union of types other than STRING.
|
||
(lp#1929614)
|
||
* bug fix: print a single trailing zero after the decimal point for FORMAT
|
||
~E if there are no digits remaining to be printed and the width allows it.
|
||
(lp#883520)
|
||
|
||
changes in sbcl-2.1.5 relative to sbcl-2.1.4:
|
||
* minor incompatible change: on x86-64, the backend instruction encoders for
|
||
movzx and for string opcodes have changed their semantics.
|
||
* platform support:
|
||
** compatibility: support the latest MinGW on x86. (lp#1923325, thanks to
|
||
Alexis Rivera)
|
||
** bug fix: on x86-64, fix instruction encoding for TEST on RIP-relative
|
||
addresses. (lp#1925808, reported by Shinmera on #sbcl, thanks also to
|
||
3b)
|
||
** bug fix: on x86-64, loading all-1s into an AVX2 register no longer
|
||
causes an error. (lp#1928516, thanks to Marco Heisig)
|
||
** bug fix: on arm64, improve disassembly of ADD with constant 0 as MOV
|
||
** enhancement: on arm64, support debugger commands RETURN-FROM-FRAME and
|
||
RESTART-FRAME more efficiently.
|
||
** enhancement: on x86-64, add support for vshuf* AVX2 instructions.
|
||
(reported by Bela Pecsek)
|
||
** optimization: faster function calls on arm64.
|
||
** optimization: (SETF SBIT) is faster on x86-64.
|
||
* bug fix: INTEGER-DECODE-FLOAT was computing the wrong answer for denormal
|
||
double floats. (lp#1926383, reported by Stavros Macrakis)
|
||
* bug fix: RANDOM on a floating point argument now does not cons. (reported
|
||
by Tito Latini)
|
||
* bug fix: fix a compiler crash in type derivation of LOGTEST. (lp#1928243)
|
||
* bug fix: fix a compiler failure when a declared function type contains a
|
||
literal structure with a valid MAKE-LOAD-FORM method. (lp#1929160, thanks
|
||
to Yurii Hryhorenko)
|
||
* optimization: FBOUNDP on a constant symbol is now faster.
|
||
* optimization: file compilation now produces smaller fasls for files which
|
||
reference package literals.
|
||
* optimization: derive the type of calls to FLOAT-SIGN.
|
||
|
||
changes in sbcl-2.1.4 relative to sbcl-2.1.3:
|
||
* platform support:
|
||
** work around address-space randomization causing instability on new
|
||
versions of MinGW. (lp#1921141)
|
||
* bug fix: RANDOM on floats returns values strictly less than the float
|
||
argument.
|
||
* bug fix: compiler error on x86-64 resulting from attempting to zero a
|
||
memory location with xor. (reported by Eric Marsden)
|
||
* optimization: extended loops updating iteration variables with THEN can
|
||
perform specialized arithmetic for those updates.
|
||
* optimization: in some cases, the jump table resulting from a compilation
|
||
of TYPECASE is simpler.
|
||
* optimization: on x86-64, IF BOUNDP followed by SYMBOL-VALUE can elide some
|
||
memory loads and tests.
|
||
|
||
changes in sbcl-2.1.3 relative to sbcl-2.1.2:
|
||
* minor incompatible change: support for the :SB-SAFEPOINT-STRICTLY,
|
||
:SB-THRUPTION, and :SB-WTIMER build features has been removed
|
||
* platform support:
|
||
** support for :SB-CORE-COMPRESSION on Darwin/ARM64
|
||
** support ARM v8.1 atomic and compare-and-swap instructions
|
||
** x86, x86-64: microoptimizations in multiple type-checking routines
|
||
* bug fix: structures and conditions are now TYPEP all classes in the class
|
||
precedence list of their class. (reported by Luis Oliveira)
|
||
* bug fix: derivation of the result type from subtraction sometimes
|
||
erroneously excluded zero. (lp#1916895)
|
||
* bug fix: reduce the number of places where the system permissively accepts
|
||
the symbol * as a type specifier where it should not be accepted.
|
||
(lp#1860919)
|
||
* bug fix: the code-walker used by the system's implementation of CLOS can
|
||
handle defuns declared inline. (reported by Don Cohen)
|
||
* optimization: EQUALP on specialized vectors and arrays is faster.
|
||
* optimization: support routines for EQUALP hash tables generate less garbage.
|
||
|
||
changes in sbcl-2.1.2 relative to sbcl-2.1.1:
|
||
* platform support:
|
||
** support for ARM64 macOS;
|
||
** improvement in coverage mark implementation on non-x86oid backends,
|
||
approaching the existing x86oid support;
|
||
** more empirically-robust retrieval of the program counter from illegal
|
||
instruction traps on SPARC;
|
||
** retain fewer dead objects when saving cores with precise collectors.
|
||
* incompatible change: MAP-ALL-SAMPLES and MAP-TRACE-SAMPLES
|
||
are no longer present in the SB-SPROF contrib module.
|
||
* minor incompatible change: SB-SPROF:WITH-PROFILING defaults to all
|
||
threads. SB-SPROF:START-PROFILING no longer accepts a :SAMPLING keyword.
|
||
* enhancement: the sb-introspect contrib now supports finding the lambda
|
||
lists of method combinations. (thanks to Didier Verna)
|
||
* enhancement: short-form DEFSETF now stores a source-location.
|
||
* bug fix: canonical unions of CONS types were being incorrectly computed.
|
||
(lp#1912863, reported by James Kalenius)
|
||
* bug fix: better understanding of array simplicity (or otherwise) in the
|
||
type system. (lp#1903241)
|
||
* bug fix: unions of rational and integer types now have a single canonical
|
||
form, allowing more correct reasoning about them in the type system.
|
||
* bug fix: less likely to overclaim certainty about type equality of union
|
||
types. (lp#1916040)
|
||
* bug fix: HANDLER-BIND evaluates the forms producing handler functions only
|
||
once. (lp#1916302, reported by Christophe Junke)
|
||
* optimization: FIND on constant sequences can be compiled into a jump
|
||
table, in a similar manner to POSITION
|
||
* optimization: the compiler's awareness of numeric contagion rules for
|
||
operations on pairs of floating point numbers is improved. (lp#1914094,
|
||
thanks to Andrew Berkley)
|
||
|
||
changes in sbcl-2.1.1 relative to sbcl-2.1.0:
|
||
* platform support:
|
||
** restore non-threaded NetBSD builds;
|
||
** adjust how the finalizer thread is started; (lp#1906571, lp#1907872)
|
||
** fix the encoding of PEXTR on x86-64;
|
||
* minor incompatible change: emit warnings for list iteration forms when the
|
||
object being iterated over is known not to be a list. (lp#1908819,
|
||
reported by Michael Fiano)
|
||
* bug fix: detect 2 or 1 as an invalid number of arguments passed to
|
||
optimized slot reading or writing effective method respectively.
|
||
(lp#1909659, reported by Michal Herda)
|
||
* bug fix: division by zero errors were in some cases not being signalled.
|
||
(lp#1910098, reported by il71)
|
||
* bug fix: erroneous coercions in the type system could lose precision.
|
||
(lp#1910294)
|
||
* bug fix: literal (read-time evaluated) NaNs in source code no longer cause
|
||
compiler crashes. (lp#1909881, reported by Michal Herda)
|
||
* bug fix: detect more erroneous syntax in method bodies. (lp#1912362,
|
||
reported by Paul M. Rodriguez)
|
||
* optimization: the compiler's understanding of EXPT is improved, reducing
|
||
the introduction of COMPLEX types. (lp#1908830, reported by Michael Fiano)
|
||
* optimization: the compiler is better at computing numeric contagion when
|
||
(COMPLEX FLOAT) types are involved.
|
||
* micro-optimizations:
|
||
** moving from slightly-bigger-than-fixnum ranges is more efficient on x86-64;
|
||
** encode character comparisons with smaller operands on x86-64;
|
||
** truncating (and related operations) on floats can be inlined in more
|
||
cases on 64-bit platforms;
|
||
** rounding can use specialized instructions on ARM64 and on x86-64 when
|
||
SSE4 is available;
|
||
|
||
changes in sbcl-2.1.0 relative to sbcl-2.0.11:
|
||
* minor incompatible change: the MAKE-EA internal function, used in the
|
||
assembler, has been removed (affecting some libraries defining their own
|
||
Virtual Operations)
|
||
* new feature: SB-EXT:PRIMITIVE-OBJECT-SIZE can be used to interrogate the
|
||
low-level size in memory of objects. (lp#1636910, reported by anquegi)
|
||
* platform support:
|
||
** pass required -std argument to the compiler on Solaris (lp#1885751,
|
||
thanks to Jesse Off)
|
||
** better treatment of non-ASCII program arguments on Windows (lp#1907970,
|
||
reported by Timofei Shatrov)
|
||
** implement the improved TYPEP with structure types on all other
|
||
supported platforms (32-bit PowerPC, ARM, ARM64, MIPS, SPARC, RISC-V)
|
||
* enhancement: stream dispatch (to vanilla ANSI / Gray / Simple variants) has
|
||
been rewritten and optimized, fixing a number of bugs including:
|
||
** performance of WRITE-SEQUENCE on composite streams (lp#309136)
|
||
** handling of CLOSE on SYNONYM-STREAM (lp#1904257, reported by Richard M
|
||
Kreuter)
|
||
** handling of CLOSE on BROADCAST-STREAM with no components (lp#1904722,
|
||
reported by Richard M Kreuter)
|
||
** loading SB-SIMPLE-STREAMS breaks functionality of other stream classes
|
||
(lp#1908132)
|
||
** some excessive consing in READ-LINE
|
||
* enhancements related to RUN-PROGRAM:
|
||
** improved the documentation related to the ARGS argument (lp#806733,
|
||
reported by mon_key)
|
||
** added a PRESERVE-FDS argument
|
||
* bug fix: ensure that TYPE-OF returns something even on internal instances,
|
||
which may become visible in the debugger. (lp#1908261, reported by
|
||
Philipp Marek)
|
||
* bug fix: iteration variables established by standard forms should always
|
||
be considered used by the compiler. (lp#719585, reported by Roman
|
||
Marynchak)
|
||
* bug fix: don't allow compiler transformations to weaken the requirement
|
||
against extended (list-form) function names in FUNCALL and related
|
||
operators. (lp#310069)
|
||
* bug fix: improve automated version number generation in branches.
|
||
(lp#897867, thanks to Martin Cracauer)
|
||
* bug fix: add possibly-spurious futex wakes when unwinding from a call to
|
||
futex-wait, to avoid deadlocks from interrupted waits. (lp#1038034)
|
||
* bug fixes in the compiler:
|
||
** error on malformed DESTRUCTURING-BIND (lp#1738638)
|
||
** error on malformed SPECIAL declaration (lp#1740756)
|
||
** error from use of VALUES type in COERCE (lp#1887712)
|
||
** enforcement of FTYPE types involving &OPTIONAL (lp#1903932)
|
||
** checking for proper-list-ness before applying transforms (lp#1905512)
|
||
** compilation of LAMBDA form including a malformed DEFUN (lp#1906056)
|
||
** memory fault from VALUES-related handling in high DEBUG code
|
||
(lp#1906563)
|
||
** transforms handle explicit NIL arguments in :END arguments to SEARCH
|
||
(lp#1907924)
|
||
* bug fix: return COMPILED-FUNCTION for TYPE-OF on compiled functions.
|
||
(lp#1906583)
|
||
* some bugs were also closed in this release cycle as obsolete, having been
|
||
fixed by the passage of time or other change in the environment:
|
||
** floating point error reporting on OS X (lp#309454)
|
||
** load-shared-library not working from non-main threads on OS X (lp#592425)
|
||
* optimization: CONSTANTLY on constant arguments returns a more efficient
|
||
function. (lp#1852585)
|
||
* optimization: perform fewer Lisp/Alien representation conversions in
|
||
callbacks.
|
||
* optimization: perform fewer redundant widetag tests when doing type tests
|
||
of complicated union types.
|
||
* optimization: signed-integer division on machine-word sized operands is
|
||
now implemented using multiplication, affecting TRUNCATE, FLOOR, CEILING,
|
||
MOD and REM. (This optimization was already performed on unsigned-integer
|
||
division)
|
||
|
||
changes in sbcl-2.0.11 relative to sbcl-2.0.10:
|
||
* minor incompatible change: (ARRAY NIL (*)) is not a subtype of STRING,
|
||
as is consistent with a majority of maintained CL implementations.
|
||
* minor incompatible change: ARRAY-RANK-LIMIT is decreased from 65529 to 256
|
||
* optimization: TYPEP on structure types is faster and more compact on
|
||
x86[-64] and ppc64.
|
||
* optimization: LOGCOUNT is faster on arm64.
|
||
* optimization: SIGNUM can be inlined if its argument type is known.
|
||
(lp#1903533)
|
||
* bug fix: compiler crash in tail call handling. (lp#1903938)
|
||
* bug fix: crash in traceroot. (lp#1903419, reported by Michal Herda)
|
||
* bug fix: DESCRIBE called with a string as second argument no longer mutates
|
||
that string. (lp#1903901, reported by Michal Herda)
|
||
* bug fix: stack clobbering by 256-bit SIMD packs on x86-64. (lp#1901685,
|
||
reported by Marco Heisig)
|
||
|
||
changes in sbcl-2.0.10 relative to sbcl-2.0.9:
|
||
* minor incompatible change: the funarg given to SB-SPROF:MAP-TRACES
|
||
does not receive a wallclock time with each trace.
|
||
* minor incompatible change: INTERNAL-TIME-UNITS-PER-SECOND has been
|
||
increased to 10^6 on 64-bit architectures.
|
||
* minor incompatible change: SIGPIPE is ignored by default again. (lp#1897624)
|
||
* minor incompatible change: the system code compiled under the
|
||
:LINKAGE-TABLE feature is now unconditionally compiled in, and the
|
||
corresponding entry in *FEATURES* has been removed.
|
||
* enhancement: style-warnings are issued for variables which have an
|
||
assignment but no "for-value reference" (per CLHS glossary entry)
|
||
* bug fix: SB-CLTL2:MACROEXPAND-ALL did not expand MULTIPLE-VALUE-BIND
|
||
and MULTIPLE-VALUE-SETQ
|
||
* bug fix: CPUID-based feature detection had an index/mask confusion
|
||
(lp#1899239)
|
||
* bug fix: fix a deadlock on Windows (lp#1896802)
|
||
* bug fix: eliminate type errors when wall clocks go back (lp#1028026,
|
||
lp#1032111)
|
||
* bug fix: fix EOF handling in read-char-no-hang on concatenenated streams
|
||
(lp#690408, reported by Willem Broekema)
|
||
* bug fix: fix MAP-INTO on extended sequences (lp#1855375, thanks to James
|
||
Kalenius)
|
||
* bug fix: SB-GMP can now raise -1, 0 and 1 to the power of a bignum.
|
||
(thanks to Aaron Chen)
|
||
* bug fixes in tests:
|
||
** add a C function declaration (lp#1897627, thanks to Bob Felts)
|
||
** parse vmmap output more liberally (lp#1897722, reported by Bob Felts)
|
||
|
||
changes in sbcl-2.0.9 relative to sbcl-2.0.8:
|
||
* incompatible change: HPPA and DEC Alpha architecture
|
||
support has been removed.
|
||
* minor incompatible change: the compiler signals a warning at
|
||
compile-time when an initform of T, NIL or 0 does not match a
|
||
STANDARD-CLASS slot's declared type.
|
||
* minor incompatible change: the runtime no longer uses SIGPIPE internally,
|
||
so the signal is deliverable to user code as is customary. Ignoring the
|
||
signal - in lieu of the OS default of process termination - is obtainable
|
||
via (SB-SYS:ENABLE-INTERRUPT SB-UNIX:SIGPIPE :IGNORE).
|
||
* platform support:
|
||
** a number of obsolete portability layers (particularly on the Windows
|
||
platform) have been removed in favour of direct calling of the native
|
||
interfaces.
|
||
** RUN-PROGRAM now accepts a :WINDOW argument to control whether a
|
||
subprocess window should be displayed. (Thanks to Luis Borges de
|
||
Oliveira)
|
||
** the use of futexes implied by :SB-FUTEX is now implemented on FreeBSD.
|
||
* bug fix: SB-SPROF can distinguish between SBCL-internal assembly routines.
|
||
* bug fix: SB-SPROF has better output in its reports for anonymous
|
||
functions.
|
||
* optimization: CALL-NEXT-METHOD with supplied arguments in required
|
||
positions is now faster if the supplied arguments are EQL to the original
|
||
arguments.
|
||
|
||
changes in sbcl-2.0.8 relative to sbcl-2.0.7:
|
||
* platform support:
|
||
** added support for NetBSD/ARM64;
|
||
** threads on Linux now have OS-visible names;
|
||
** removed unnecessary emulation of pthread functions on Windows;
|
||
** work around a sigwait() bug on Mac OS X;
|
||
** allow safepoint build on Mac OS X, though it probably doesn't
|
||
work very well (reported by Chris Wagner, lp#1382811)
|
||
** removed stub support for HPUX.
|
||
* optimization: SB-THREAD:MAKE-THREAD is faster on most platforms.
|
||
* optimization: faster RATIONAL when the result is a RATIO.
|
||
* optimization: improved cross-type comparisons (float/ratio/bignum).
|
||
* bug fix: EQUALP on pathnames was wrong
|
||
* bug fixes: fix compiler issues in:
|
||
** COUNT (lp#1889391)
|
||
** VECTOR-LENGTH (lp#1888919)
|
||
** constant-folding (lp#1888384)
|
||
** FIND and POSITION (lp#1887316)
|
||
|
||
changes in sbcl-2.0.7 relative to sbcl-2.0.6:
|
||
* minor incompatible change: SB-THREAD:THREAD-OS-TID returns NIL for
|
||
a thread which has exited.
|
||
* minor incompatible change: OPEN no longer calls TRUENAME implicitly
|
||
on a string filespec prior to issuing an open() system call.
|
||
* minor incompatible change: PATHNAME is no longer a STRUCTURE-OBJECT.
|
||
* documentation: HASH-FUNCTION is a function designator. (lp#1888028,
|
||
reported by Jacek Zlydach)
|
||
* bug fix: eliminated a potential garbage-collector deadlock
|
||
when linking with TCMalloc.
|
||
* bug fix: foreign threads (those not made by SB-THREAD:MAKE-THREAD)
|
||
can not crash with a "GC_PENDING, but why?" error when returning
|
||
back from Lisp into the foreign caller.
|
||
* bug fix: sb-fasteval crashed trying to install a JIT-compiled
|
||
DEFSTRUCT accessor in a locked package.
|
||
* bug fix: removed misuse of putwc() which caused stdio streams
|
||
to drop characters.
|
||
* bug fix: the "maximum interrupt nesting depth exceeded" error
|
||
generated in the C runtime is significantly less likely to occur.
|
||
* bug fix: sb-sprof should no longer segfault from calling pthread_kill()
|
||
on a nonexistent thread.
|
||
* bug fix: a portability issue arising from various build hosts
|
||
(lp#1886255, reported by Pierre Neidhardt)
|
||
* bug fix: spurious compiler warnings from REDUCE with :INITIAL-VALUE.
|
||
(lp#1885515, reported by Michael South)
|
||
* bug fix: an inconsistency between class hierarchies and the type system
|
||
under some circumstances involving redefinition. (lp#1886397, reported by
|
||
Atilla Lendvai)
|
||
* bug fix: the USE-VALUE restart for OPEN on non-existent files is more
|
||
likely to function as expected. (lp#1886587)
|
||
* bug fix: various invalid inputs to ROTATE-BYTE no longer cause compiler
|
||
errors. (lp#1887164, lp#1888152)
|
||
* optimization: PPC64 on linux uses the __thread annotation on C variables
|
||
in preference to pthread_setspecific() and pthread_getspecific().
|
||
|
||
changes in sbcl-2.0.6 relative to sbcl-2.0.5:
|
||
* planned incompatible change: the defined symbols in the Metaobject
|
||
Protocol, currently accessible from both SB-MOP and SB-PCL packages, will
|
||
in a later release be no longer exported from SB-PCL.
|
||
* platform support:
|
||
** better support for dynamic-extent on the SPARC architecture.
|
||
** bug fix for loading very large core files.
|
||
** bug fix for logior and logxor on PPC64.
|
||
* enhancement: EQUALP on structure instances uses code specialized
|
||
to each structure type, inlining comparison of non-pointer slots.
|
||
* enhancement: some standard operators, such as WITH-OUTPUT-TO-STRING and
|
||
CHANGE-CLASS, have been adapted to use dynamic-extent temporary objects,
|
||
and so cons less garbage on the heap.
|
||
* enhancement: read tables are more space- and speed efficient
|
||
* bug fix: stream conditions with dynamic-extent streams have the stream
|
||
replaced by a stub. (reported by Matt Kaufmann)
|
||
* bug fix: garbage collections triggered from foreign callbacks crashed.
|
||
(lp#1884403, reported by Andrew Kent)
|
||
* bug fix: compiler failure in compiling MAKE-LIST. (lp#1881349)
|
||
* bug fix: using the debugger from frames with calls to functions with
|
||
unsupplied optional arguments is less likely to cause heap corruption.
|
||
(lp#1883745)
|
||
|
||
changes in sbcl-2.0.5 relative to sbcl-2.0.4:
|
||
* platform support:
|
||
** experimental support for ARM32 and ARM64 on OpenBSD
|
||
** better musl libc support. (lp#1768368, thanks to Eric Timmons)
|
||
** more correct use of futexes on 64-bit Linux. (lp#1876825, reported by
|
||
Ilya Perminov)
|
||
** restore building on current Solaris. (lp#1881393, thanks to Shawn
|
||
Ellis)
|
||
* enhancement: CMUCL-style START-BLOCK and END-BLOCK declarations are now
|
||
supported for block compiling forms at a sub-file granularity.
|
||
* enhancement: IPv6 support in sb-bsd-sockets is enabled on Windows.
|
||
* minor change: *compile-print* now makes it more clear what block
|
||
compilation is actually doing. The default output is now slightly more
|
||
verbose as a result.
|
||
* bug fix: number keys in EQUALP hash tables are correctly hashed.
|
||
(lp#1878653, reported by Syll)
|
||
* bug fix: EQness is better preserved given partial sharing of list contents
|
||
in the file compiler. (lp#1583753, reported by Denis Budyak)
|
||
* bug fix: the peephole pass neglected to preserve jump table labels.
|
||
(lp#1876485)
|
||
* bug fix: fix compiler crash in block compilation merging of toplevel
|
||
lambdas. (lp#1865336, reported by il71)
|
||
* bug fix: sb-introspect's function-lambda-arglist is better at extracting
|
||
default values of nested macro arguments. (lp#1876194)
|
||
* bug fix: RESTART-BIND's body is an implicit progn, and so does not accept
|
||
declarations. (lp#1876303, reported by Michal Herda)
|
||
* optimization: EQUAL hash tables with keys involving structure-objects will
|
||
have fewer systematic collisions.
|
||
|
||
changes in sbcl-2.0.4 relative to sbcl-2.0.3:
|
||
* platform support:
|
||
** 32-bit RISC-V is now fully supported. Unlike other ports, its backend
|
||
is entirely shared with 64-bit RISC-V.
|
||
** native threads are now supported on RISC-V.
|
||
** fix and add some x86-64 vector instructions. (reported by Shubhamkar
|
||
Ayare)
|
||
** improve pointer representation on ppc64 for low-level performance
|
||
improvement.
|
||
** threads are more stable on big-endian ppc64
|
||
* enhancement: forward-referenced type tests can now be open-coded by using
|
||
block compilation. The result is that mutually referential defstructs are
|
||
now efficiently compiled in block compilation mode, superseding a lighter
|
||
mechanism that worked in fewer contexts. However, that lighter mechanism
|
||
has been removed, so for now, users who want to efficiently compile
|
||
mutually referential defstructs must explicitly opt-in using block
|
||
compilation.
|
||
* bug fix: defstructs with empty initforms in the sbcl source are now
|
||
explicitly intiialized with NIL, as that is undefined behavior under
|
||
ANSI. This helps cross compilation hosts which do not implicitly
|
||
initialize empty initform slots to NIL. (Thanks to Karsten Poeck)
|
||
* bug fix: backtracing through assembly routines now works properly on
|
||
RISC-V.
|
||
* bug fix: ASH no longer gets miscompiled in certain edge cases on RISC-V.
|
||
* bug fix: &MORE args have been slightly optimized and are more correct on
|
||
RISC-V.
|
||
* bug fix: unused local functions with &REST/&KEY/&OPTIONAL now also issue a
|
||
deletion note.
|
||
* bug fix: APPLY on a large list ("large" being in excess of 2k to 16k items
|
||
depending on the platform) can no longer crash the gencgc collector.
|
||
* bug fix: sb-concurrency FRLOCK algorithm has been corrected. (lp#1087955)
|
||
* bug fix: block compilation now respects inlining declarations better (like
|
||
CMUCL).
|
||
* optimization: hashing of structures with raw slots for EQUALP hash tables
|
||
has been improved.
|
||
|
||
changes in sbcl-2.0.3 relative to sbcl-2.0.2:
|
||
* incompatible change: the external format now defaults to UTF-8 and is not
|
||
affected by LANG. SB-EXT:*DEFAULT-EXTERNAL-FORMAT* is now the only way to
|
||
change it.
|
||
* minor incompatible change: the undocumented :EPHEMERAL argument to
|
||
MAKE-THREAD has been removed.
|
||
* minor incompatible change: DECLARE type testing of structure types when
|
||
the SAFETY optimization quality is less than SPEED (but greater than 0) is
|
||
precise, rather than merely testing that an object is a (general)
|
||
STRUCTURE-OBJECT.
|
||
* platform support
|
||
** respect sunos platform assembler flag handling
|
||
** riscv architecture can be detected during the build
|
||
** enabled the sb-dynamic-core feature on riscv, sparc, and made it
|
||
unconditional everywhere
|
||
** cheneygc is an option for arm and arm64
|
||
* enhancement: the installed sbcl executable tree can be renamed or moved
|
||
without risk of incorrectly referencing a '.core' file from an obsolete
|
||
path. (lp#666086)
|
||
* optimization: transform (values-list (list one-item)) to (values one-item)
|
||
as multiple items were already recognized.
|
||
|
||
changes in sbcl-2.0.2 relative to sbcl-2.0.1:
|
||
* new feature: CMUCL-style block compilation support has been added,
|
||
allowing whole program optimization. It has been documented in a new
|
||
section of the manual entitled "Advanced Compiler Use and Efficiency
|
||
Hints". In particular, users of block compilation will find a large
|
||
speedup for numerical code, as functions which call or return floating
|
||
point values will keep everything unboxed.
|
||
* bug fix: in CHANGE-CLASS, handle non-standard slot-value-using-class for
|
||
:INSTANCE and :CLASS slots better. (reported by Shinmera on #sbcl)
|
||
* bug fix: REMHASH in an EQUAL or EQUALP hash-table works correctly on a
|
||
key for which EQUAL (respectively EQUALP) is reduced to EQ. (lp#1865094)
|
||
* bug fix: do not emit a warning for DEFCLASS slots with mismatched :TYPE
|
||
and :INITFORM when the class has a non-standard metaclass.
|
||
* bug fix: DISASSEMBLE on SPARC is less likely to spuriously annotate code
|
||
sequences as error traps.
|
||
|
||
changes in sbcl-2.0.1 relative to sbcl-2.0.0:
|
||
* minor incompatible change: some symbols have been removed from *FEATURES*
|
||
based on a determination of which should be impermissible to examine
|
||
via #+ and #- reader macros in user-written code.
|
||
* optimization: DEFSTRUCT copiers including COPY-STRUCTURE are able to
|
||
stack-allocate the result when declared dynamic-extent.
|
||
* bug fix: loop analysis code more robust. In particular, loop nesting depth
|
||
is computed more accurately, improving the register allocation around
|
||
loops.
|
||
|
||
changes in sbcl-2.0.0 relative to sbcl-1.5.9:
|
||
* minor incompatible change: heap relocation now works on Windows. Since
|
||
this feature now works on all platforms, it is enabled unconditionally and
|
||
the :RELOCATABLE-HEAP symbol no longer appears on *FEATURES* in any
|
||
builds. (Thanks to Luís Borges de Oliveira)
|
||
* enhancement: malformed type specifiers and occurrences of deprecated types
|
||
in :TYPE initargs of DEFCLASS and DEFINE-CONDITION slot specifications
|
||
are detected and result in compile-time errors and warnings respectively.
|
||
* enhancement: parallel contrib building, controlled by SBCL_MAKE_JOBS=-jX
|
||
the same as for the C runtime.
|
||
* bug fix: add a walker template for WITH-SOURCE-FORM.
|
||
* bug fix: start the summary of a compilation unit on a fresh line. (Thanks
|
||
to Zach Beane)
|
||
* bug fix: on Windows, PARSE-NATIVE-NAMESTRING produces an absolute
|
||
directory when parsing a bare drive name and :AS-DIRECTORY is specified.
|
||
(Thanks to Luís Borges de Oliveira)
|
||
* bug fix: on RISCV, the runtime is linked with libz if the core compression
|
||
feature is requested. (Thanks to Andreas Schwab)
|
||
* bug fix: ADJOIN using an EQL test and a KEY function only transforms into
|
||
an EQ test if the key function returns values for which EQ and EQL are
|
||
guaranteed to be the same.
|
||
* optimizations:
|
||
** the instruction sequence for multiple-value calls is more
|
||
efficient on x86-64.
|
||
** the direction flag is now unused on x86 and x86-64 when handling
|
||
an unknown number of return values. (Thanks to Fanael Linithien)
|
||
** the x86-64 backend is better able to use memory operands for arithmetic
|
||
operations.
|
||
** compilation of TYPECASE to a jump table is enabled when all the types
|
||
being tested are frozen.
|
||
** compilation of CASE and ECASE into a jump table has been implemented on
|
||
32- and 64-bit powerpc platforms.
|
||
** the implementation of Unicode normalization has been sped up.
|
||
** pretty-printing dispatch on conses is faster, particularly with the
|
||
standard pretty-print dispatch table. Deeply-nested forms should also
|
||
pretty-print faster.
|
||
|
||
changes in sbcl-1.5.9 relative to sbcl-1.5.8:
|
||
* platform support:
|
||
** a message intended to be more helpful will be displayed for an mmap
|
||
failure on OpenBSD.
|
||
** the soft-float ABI on ARM32 is better supported, in particular in
|
||
returning double floats from calls into C.
|
||
* optimizations:
|
||
** CASE and ECASE with symbols as keys may be optimized into a vector
|
||
lookup if all result forms are quoted or self-evaluating objects.
|
||
** CASE and ECASE can be optimized into a jump table on the x86[-64]
|
||
backends with arbitrary result forms provided that the clause keys
|
||
are either all fixnums, all characters, or all symbols.
|
||
** a number of forms are converted to use CASE in circumstances where that
|
||
makes sense, including calls to POSITION, MEMQ and MEMBER, and TYPECASE
|
||
where the types are MEMBER/EQL types.
|
||
** POSITION of a variable symbol in a constant sequence of symbols is
|
||
converted to CASE and thence to a jump table.
|
||
** TYPECASE of a variable where the clauses are member types is converted
|
||
to CASE and thence to a jump table.
|
||
** a number of slow instructions are no longer used on x86 and x86-64
|
||
machines. (Thanks to Fanael Linithien)
|
||
** the compiler is better at tracking the implications of branches after
|
||
EQ and EQL tests.
|
||
** parsing &KEY lists is slightly less register-intensive.
|
||
** a pattern-based peephole optimizer pass has been added, running some
|
||
simple transformations on the x86-64 backend.
|
||
* enhancements: more thorough compile-time type checking of various
|
||
initforms (defclass, &key, defstruct).
|
||
* bug fix: unions of complicated CONS types are less likely to cause an
|
||
infinite loop. (lp#1799719)
|
||
* bug fix: DESCRIBE on functions not named by extended function designators
|
||
no longer signals a type error. (lp#1850531, reported by Michal Herda)
|
||
|
||
changes in sbcl-1.5.8 relative to sbcl-1.5.7:
|
||
* platform support:
|
||
** support for Mac OS X Catalina
|
||
** improvements in interoperability with C code compiled with memory
|
||
sanitization options
|
||
** libsbcl.so links to zlib when sb-core-compression is enabled.
|
||
(lp#1845763, thanks to Juan M. Bello-Rivas)
|
||
** workarounds for BSD issues around mmap() and pthread_attr_setstack().
|
||
(lp#1845936)
|
||
** support SSE for bzero if available on OpenBSD
|
||
* optimizations:
|
||
** improved type understanding and translations for division operators
|
||
(including TRUNCATE, GCD, LCM).
|
||
** sequential comparisons and branches can elide intermediate comparisons.
|
||
(lp#1847284)
|
||
** convert EQUAL and EQUALP to EQL if either of the arguments is a type
|
||
for which the structural equality predicate is identical to the simpler
|
||
equality check. (lp#1848583)
|
||
** internal operators implementing string comparisons produce
|
||
simpler-to-consume values. (lp#1848776)
|
||
* bug fix: inspecting adjustable arrays and vectors with fill pointers works
|
||
better. (lp#1846191, reported by Yves Pagani)
|
||
|
||
changes in sbcl-1.5.7 relative to sbcl-1.5.6:
|
||
* platform support:
|
||
** many bug fixes to the experimental 64-bit PowerPC/Linux port, to the
|
||
extent that the little-endian variant passes all applicable tests in
|
||
the regression test suite; the big-endian variant currently has some
|
||
failures
|
||
** experimental support for sb-threads on 64-bit PowerPC/Linux
|
||
** support threads on x86-64 Sun OS (lp#1841280)
|
||
** handle PAX restrictions on mprotect() on NetBSD
|
||
** experimental support for HaikuOS
|
||
** the runtime is built as a position-independent executable by default on
|
||
x86-64 Linux and x86-64 Darwin
|
||
* fixes and enhancements related to Unicode:
|
||
** update of the data files to Unicode 8.0
|
||
** fix a bug in the implementation of the Unicode line breaking algorithm
|
||
regarding hebrew letters and hyphens
|
||
* enhancement: add a restart to OPEN with :IF-EXISTS :ERROR to allow
|
||
re-opening with :APPEND. (lp#806398, reported by Tobias Rittweiler)
|
||
* bug fix: compiler optimizations on SEARCH with :FROM-END T didn't account
|
||
for the empty sequence. (lp#1844821)
|
||
* bug fix: handle SETF of nested empty VALUES correctly. (lp#1806478)
|
||
* optimization: FLOOR and CEILING on rationals are simpler, and the
|
||
compiler's understanding of them is better.
|
||
|
||
changes in sbcl-1.5.6 relative to sbcl-1.5.5:
|
||
* platform support:
|
||
** experimental support for 64-bit PowerPC running Linux (extending Brian
|
||
Bokser's work from 2018), on both the v1 and v2 ABIs
|
||
* new feature: SB-EXT:SEARCH-ROOTS discovers paths from live objects to the
|
||
roots keeping them alive.
|
||
* enhancement: string output streams created with :ELEMENT-TYPE 'BASE-CHAR
|
||
use internal buffers of BASE-STRING instead of UCS-4 strings restricted
|
||
to the ASCII range, yielding a theoretical 4:1 space reduction.
|
||
* optimization: improved make-array type derivation for multi-dimensional
|
||
arrays. (lp#1838442)
|
||
* bug fix: compliant redefinition of classes whose previous definition
|
||
caused argument mismatch errors does not generate errors any more.
|
||
(lp#1840595, reported by 3b on #sbcl)
|
||
* bug fixes for issues caught by the random tester:
|
||
** never derive the type of TRUNCATE on arbitrary numbers as the empty
|
||
type. (lp#1838267)
|
||
** provide out-of-line definitions for internal machinery related to
|
||
FLOAT-SIGN. (lp#1838337)
|
||
** include COMPLEX in the derived type of SIGNUM when appropriate.
|
||
(lp#1838333)
|
||
** more correct internal type testing for function types. (lp#1838808,
|
||
lp#1838888, lp#1838986)
|
||
** don't assume that all objects of type (NOT SIMPLE-ARRAY) have an array
|
||
header. (lp#1838827)
|
||
** recognize that PHASE on non-positive numbers can return 0 as well as PI.
|
||
(lp#1838892)
|
||
|
||
changes in sbcl-1.5.5 relative to sbcl-1.5.4:
|
||
* platform support:
|
||
** SunOS: bug reports and patches from Richard Lowe in sb-posix tests
|
||
(lp#1837495), sb-concurrency tests (lp#1837817), unencapsulated tracing
|
||
(lp#1837307), float registers in interrupt contexts (lp#1837168)
|
||
* bug fix: do not generate version.lisp-expr from git describe if the git
|
||
repository is not sbcl's own. (lp#1836663, thanks to Richard Lowe)
|
||
* bug fix: compiler crash related to VALUES-LIST on a &REST argument in some
|
||
contexts. (lp#1836096, reported by Samuel Jimenez)
|
||
* bug fix: compiler hang related to constraint propagation. (lp#1835599,
|
||
reported by Mark Cox)
|
||
* bug fix: the inspector showed the wrong array element type. (lp#1835934,
|
||
reported by Richard M Kreuter)
|
||
* optimization: numerous improvements to hash table access and rehashing
|
||
* optimization: ASSERT compiles into substantially more compact code.
|
||
(lp#1835221)
|
||
|
||
changes in sbcl-1.5.4 relative to sbcl-1.5.3:
|
||
* minor incompatible change: hash tables on 64-bit machines consume roughly
|
||
20% less memory but can only grow to hold 2^31 entries (theoretically)
|
||
due to use of 31-bit indices internally.
|
||
* platform support:
|
||
** RISC-V: improve rotate-byte support (thanks to Philipp Matthias
|
||
Schaefer)
|
||
* bug fix: the system reasons more correctly regarding the array rank of
|
||
complicated array types. (reported by Bart Botta)
|
||
* bug fix: DOUBLE-FLOAT-P never gets weaked to NUMBERP. (reported by Bart
|
||
Botta)
|
||
* enhancement: the regression test suite can now benefit from paralellism,
|
||
completing much faster when enough compute power is available.
|
||
* optimization: readtables with non-base-char dispatch characters are less
|
||
inefficient.
|
||
* optimization: INTERN performs fewer redundant type checks.
|
||
* optimization: tests for PATHNAMEP and STRUCTURE-OBJECT (including in
|
||
computing hash functions) are faster.
|
||
|
||
changes in sbcl-1.5.3 relative to sbcl-1.5.2:
|
||
* platform support:
|
||
** RISC-V: numerous bug fixes and improvements
|
||
** all platforms: better run-program performance when used from multiple
|
||
threads.
|
||
* enhancement: (declaim (optimize (debug 2))) ensures compilation of
|
||
top-level forms, providing better debugging for simple forms that are
|
||
otherwise "byte-code interpreted" when compiled into FASLs.
|
||
* bug fix: use of finalizers could in rare circumstances cause a crash in
|
||
the garbage collector.
|
||
* bug fix: show extended function designators, e.g. (setf foo), in the
|
||
disassembler
|
||
* optimization: reduced overhead of calling NTH/NTHCDR.
|
||
* optimization: improved FLOAT-SIGN on DOUBLE-FLOATs on 64-bit platforms
|
||
|
||
changes in sbcl-1.5.2 relative to sbcl-1.5.1:
|
||
* enhancement: RISC-V support with the generational garbage collector.
|
||
* enhancement: command-line option "--tls-limit" can be used to alter the
|
||
maximum number of thread-local symbols from its default of 4096.
|
||
* enhancement: better muffling of redefinition and lambda-list warnings
|
||
* platform support:
|
||
** OS X: use Grand Central Dispatch semaphores, rather than Mach semaphores
|
||
** Windows: remove non-functional definition of make-listener-thread
|
||
* new feature: decimal reader syntax for rationals, using the R exponent
|
||
marker and/or *READ-DEFAULT-FLOAT-FORMAT* of RATIONAL.
|
||
* optimization: various Unicode tables have been packed more efficiently
|
||
|
||
changes in sbcl-1.5.1 relative to sbcl-1.5.0:
|
||
* enhancement: restarts for missing package errors.
|
||
* optimization: FIND-PACKAGE should be faster even when run in the context
|
||
of a package with local package-nicknames.
|
||
* optimization: fix TRUNCATE deftransform's results to have well-defined
|
||
signs
|
||
* bug fix: thread-safety problems in RUN-PROGRAM with :PTY.
|
||
* bug fix: SLEEP transform could never fire.
|
||
* build enhancement: defend against quirky host floating point
|
||
implementation
|
||
* test enhancement: allow more parallelism in running the
|
||
regression test suite
|
||
|
||
changes in sbcl-1.5.0 relative to sbcl-1.4.16:
|
||
* enhancement: SB-COVER emulates IN-PACKAGE when recording source maps;
|
||
this makes it possible to generate coverage for forms that uses local
|
||
package nicknames, or otherwise must be read in the correct package.
|
||
* build enhancement: new host quirks mechanism, support for building under
|
||
ABCL and ECL (as well as CCL, CMUCL, CLISP and SBCL itself)
|
||
* optimization: (FIND-SYMBOL x "P") for constant "P" executes faster,
|
||
subject to "P" not being a package-local nickname of any
|
||
package. Similarly INTERN. (lp#1814924)
|
||
* optimization: bounds checks are elided when possible where the same array
|
||
is dereferenced multiple times.
|
||
* bug fix: initargs are now deduplicated when computing effective slots.
|
||
* bug fix: TREE-EQUAL with :TEST 'EQL now correctly computes its answer.
|
||
(reported by Bahodir Mansurov)
|
||
* bug fix: compiled (COERCE x 'FLOAT) no longer coerces double-floats into
|
||
single-floats. (reported by J. Gareth Williams)
|
||
|
||
changes in sbcl-1.4.16 relative to sbcl-1.4.15:
|
||
* minor incompatible change: ENSURE-DIRECTORIES-EXIST no longer establishes
|
||
a CONTINUE restart in case of an error.
|
||
* minor incompatible change: Defining macros (DEFVAR, etc) which require a
|
||
symbol as the name will fail to macroexpand if given a non-symbol.
|
||
* enhancement: the unexported restart names SB-{ALIEN,FASL,IMPL,PCL}::RETRY
|
||
have been replaced by SB-EXT:RETRY.
|
||
|
||
changes in sbcl-1.4.15 relative to sbcl-1.4.14:
|
||
* enhancement: added AVX2 instructions on x86-64, which can be used with
|
||
SB-SIMD-PACK.
|
||
* enhancement: specializer name parsing is less lenient and signals a
|
||
specific condition in case of syntax errors. (lp#1808681)
|
||
* enhancement: provide interactive restarts for some file-system errors.
|
||
* enhancement: COMPILE no longer acquires the world lock.
|
||
(fixes most occurrences of lp#308959)
|
||
* bug fix: RUN-PROGRAM is more responsive and less likely to deadlock
|
||
(lp#1702178, lp#1808641)
|
||
* bug fix: traceroot can search for simple-fun targets (lp#1808659, reported
|
||
by Michal Herda)
|
||
* compiler bug fixes:
|
||
** related to code generation: lp#1805899, lp#1806982, lp#1807455
|
||
** related to interpreting and constant-folding: lp#1806513
|
||
** related to the type system: lp#1804759, lp#1804796
|
||
** related to eq-testing of structure slots: lp#1809582, lp#1808273
|
||
** related to dynamic-extent: lp#1809565, lp#1809253, lp#1809485,
|
||
lp#1739652
|
||
** related to GC safety: lp#308949
|
||
|
||
changes in sbcl-1.4.14 relative to sbcl-1.4.13:
|
||
* enhancement: attempting to build on openbsd 6.0 or newer without
|
||
the wxallowed mount option now results in a more useful error message.
|
||
* enhancement: by popular demand, SB-EXT now exports two functions
|
||
HEAP-ALLOCATED-P and STACK-ALLOCATED-P to assist in writing debug
|
||
assertions that objects in hash-tables are not stack-allocated, etc.
|
||
* bug fix: restored sb-thread support on OpenBSD.
|
||
|
||
changes in sbcl-1.4.13 relative to sbcl-1.4.12:
|
||
* minor incompatible change: PRINT-TYPE and PRINT-TYPE-SPECIFIER are not
|
||
exported from SB-EXT. These were never announced, so this change would
|
||
only affects users who discovered these undocumented functions.
|
||
* enhancement: SB-EXT:SEARCH-ROOTS and SB-EXT:GC-AND-SEARCH-ROOTS
|
||
are supported on all backends that use gencgc.
|
||
|
||
changes in sbcl-1.4.12 relative to sbcl-1.4.11:
|
||
* minor incompatible change: a number of platform-specific elements of
|
||
*FEATURES* related to whether the system implements particular strategies
|
||
have been removed.
|
||
* minor incompatible change: some changes to the (internal) implementation
|
||
details of the x86 and x86-64 have necessitated changes to some low-level
|
||
libraries.
|
||
* enhancement: attempting to transfer control through GO or RETURN-FROM to
|
||
frames which no longer exist are now caught and handled by the debugger.
|
||
* enhancement: identical code (at the machine instruction level) can now be
|
||
shared between functions, if explicitly requested.
|
||
* enhancement: SB-EXT:STRING-TO-OCTETS and SB-EXT:OCTETS-TO-STRING are now
|
||
documented.
|
||
* bug fixes: fix a number of bugs revealed by random testing (lp#1793171,
|
||
lp#1793150, lp#1791550, lp#1792030, lp#1791059, lp#1790157, lp#1790717,
|
||
lp#1790703)
|
||
|
||
changes in sbcl-1.4.11 relative to sbcl-1.4.10:
|
||
* minor incompatible change: changes to the (internal) assembler on x86
|
||
and x86-64 may cause problems to some low-level third-party libraries:
|
||
** new macro EA for defining an effective address, without size
|
||
information;
|
||
** an explicit size modifier is now needed for MOVSX and MOVSZ
|
||
instructions;
|
||
** MOVD and MOVQ move a single size of operand by definition.
|
||
* enhancement: support the latest MinGW (lp#1786731, reported by il71)
|
||
* enhancement: checks for modifications of constants can now be done in
|
||
local (FLET/LABELS) functions.
|
||
* optimization: improved type checking routines for various compound types.
|
||
* optimization: array bound checks are elided on vectors when the index is
|
||
known to be less than the length, including LOOP ACROSS.
|
||
* optimization: the register allocator's use of temporaries is somewhat
|
||
improved.
|
||
* optimization: checking widetags involves fewer conditional jumps on x86
|
||
and x86-64.
|
||
* bug fix: fix a number of bugs related to constant improper lists as
|
||
sequence arguments (lp#1768563, lp#1768568, lp#1768652)
|
||
|
||
changes in sbcl-1.4.10 relative to sbcl-1.4.9:
|
||
* enhancement: added SB-EXT:MAKE-WEAK-VECTOR.
|
||
* enhancement: constant-modification detection warnings can be generated
|
||
in the presence of conditional constructs.
|
||
* optimization: better bounds-checking on x86[-64] and ARM64.
|
||
* optimization: adding 1 to or subtracting 1 from a fixnum variable does not
|
||
cons.
|
||
* bug fixes: fix a number of bugs revealed by random testing (lp#1782826,
|
||
lp#1779878, lp#1779737)
|
||
|
||
changes in sbcl-1.4.9 relative to sbcl-1.4.8:
|
||
* enhancement: SB-COVER instrumentation for x86[-64] has signficantly less
|
||
overhead. The performance penalty for 64-bit code has been measured at
|
||
around 30% slower than uninstrumented code as contrasted with slowdowns
|
||
in excess of 100% previously.
|
||
* enhancement: tracing a generic function with the :METHODS T option
|
||
produces output corresponding to each method called under the default
|
||
:ENCAPSULATE NIL tracing implementation.
|
||
* bug fix: updated TRACE documentation. (lp#574614 was actually already
|
||
fixed, but there were other issues.)
|
||
* bug fix: fixed x86 GC bug causing heap corruption. (lp#1749369)
|
||
* bug fix: improved compatibility with macOS High Sierra and graphical
|
||
applications.
|
||
|
||
changes in sbcl-1.4.8 relative to sbcl-1.4.7:
|
||
* bug fix: redefinition of method combinations now does the expected thing;
|
||
generic functions using that method combination have their effective
|
||
methods lazily recomputed according to the new definition of the method
|
||
combination. (Reported by Didier Verna at ELS 2018)
|
||
* bug fix: :arguments argument to the long form of DEFINE-METHOD-COMBINATION
|
||
is now implemented more correctly, supporting suppliedp variables and
|
||
&optional defaults. (Reported by Bruno Haible, lp#309084)
|
||
|
||
changes in sbcl-1.4.7 relative to sbcl-1.4.6:
|
||
* enhancement: better handling of unknown keyword arguments (lp#1750466)
|
||
* enhancement: namestrings can now be computed for certain pathnames that
|
||
previously did not have namestrings because of #\. characters in their
|
||
name and/or type components.
|
||
* bug fix: compiling a SLEEP call with a float positive infinity argument no
|
||
longer causes an internal error (lp#1754081)
|
||
* bug fix: keyword arguments provided to a generic function with
|
||
EQL-specialized methods are checked more correctly (reported by Syll,
|
||
lp#1760987)
|
||
|
||
changes in sbcl-1.4.6 relative to sbcl-1.4.5:
|
||
* enhancement: DISASSEMBLE on a symbol naming a macro will disassemble
|
||
the expander, not the code that traps attempted FUNCALL of the macro.
|
||
* enhancement: The sb-sprof contrib now provides an experimental interface
|
||
for accessing collected profiler data.
|
||
* enhancement: The instruction-level profiling of the sb-prof contrib
|
||
annotates the disassembler output more efficiently.
|
||
* optimization: improved dynamic-extent handling of nested variables.
|
||
|
||
changes in sbcl-1.4.5 relative to sbcl-1.4.4:
|
||
* minor incompatible change: building with/without the :sb-package-locks
|
||
feature is no longer an option. Package locks are always compiled in,
|
||
and removing :sb-package-locks from *features* will have no effect.
|
||
* enhancement: FIND-PACKAGE does not acquire a mutex
|
||
* enhancement: cheneygc can perform heap relocation on startup
|
||
* enhancement: in threaded builds, finalizers execute in a system-internal
|
||
thread so that a user thread which invokes GC is unblocked from performing
|
||
work as soon it returns from GC and invokes any post-GC hooks.
|
||
As such, it is more important than before to avoid assumptions about
|
||
special variable bindings in finalizers, even in single-threaded code.
|
||
* optimization: faster (funcall (or function symbol)) on x86-64.
|
||
|
||
changes in sbcl-1.4.4 relative to sbcl-1.4.3:
|
||
* bug fix: pathname accessors such as PATHNAME-DIRECTORY work on
|
||
SYNONYM-STREAMs.
|
||
* bug fix: (pathname-{device,directory,name,type} ... :case :common) works
|
||
as expected. In particular MAKE-PATHNAME composed with the accessors
|
||
roundtrips properly when both use the same :case. (lp#1739906)
|
||
* bug fix: DIRECTORY no longer gets confused when the value of
|
||
*DEFAULT-PATHNAME-DEFAULTS* has a name or type component. (lp#1740563)
|
||
* bug fix: pattern pieces in pathname components are correctly escaped
|
||
during unparsing.
|
||
* bug fix: DELETE-DIRECTORY no longer signals an error when the directory is
|
||
supplied as a pathname with name and/or type components containing escaped
|
||
characters. (lp#1740624)
|
||
* bug fix: weak hash-tables no longer cause GC time to scale superlinearly
|
||
(lp#1241771)
|
||
* bug fix: CANCEL-FINALIZATION operates in approximately constant time
|
||
per operation (lp#1587983)
|
||
* bug fix: big-endian MIPS systems now (mostly) work again (broken since
|
||
1.3.14.x).
|
||
* bug fix: backtrace from arg-count errors on systems other than x86, x86-64,
|
||
ARM, and ARM64 now works again.
|
||
* bug fix: backtrace from asynchronous interrupts on non-x86, non-x86-64
|
||
systems should now be more reliable.
|
||
* enhancement: warnings and errors referring to bindings established by LET,
|
||
LET*, FLET and LABELS point to the offending form more accurately.
|
||
* enhancement: backtrace for invalid argument count produces the exact
|
||
supplied arguments including the extra ones on all platforms (no longer
|
||
just x86, x86-64, ARM, and ARM64).
|
||
|
||
changes in sbcl-1.4.3 relative to sbcl-1.4.2:
|
||
* enhancement: SLEEP respects deadlines established by SB-SYS:WITH-DEADLINE.
|
||
* bug fix: DECODE-TIMEOUT and operators accepting a timeout no longer signal
|
||
an error when called with an argument that is of type (real 0) but not
|
||
(unsigned-byte 62) (lp#1727789)
|
||
* bug fix: fixed heap exhaustion bug when consing millions of small objects
|
||
* bug fix: sb-safepoint builds are now a lot less prone to deadlocks and odd
|
||
crashes (lp#1424031, lp#1268710)
|
||
* bug fix: argumentless CALL-NEXT-METHOD where specialized-to-T or
|
||
unspecialized parameters are mutated now uses the original (non-mutated)
|
||
parameter values (lp#1734771)
|
||
* bug fix: memory faults from lisp no longer use (thread-and-interrupt
|
||
unsafe) global storage for fault addresses (everywhere), and now have
|
||
cleaner backtraces (on x86 and x86-64). (lp#309068)
|
||
* bug fix: pathnames with a directory component of the form
|
||
(:absolute {:up,:wild,:wild-inferiors}) no longer fail to unparse.
|
||
(lp#1738775)
|
||
* bug fix: more reliable signal handling on macOS.
|
||
|
||
changes in sbcl-1.4.2 relative to sbcl-1.4.1:
|
||
* minor incompatible change: SB-EXT:QUIT is no longer marked as deprecated
|
||
and behaves like SB-EXT:EXIT.
|
||
* enhancement: ASDF updated to 3.3.1. The ASDF release is dedicated to
|
||
the late Elias Pipping who put enormous amounts of work into it despite
|
||
his terminal illness. Thank you and rest in peace. (lp#1681201)
|
||
* enhancement: alien routines compiled with '-fsanitize=thread' and/or
|
||
'-fsanitize=memory' cause fewer false positives in error reporting.
|
||
* optimization: fewer instances of consing float constants at runtime.
|
||
* bug fix: a number of compiler bugs detected by Paul F. Dietz' randomized
|
||
tester. (lp#1731503, lp#1730699, lp#1723993, lp#1730434, lp#1661911,
|
||
lp#1729639, lp#1729471, lp#1728692)
|
||
* bug fix: better errors from NAMESTRING and friends on pathnames with no
|
||
namestrings. (lp#792154)
|
||
* bug fix: EQUAL and EQUALP compiler transforms were too confident in
|
||
deriving a result. (lp#1732277, lp#1732225)
|
||
* bug fix: FILL sometimes returned the underlying data vector rather than
|
||
the given array. (lp#1732553)
|
||
* bug fix: SEARCH returned the wrong answer in some cases. (lp#1732952)
|
||
* bug fix: the type (COMPLEX INTEGER) behaves more as specified by Function
|
||
TYPEP, which has stronger constraints than System Class COMPLEX.
|
||
(Reported by Eric Marsden, lp#1733400)
|
||
|
||
changes in sbcl-1.4.1 relative to sbcl-1.4.0:
|
||
* optimization: faster foreign callbacks.
|
||
* enhancement: complex arrays can be stack allocated.
|
||
* enhancement: PROCESS-KILL now exists on win32 and PROCESS-PID actually
|
||
returns the PID.
|
||
* optimization: the register allocation method used by the compiler when
|
||
optimizing for speed is now faster for functions with large bodies.
|
||
* bug fix: SB-INTROSPECT:ALLOCATION-INFORMATION works on big-endian CPUs
|
||
(fixes lp#490490 for real rather than by disabling a test)
|
||
* bug fix: code objects and bignums of large enough size to be placed
|
||
on GC pages without any other object no longer cause accidental copying
|
||
during garbage collection. (gencgc only)
|
||
* bug fix: sb-fasteval failure with 0-argument lambdas (lp#1722715)
|
||
* bug fix: RUN-PROGRAM doesn't leak handles on win32 and PROCESS-CLOSE
|
||
doesn't crash. (lp#1724472)
|
||
|
||
changes in sbcl-1.4.0 relative to sbcl-1.3.21:
|
||
* minor incompatible change: DESTRUCTURING-BIND treats non-toplevel () as
|
||
nested empty pattern. This seems to be what the standard mandates, so
|
||
conforming code should not be affected.
|
||
* ehancement: (GC :GEN 7) with gencgc will zero-fill dead pseudo-static
|
||
objects so that they do not spuriously cause reachability of objects that
|
||
would have been otherwise dead.
|
||
* enhancement: PROCESS-STATUS now tracks stopped and continued processes
|
||
properly (also fixes lp#1624941, based on patch by Elias Pipping).
|
||
* bug fix: INSPECT handles errors signaled while printing slot
|
||
values. (lp#454682)
|
||
* bug fix: DESCRIBE works on classes like it used to.
|
||
* bug fix: *LOAD-PATHNAME* and *LOAD-TRUENAME* are bound to pathnames
|
||
when processing a sysinit or userinit file
|
||
* bug fix: save-lisp-and-die is able to collect more garbage on non-x86oid
|
||
gencgc targets.
|
||
* bug fix: fixed out-of-bounds array read in optimized POSITION on bit-vectors
|
||
* bug fix: signal emulation respects the 128-byte stack red zone on x86-64
|
||
macOS.
|
||
|
||
changes in sbcl-1.3.21 relative to sbcl-1.3.20:
|
||
* minor incompatible change: the CLOBBER-IT restart for defstruct redefintion
|
||
has been removed after a 15 year deprecation cycle. Use the new name,
|
||
RECKLESSLY-CONTINUE. Note also that this restart is hidden if deemed unsafe
|
||
due to altered placement of untagged slots in the structure.
|
||
* enhancement: the assignment of -DSBCL_PREFIX= in src/runtime/GNUmakefile
|
||
can be removed as a local patch, which results in an sbcl executable
|
||
that finds its core file relative to itself by looking in "../lib/sbcl".
|
||
* enhancement: backends using the generational GC are able to relocate
|
||
dynamic space anywhere the operating system places it.
|
||
This feature can be disabled by removing :relocatable-heap from the
|
||
build configuration. Not supported on Windows.
|
||
* enhancement: DEFMETHOD no longer signals IMPLICIT-GENERIC-FUNCTION-WARNING.
|
||
* enhancement: better type conflict detection for high order functions, e.g.
|
||
(find x "123" :test #'=)
|
||
* enhancement: the tabular output of ROOM is aligned dynamically, preventing
|
||
misaligned tables for larger sizes or counts.
|
||
* enhancement: ROOM reports on immobile space if applicable.
|
||
* optimization: optimized external-format routines.
|
||
* bug fix: SB-INTROSPECT:ALLOCATION-INFORMATION returns :IMMOBILE
|
||
instead of :FOREIGN for objects in immobile space.
|
||
* bug fix: dotted lists in special forms and function call forms signal
|
||
an appropriate error
|
||
* bug fix: EQUALP hash tables with pathname keys now ignore internal slots.
|
||
(lp#1712944, reported by Jason Miller)
|
||
|
||
changes in sbcl-1.3.20 relative to sbcl-1.3.19:
|
||
* minor incompatible change: DEF{GENERIC,METHOD} no longer accept some
|
||
illegal lambda lists such as (defgeneric bar (foo &key foo)) or
|
||
(defgeneric baz (t)) that were accepted before.
|
||
* optimization: a valueless &AUX binding in a BOA constructor does not
|
||
force all slots reads in safe code to perform a full type check.
|
||
* optimization: ATOMIC-PUSH and ATOMIC-POP generate better code
|
||
* bug fix: the low-level debugger would erroneously print - or not print
|
||
as the case may be - "(bad-address)" for some objects depending whether
|
||
the --dynamic-space-size argument was used at Lisp startup
|
||
* bug fix: a DEFCONSTANT with a non non-eql-comparable object as the value
|
||
could cause miscompilation if that constant appeared as the default
|
||
expression for an &OPTIONAL binding
|
||
* bug fix: generic function lambda lists are now checked for repeated
|
||
and otherwise illegal entries. (lp#1704114)
|
||
* bug fix: setting gencgc_verbose = 1 could cause deadlock in fprintf()
|
||
depending on the platform's stdio implementation. The relevant code
|
||
has been changed to use snprintf() and write() instead.
|
||
|
||
changes in sbcl-1.3.19 relative to sbcl-1.3.18:
|
||
* enhancement: specialized arrays can be printed readably without using
|
||
*read-eval*
|
||
* enhancement: SB-DEBUG:PRINT-BACKTRACE truncates huge string arguments.
|
||
The full string remains available for inspection via (SB-DEBUG:ARG).
|
||
* bug fix: backtracing from several threads at once could fail
|
||
* bug fix: floating-point infinities could not be used as keys
|
||
in EQUALP hash tables. (lp#1696274)
|
||
* bug fix: random sb-fasteval failures. (lp#1642708)
|
||
* bug fix: align the stack in callback wrappers to defend against C
|
||
compiler over-aggressive use of SIMD. (lp#1697528)
|
||
* bug fix: don't try to find the class when reporting that a class does
|
||
not exist for a primitive type. (lp#1697226)
|
||
|
||
changes in sbcl-1.3.18 relative to sbcl-1.3.17:
|
||
* minor incompatible change: existing values of CFLAGS, ASFLAGS,
|
||
CPPFLAGS, and LINKFLAGS will be incorporated into C compiler
|
||
invocations when building from source.
|
||
* minor incompatible change: the result of WRITE-TO-STRING may be
|
||
a BASE-STRING if all characters written are of type BASE-CHAR.
|
||
* minor incompatible change: the broadcast stream with no output
|
||
streams is a singleton object. That object satisfies OPEN-STREAM-P
|
||
regardless of how many times CLOSE is invoked on it.
|
||
* enhancement: x86[-64] backends contain an experimental feature
|
||
which aids in demonstrating reachability of any object starting
|
||
from a tenured object or a thread stack by producing a proof
|
||
as a sequence of pointers to follow.
|
||
The file "tests/traceroot.test.sh" contains an example usage.
|
||
* enhancement: if the alien symbol "gc_coalesce_string_literals" is
|
||
set to 1 prior to SAVE-LISP-AND-DIE, then similar string constants
|
||
loaded from different fasl files may be collapsed to one object.
|
||
If the variable is set to 2, then additionally strings which are
|
||
STRING= in code resulting from COMPILE can be coalesced.
|
||
For instance, two functions returning the literal string "HI"
|
||
might return EQ strings after collapsing, which may be undesired
|
||
in a particular use. The flag pertains to gencgc only.
|
||
* enhancement: SXHASH values on pathnames are better distributed
|
||
* bug fix: MAKE-PATHNAME removes empty strings as components of a
|
||
directory, as is permitted: "Whenever a pathname is constructed
|
||
the components may be canonicalized if appropriate."
|
||
* optimization: various printer and FORMAT performance enhancements.
|
||
* bug fix: GET-FOREGROUND no longer fails in case all other interactive
|
||
threads exit (lp#1682671, reported by Syll)
|
||
* bug fix: RELEASE-FOREGROUND always removes the current thread from the
|
||
list of interactive threads. (lp#1682867, reported by Syll)
|
||
|
||
changes in sbcl-1.3.17 relative to sbcl-1.3.16:
|
||
* enhancement: memory overhead from the garbage collector's metadata
|
||
is reduced on 64-bit architectures; no change for 32-bit.
|
||
* enhancement: further garbage collector speedups affecting
|
||
pinned objects on conservative backends, and simple-vectors.
|
||
* enhancement: on Linux a custom handler for SIGSEGV can be called
|
||
for page faults outside of dynamic space by changing the C symbol
|
||
"sbcl_fallback_sigsegv_handler".
|
||
* bug fix: sb-cover does not lose source positions for AND/OR/COND.
|
||
* bug fix: random disassembler failures. (lp#1527931)
|
||
* The bundled sb-md5 contrib has been updated to release 2.0.4
|
||
which is licensed under Creative Commons CC0 per author's statement
|
||
https://github.com/pmai/md5/commit/fd134e71b71a10ab78905833a7cb9d4d6817c589
|
||
(Refer to NEWS and COPYING in the contrib/sb-md5 subdirectory)
|
||
|
||
changes in sbcl-1.3.16 relative to sbcl-1.3.15:
|
||
* optimization: various small tweaks give around 5% faster garbage
|
||
collection
|
||
* bug fix: better detection of when an impossible code path does
|
||
not need a warning. (lp#1668619)
|
||
* bug fix: stronger attempts to disable position-independent
|
||
executable building. (lp#1668986, patch from Mark Wright)
|
||
* bug fix: OPEN :IF-EXISTS NIL signalled a condition on Windows.
|
||
(lp#1674437, reported by Jan Idzikowski)
|
||
|
||
changes in sbcl-1.3.15 relative to sbcl-1.3.14:
|
||
* minor incompatible change: the reader will when feasible create
|
||
new symbols using a BASE-STRING for the print name. Additionally,
|
||
string literals can favor the base-string type if desired, though
|
||
the default is to always return UTF-32 strings for compatibility.
|
||
A preference for base-string does not disable reading Unicode.
|
||
The choice is controlled via (SETF READTABLE-BASE-CHAR-PREFERENCE).
|
||
If Unicode was disabled at build time, this setting does nothing.
|
||
* enhancement: SBCL generates more debug information by default.
|
||
* enhancement: type errors provide context information, such as which
|
||
variable is being bound, which slot of which structure is being set.
|
||
* enhancement: if #+immobile-symbols is in build-time *FEATURES* (not
|
||
enabled by default), then symbols will never be moved in memory
|
||
except by SAVE-LISP-AND-DIE. Immobility has helpful implications for
|
||
code generation as well as interaction with foreign routines.
|
||
This feature can only be enabled if #+immobile-space is enabled.
|
||
* enhancement: undefined function errors can be restarted on x86-64, to
|
||
either retry calling the function again or call a user supplied function.
|
||
* enhancement: sb-ext:restrict-compiler-policy accepts an upper bound in
|
||
addition to a lower bound.
|
||
* enhancement: #+immobile-code improves the speed of function calling.
|
||
Some delay may be noticed when redefining an existing function
|
||
from a saved core file however.
|
||
* defaults change: sb-ext:*disassemble-annotate* default to NIL, due to its
|
||
poor reliability.
|
||
* new feature: SB-LINKABLE-RUNTIME, allowing linking with extra object
|
||
files to help with delivery of executables. (Thanks to François-René
|
||
Rideau)
|
||
* bug fix: data race in GENTEMP fixed - it can no longer return the
|
||
same interned symbol to multiple threads if called concurrently
|
||
* bug fix: interrupting LOADing of FASLs does not leave functions without
|
||
source locations. (lp#540276)
|
||
* bug fix: DYNAMIC-EXTENT-declared results of NOTINLINE local functions were
|
||
treated as if they were actually stack allocated (lp#1659964)
|
||
* bug fix: correctly handle the case of a non-local exit within a function
|
||
terminating the extent of dynamic-extent, dynamic-bound variables in the
|
||
presence of multiple-values (lp#1655011)
|
||
* bug fix: handling of SB-SYS:WITH-PINNED-OBJECTS in the interpreters (both
|
||
sb-eval and sb-fasteval) now actually pins objects on gencgc.
|
||
* bug fix: AVX registers are preserved during exceptions on x86-64 macOS.
|
||
* bug fix: (directory "SOMETHING/*/**/MORE") is no longer equivalent to
|
||
(directory "SOMETHING/**/MORE")
|
||
* bug fix: better console IO on Windows (lp#1660906)
|
||
|
||
changes in sbcl-1.3.14 relative to sbcl-1.3.13:
|
||
* minor incompatible change: the SB-PCL walker no longer recognizes
|
||
macros expanding into a DECLARE expression. This is not a language change,
|
||
since ANSI forbids such usage (X3J13 issue DECLARE-MACROS:FLUSH).
|
||
* enhancement: for several macros such as MULTIPLE-VALUE-{BIND,SETQ}, COND,
|
||
DO{,*,LIST}, {RESTART,HANDLER}-{BIND,CASE}, *CASE, conditions signaled
|
||
during macroexpansion point to the form that caused the problem more
|
||
accurately.
|
||
* enhancement: the "--noinform" command-line option inhibits output from
|
||
save-lisp-and-die in addition to removing the startup banner.
|
||
* bug fix: PROCESS-KILL failed to return errno if the system call failed
|
||
* optimization: slightly more comprehensive treatment of the keyword
|
||
arguments to MAKE-ARRAY in compiler transformations.
|
||
|
||
changes in sbcl-1.3.13 relative to sbcl-1.3.12:
|
||
* enhancement: SET triggers package locks on undefined variables.
|
||
(lp#1645152)
|
||
* enhancement: new Windows specific option to run-program, :escape-arguments
|
||
(lp#1503496)
|
||
* enhancement: recompiling a MAKE-INSTANCE form with an initarg :INITARG
|
||
CONSTANT where CONSTANT names a constant variable picks up the new value
|
||
of CONSTANT in case it has been redefined. (lp#1644944)
|
||
* optimization: faster TYPEP on undefined at compile-time types and upcoming
|
||
class definitions. (lp#1082967)
|
||
* optimization: memory consumption of each STANDARD-OBJECT instance is
|
||
reduced by 2 words if the compact-instance-header feature is enabled.
|
||
* optimization: CONDITION instances are quicker to allocate.
|
||
* optimization: unoptimized calls to FILL on specialized vectors are now
|
||
just as fast as T vectors.
|
||
* bug fix: get-timezone returns corret DST on 64-bit Windows. (lp#1641058)
|
||
* bug fix: cross reference information in fasls is no longer incompatible
|
||
between different cores (lp#1648186)
|
||
|
||
changes in sbcl-1.3.12 relative to sbcl-1.3.11:
|
||
* enhancement: on x86-64, compiled functions loaded from fasl files
|
||
can not be moved, but can be freed, by GC. Additionally, COMPILE will
|
||
produce immobile code if SB-C::*COMPILE-TO-MEMORY-SPACE* is set to
|
||
:IMMOBILE. (Caution: the flag is experimental and subject to change.)
|
||
The benefits are better physical separation of code from data,
|
||
and potentially easier examination of live images by external tools.
|
||
* enhancement: the docstring for SAVE-LISP-AND-DIE has been amended to
|
||
say that the :ROOT-STRUCTURES parameter is not meaningless on gencgc,
|
||
depending on the platform.
|
||
* bug fix: calling a named function (e.g. a DEFUN) concurrently with
|
||
redefining that same function could lead to execution of random bytes.
|
||
* bug fix: yes-or-no-p accepts formatter functions (lp#1639490)
|
||
* bug fix: better handling of exceptions on macOS.
|
||
|
||
changes in sbcl-1.3.11 relative to sbcl-1.3.10:
|
||
* minor incompatible change: SB-EXT:*INTEXP-MAXIMUM-EXPONENT* is removed.
|
||
* enhancement: TRACE ... :REPORT {TRACE,NIL} now work as advertised in the
|
||
documentation string (based on patch by Patrick Stein)
|
||
* enhancement: support unboxed signed-word structure slots on x86, x86-64
|
||
and ARM64. (lp#377616)
|
||
* optimization: faster logical bit-array operations on multidimensional
|
||
arrays.
|
||
* optimization: better GC performance in the presence of many threads.
|
||
(patch by Ilya Perminov, lp#1339924)
|
||
* optimization: multiple-value-call is optimized with multiple argument
|
||
forms, not just one. (lp#753803)
|
||
* bug fix: MAKE-ALIEN-STRING returns the number of allocated bytes as a
|
||
second value as advertised (reported by Johann 'Myrkraverk' Oskarsson)
|
||
* bug fix: when TO-READTABLE is supplied to COPY-READTABLE, it will
|
||
contain only the macros in FROM-READTABLE and no others. (lp#1631506)
|
||
* enhancement: gencgc has been modified for x86-64 on Linux and macOS
|
||
to a support mark-and-sweep as well as the traditional copying strategy.
|
||
It is conceivable that some applications might be adversely affected.
|
||
Please see ':immobile-space' in 'base-target-features.lisp-expr'
|
||
for further details, and possible reasons to disable this feature.
|
||
* enhancement: x86-64 supports shrinking the fixed overhead in a structure
|
||
from 2 words to 1 word, reducing memory consumption in applications
|
||
which create many small structures.
|
||
|
||
changes in sbcl-1.3.10 relative to sbcl-1.3.9:
|
||
* enhancement: more compact low-level error signaling code
|
||
* enhancement: more compact encoding of cross-reference information
|
||
* optimization: faster out of line fixnum-float comparisons.
|
||
* optimization: filling a known simple-vector with a constant value
|
||
is about as fast in unoptimized code as in code compiled with (SPEED 3),
|
||
and the x86-64 implementation is able to use SSE instructions.
|
||
* bug fix: correctly handle the case of a non-local exit within a function
|
||
terminating the extent of dynamic-extent functions and variables in the
|
||
presence of multiple-values (lp#1563127)
|
||
* bug fix: restore builds on the latest OSX with the latest Xcode
|
||
(lp#1470996)
|
||
|
||
changes in sbcl-1.3.9 relative to sbcl-1.3.8:
|
||
* minor incompatible change: NAMESTRING prefers to return a BASE-STRING
|
||
instead of (ARRAY CHARACTER (*)) when possible.
|
||
* enhancement: cached make-instance/allocate-instance constructors can now
|
||
get garbage collected.
|
||
* optimization: better performance for some unoptimized operations on
|
||
complex numbers.
|
||
* bug fix: using the options :LOCAL-NICKNAMES and :LOCK in the same
|
||
DEFPACKAGE form no longer signals a bogus error
|
||
|
||
changes in sbcl-1.3.8 relative to sbcl-1.3.7:
|
||
* minor incompatible change: the system now understands that the CONDITION
|
||
type is disjoint with many other system types.
|
||
* minor incompatible change: argument types in condition report functions
|
||
are now declared (in combination with the above change, this can result in
|
||
early detection of erroneous code).
|
||
* enhancement: simple arrays of any rank can be stack-allocated
|
||
on platforms supporting stack allocation of vectors.
|
||
* optimization: improved type derivation for FIND, POSITION, COUNT, SEARCH,
|
||
MISMATCH and other array and sequence functions.
|
||
* optimization: ALLOCATE-INSTANCE is now as fast as MAKE-INSTANCE.
|
||
* optimization: more efficient CHANGE-CLASS.
|
||
* bug fix: versions of getresuid() and getresgid() in SB-POSIX no longer
|
||
cause memory faults, and should work properly (lp#1603806, reported by
|
||
Kieran Grant)
|
||
* bug fix: handle ENOENT from getprotobyname() (lp#1596043, reported by
|
||
Stephen Hassard)
|
||
|
||
changes in sbcl-1.3.7 relative to sbcl-1.3.6:
|
||
* bug fix: preserve the name of the destructive function for the destroyed
|
||
constant and important result warnings, even when declared NOTINLINE.
|
||
* optimization: faster operations on list-sets.
|
||
* optimization: better type derivation of set functions.
|
||
(lp#1592152)
|
||
* optimization: load-time TLS-INDEX assignment, and other
|
||
microoptimizations, on x86.
|
||
* optimizations in:
|
||
** APPEND;
|
||
** ECASE/ETYPECASE;
|
||
** ARRAY-DIMENSIONS;
|
||
** ARRAY-TOTAL-SIZE;
|
||
** REMOVE, REMOVE-DUPLICATES, DELETE and DELETE-DUPLICATES on lists.
|
||
|
||
changes in sbcl-1.3.6 relative to sbcl-1.3.5:
|
||
* bug fix: do not insert conditional newlines in print-unreadable-object
|
||
(lp#1398290). This reverses a change made in lp#488979 which reversed
|
||
a fix advertised in release 0.8.14 to pass the GCL ANSI Test Suite.
|
||
* bug fix: constant negative rotations of 32-bit quantities are compiled
|
||
correctly on x86-64 and arm. (lp#1586614, reported by Guillaume Le
|
||
Vaillant)
|
||
|
||
changes in sbcl-1.3.5 relative to sbcl-1.3.4:
|
||
* enhancement: the platform's strtod() is exposed as SB-POSIX:STRTOD
|
||
* enhancement: speed up debug info creation for highly nested functions.
|
||
(lp#1563355)
|
||
* enhancement: the interleaved structure slot optimization from
|
||
release 1.2.6 has been ported to all architectures.
|
||
* enhancement: support run-program I/O redirection into lisp streams on
|
||
Windows.
|
||
* bug fix: better wording in missed optimization note. (lp#1003265)
|
||
* bug fix: interpreted (CAS SVREF) was broken
|
||
* bug fix: support CLISP as build host for ARM (lp#1568256, thanks to Tomas
|
||
Hlavaty)
|
||
|
||
changes in sbcl-1.3.4 relative to sbcl-1.3.3:
|
||
* enhancement: who-sets and who-references work on DEFGLOBAL. (lp#1552997)
|
||
* enhancement: CONSTANTP understands backquote.
|
||
e.g. (CONSTANTP '`(0 (,CHAR-CODE-LIMIT))) => T
|
||
* optimization: improvements to sequence functions: CONCATENATE, SUBSTITUTE,
|
||
REVERSE.
|
||
* bug fix: SB-EVAL does not signal an error for (THE KEYWORD :FOO)
|
||
* bug fix: a DEFTYPE name that is redefined into a DEFSTRUCT name
|
||
is less likely to cause confusion in the compiler.
|
||
* bug fix: DOCUMENTATION works as intended for classes with non-standard
|
||
metaclasses
|
||
* bug fix: (TYPEP <extended-sequence> <extended-sequence-class>) no longer
|
||
returns NIL in certain situations
|
||
* bug fix: MAKE-SEQUENCE, MAP, CONCATENATE and MERGE accept class objects as
|
||
result-type
|
||
* bug fix: MAKE-SEQUENCE, MAP, CONCATENATE and MERGE expand DEFTYPEs in
|
||
result-type
|
||
|
||
changes in sbcl-1.3.3 relative to sbcl-1.3.2:
|
||
* enhancement: warn about argument mismatch for functions passed as
|
||
arguments to other functions (e.g. REDUCE, MAP) at compile-time.
|
||
* optimization: functions accepting other functions (e.g. REDUCE, FIND) can
|
||
now be constant-folded if all function arguments are declared as foldable.
|
||
* optimization: improved logical operations on integers of unknown type.
|
||
* bug fix: exception handling no longer leaks memory on OS X. (lp#326238)
|
||
|
||
changes in sbcl-1.3.2 relative to sbcl-1.3.1:
|
||
* enhancement: {READ,WRITE}-SEQUENCE are much faster for some combinations
|
||
of short sequences and stream types
|
||
* enhancement: MAKE-LIST's result can be stack-allocated on x86-64
|
||
* bug fix: WRITE-SEQUENCE no longer fails to write lists containing integers
|
||
to bivalent streams
|
||
* bug fix: LOGTEST (and hence ODDP) no longer conses when given fixnum
|
||
arguments and small bit positions. (lp#1277690)
|
||
* bug fix: READ-FROM-STRING compiler-macro does not permute its arguments
|
||
* bug fix: DEFUN of a function name that collides with a system-generated
|
||
structure accessor does not confuse the runtime. (lp#540063)
|
||
* bug fix: heap corruption from miscompiled RESTART-BIND. (lp#1530390)
|
||
|
||
changes in sbcl-1.3.1 relative to sbcl-1.3.0:
|
||
* enhancement: SB-THREAD support for ARM64.
|
||
* enhancement: compiling an out-of-line DEFSTRUCT constructor call
|
||
will warn if a defaulted value is incompatible with its slot type.
|
||
* enhancement: a local INLINE declaration on a structure constructor
|
||
will work as intended, subject to any other factors that inhibit
|
||
inlining, even if the DEFSTRUCT was not itself within a global
|
||
INLINE proclamation for the named constructor
|
||
* enhancement: SB-EXT:DYNAMIC-SPACE-SIZE is now defined for cheneygc.
|
||
* enhancement: x86[-64] platforms support SB-EXT:CAS on structure slots
|
||
of type SB-EXT:WORD
|
||
* enhancement: the interleaved structure slot optimization from
|
||
release 1.2.6 has been ported to 32-bit x86, Sparc, PowerPC, ARM64.
|
||
* enhancement: SB-THREAD:JOIN-THREAD signals a proper error when an attempt
|
||
is made to join the current thread
|
||
* bug fix: NTH-VALUE does not cause stack overflow. (lp#1511419)
|
||
* bug fix: structure constructor type checking is better. (lp#1508735)
|
||
* bug fix: supplied-p variables for unused optional or keyword variables no
|
||
longer confuse SB-DI:PARSE-COMPILED-DEBUG-FUN-LAMBDA-LIST (and thus the
|
||
backtrace machinery) (lp#1498644)
|
||
* bug fix: Backtrace correctly handles undefined-function frames on MIPS.
|
||
* bug fix: WITH-FLOAT-TRAPS-MASKED correctly clears accrued traps on MIPS
|
||
(fixes issues with floating-point type derivation in the compiler).
|
||
* bug fix: FLOAT-NAN-P and FLOAT-TRAPPING-NAN-P now work correctly on MIPS
|
||
and HPPA.
|
||
* bug fix: MIPS context register access now masks to 32 bits (fixing issues
|
||
parsing negative-fixnum values for internal-error arguments and escaped
|
||
debug variables on 64-bit CPUs).
|
||
* bug fix: (SETF SAP-REF-DOUBLE) with constant offset on big-endian MIPS
|
||
now works correctly.
|
||
* bug fix: Callback parameter (argument) handling on MIPS is now vastly
|
||
more correct.
|
||
* bug fix: %DECREMENT-SEMAPHORE adjusts the remaining timeout after a
|
||
spurious wakeup
|
||
|
||
changes in sbcl-1.3.0 relative to sbcl-1.2.16:
|
||
* minor incompatible change: the environment passed to a macro/setf/deftype
|
||
expander is not always an object of type SB-KERNEL:LEXENV.
|
||
It can be nil, as is permissible by the standard.
|
||
* enhancement: ported to ARM64 Linux.
|
||
* enhancement: a new interpreter is included which has many benefits
|
||
over sb-eval. It is disabled by default. See src/interpreter/README
|
||
for instructions to enable it, and further details.
|
||
* bug fix: calling COMPILE when SB-EXT:*EVALUATOR-MODE* was :INTERPRET
|
||
would fail to perform "normal semantic processing such as macro expansion"
|
||
as stipulated by X3J13 issue LOAD-TIME-EVAL.
|
||
* bug fix: SB-UNICODE:CONFUSABLE-P no longer treats "<" and the empty
|
||
string as confusable. (lp#1504739)
|
||
* bug fix: (ASSERT (COMPUTE-IT ...)) would expand incorrectly
|
||
if COMPUTE-IT was a local macro that shadowed a global function.
|
||
* bug fix: SB-POSIX:CFSETISPEED and SB-POSIX:CFSETOSPEED now work properly
|
||
on platforms that use only the minimum specified set of fields in struct
|
||
termios (verified on Linux, still known not to work on FreeBSD and NetBSD,
|
||
very probably others). (partial fix for lp#1500951)
|
||
|
||
changes in sbcl-1.2.16 relative to sbcl-1.2.15:
|
||
* enhancement: by default, timers with a repeat interval do not "catch up"
|
||
by repeatedly calling their function after a clock discontinuity such as a
|
||
suspend and resume cycle
|
||
* bug fix: correctly restore multiple values on the stack in the presence of
|
||
alien calls. (lp#1489590)
|
||
* bug fix: MAKE-STRING-OUTPUT-STREAM enforces that :ELEMENT-TYPE
|
||
is a subtype of CHARACTER.
|
||
* bug fix: an EQL method specializer no longer causes garbage retention
|
||
if there are no extant methods using the specializer. (lp#492851)
|
||
|
||
changes in sbcl-1.2.15 relative to sbcl-1.2.14:
|
||
* new feature: DEPRECATION declaration for functions, variables and types
|
||
causes {EARLY,LATE,FINAL}-DEPRECATION-WARNING to be signaled when subject
|
||
of the declaration is used. Integrated with DESCRIBE, DOCUMENTATION and
|
||
SB-CLTL2:{VARIABLE,FUNCTION}-INFORMATION. Documented in the "Deprecation"
|
||
section of the manual.
|
||
* enhancement: ASDF updated to 3.1.5. (lp#1476867)
|
||
* enhancement: definitions within PROGN get proper source locations when
|
||
compiled (needs latest Slime to take advantage of this). (lp#1473147)
|
||
* enhancement: source locations for DEFCLASS slots now point directly to the
|
||
slot definitions, not the whole DEFCLASS form.
|
||
* bug fix: better source location in the presence of quoted forms.
|
||
(lp#1370561)
|
||
* bug fix: better source locations inside backqoute. (lp#1361502)
|
||
* bug fix: HANDLER-BIND requires that the handler-function be
|
||
a function designator at the time of binding establishment. (lp#1480679)
|
||
* bug fix: inlined functions surrounded by nested macrolets are properly
|
||
inlined. (lp#309123)
|
||
|
||
changes in sbcl-1.2.14 relative to sbcl-1.2.13:
|
||
* minor incompatible change: The name of a compiled anonymous lambda
|
||
as returned by the third value of FUNCTION-LAMBDA-EXPRESSION can have
|
||
a lambda-list-like list following the introductory LAMBDA that is not
|
||
in general a syntactically valid lambda list. Specifically, it won't
|
||
retain default values, supplied-p variables, or &KEY or &AUX bindings.
|
||
* enhancement: DESTRUCTURING-BIND has been totally reimplemented from
|
||
scratch to address a handful of performance and correctness issues.
|
||
Some minor behavioral differences exist regarding order of evaluation
|
||
of default forms for unsupplied &OPTIONAL and &KEY arguments
|
||
when nested destructuring patterns are involved.
|
||
(lp#707556, lp#707573, lp#707578, lp#708051)
|
||
* enhancement: DEFCONSTANT and DEFSTRUCT respect package locks. (lp#1186238,
|
||
lp#1036716)
|
||
* enhancement: sb-unicode:normalize-string has a new optional argument,
|
||
FILTER, a callback which controls which decomposed characters are
|
||
collected. Useful for stripping away diacritics more efficiently.
|
||
* bug fix: (TYPE-OF ARRAY) for a non-simple array is subject to change
|
||
after a call of ADJUST-ARRAY. (lp#1333731)
|
||
* bug fix: Dynamic-extent allocation with a loop between allocating a value
|
||
and the start of its environment no longer discards the allocated data
|
||
when the loop is taken. (lp#1472785)
|
||
* bug fix: Variable-reference elimination no longer generates incorrect code
|
||
under certain circumstances. (lp#1446891)
|
||
* bug fix: variables with EQL types are no longer treated as constants by
|
||
VOPs, which caused problems with closures being allocated for such
|
||
variables, but they remained unused. (lp#1390149)
|
||
* bug fix: Windows installer generates registry key name
|
||
correctly. (lp#1476447)
|
||
|
||
changes in sbcl-1.2.13 relative to sbcl-1.2.12:
|
||
* incompatible change: on success, TRY-SEMAPHORE and WAIT-ON-SEMAPHORE
|
||
return the new count
|
||
* enhancement: WAIT-ON-SEMAPHORE accepts a decrement parameter
|
||
* enhancement: JOIN-THREAD allows distinguishing timeout vs. abort in all
|
||
situations
|
||
* enhancement: On Windows DBG_PRINTEXCEPTION_C is handled and its message is
|
||
printed. (lp#1437947)
|
||
* bug-fix: TRUENAME works properly on broken symlinks presented as
|
||
directories. (lp#1400003)
|
||
* bug fix: Inlined DPB and DEPOSIT-FIELD don't interfere with left-to-right
|
||
order of argument evaluation. (lp#1458190)
|
||
* bug fix: (SETF (LDB (BYTE 1 2 JUNK) X) 0) is rightly rejected.
|
||
* bug fix: DEFSETF lambda lists should not permit argument destructuring.
|
||
* bug fix: calls to (SETF SLOT-VALUE) on a missing slot would in certain
|
||
situations incorrectly return the result of a SLOT-MISSING method
|
||
instead of always returning the new value. (lp#1460381)
|
||
* bug fix: a DEFMACRO occurring not at toplevel and capturing parts of
|
||
its lexical environment (thus being a closure) caused expressions
|
||
involving the macro name to cause corruption in the pretty-printer
|
||
due to faulty introspection of the lambda list of a closure.
|
||
* bug fix: out of line MAP/MAP-INTO check that the results produced by the
|
||
function are of the matching sequence type. (lp#1459581)
|
||
* bug fix: pretty-printing of '(LET `((,X ,Y)) :B) is handled correctly.
|
||
|
||
changes in sbcl-1.2.12 relative to sbcl-1.2.11:
|
||
* minor incompatible change: the SB-C::*POLICY* variable is no longer
|
||
a list. Code which manipulated it as such (including but not limited
|
||
to non-bundled releases of ASDF) will need to be revised.
|
||
* enhancement: The input stream for COMPILE-FILE implements
|
||
STREAM-LINE-COLUMN.
|
||
* enhancement: EVAL errors that occur by way of LOAD report the starting
|
||
line and column number of the erring toplevel form. (lp#565247)
|
||
* optimization: better MAP and MAP-INTO on known vector result types.
|
||
* bug fix: Read/modify/write macros accessing a place which is a
|
||
composition of CAR+CDR operations, such as (SHIFTF (CADR X) (ELT V 0)),
|
||
do not access subforms more than once. (lp#1450968)
|
||
* bug fix: short form of DEFSETF no longer allows trailing junk.
|
||
* bug fix: DEFINE-MODIFY-MACRO respects the provisions of CLHS 5.1.3
|
||
regarding argument evaluation order. (lp#1452539)
|
||
* bug fix: POP works as specified in CLHS if the setter for its
|
||
argument has a side-effect on the existing CAR value. (lp#1454021)
|
||
* bug fix: Reading "#()" with a positive numeric argument signals a
|
||
reader error. As specified, reading "#1()" has undefined consequences,
|
||
so correct portable code should be indifferent to this. (lp#1252100)
|
||
* bug fix: Malformed reader conditionals such as "(#-no-such-feature)"
|
||
and "(#+sbcl)" no longer parse as NIL. (lp#1454400)
|
||
|
||
changes in sbcl-1.2.11 relative to sbcl-1.2.10:
|
||
* enhancement: SET-PPRINT-DISPATCH will warn when given an expression in
|
||
which any part is unrecognizable as a legal type-specifier.
|
||
The dispatch table will be altered, but the new entry is disabled.
|
||
Subsequent type-defining forms will cause pprint-dispatch tables to
|
||
re-examine whether any disabled entries should be enabled. (lp#1429520)
|
||
* enhancement: Loading code containing calls to a deprecated function will,
|
||
under most circumstances, signal warnings similar to compiling such code.
|
||
The usual caveat holds about not detecting calls through a computed name,
|
||
as in (funcall (intern "DEPRECATED-FUN" "SB-EXT")).
|
||
* enhancement: (SB-EXT:COMPILE-FILE-LINE) is a new macro that expands
|
||
to a constant (VALUES integer integer) indicating the source line/column
|
||
from which it was read, intended for logging Lisp runtime errors in
|
||
a style similar to that afforded by the C preprocessor __LINE__ macro.
|
||
Similarly (SB-EXT:COMPILE-FILE-POSITION) returns a position in characters.
|
||
* enhancement: improved source locations for VOPs, alien types and
|
||
declarations.
|
||
* bug fix: functions in :FINAL deprecation have the correct docstring.
|
||
No visible change, as no such functions presently exist. (lp#1439151)
|
||
* bug fix: (SETF (FDEFINITION this) (FDEFINITION OTHER)) signals an error
|
||
if OTHER names either a macro or special-operator. (lp#1439921)
|
||
|
||
changes in sbcl-1.2.10 relative to sbcl-1.2.9:
|
||
* minor incompatible change: all SOCKINT::WIN32-* functions have been
|
||
deprecated with EARLY deprecation state
|
||
* minor incompatible change: performing introspection via the system-internal
|
||
SB-INT:INFO function could expose that :TYPE :TRANSLATOR is not necessarily
|
||
a function, as it always was before. (Affects swank-fancy-inspector)
|
||
* enhancement: The value of SXHASH on bit-vectors of length equal to the
|
||
word size now depends on the vector's contents instead of being constant;
|
||
its value on bit-vectors of length divisible by the word size now depends
|
||
also on the contents of the vector's last word.
|
||
* bug-fix: sb-bsd-sockets on win32 uses proper C function declarations.
|
||
(lp#1426667)
|
||
* bug fix: A new dead code elimination phase removes dead code loops
|
||
that confuse stack analysis. (lp#1255782, lp#308914)
|
||
* bug fix: A toplevel form which was simple enough to bypass the main
|
||
compiler in COMPILE-FILE, and which contained an empty SETQ or PROGN
|
||
would produce an invalid fasl file. (lp#1427050)
|
||
* bug fix: The compiler no longer signals an internal error when
|
||
encountering invalid FUNCTION forms like (function 1)
|
||
* bug fix: express proper dependencies in the ASDF contrib, to support
|
||
systems where make runs in parallel. (lp#1434768; thanks to Nikhil
|
||
Benesch)
|
||
|
||
changes in sbcl-1.2.9 relative to sbcl-1.2.8:
|
||
* minor incompatible change and bug fix: unboxed numeric constants
|
||
on x86oids are arranged in memory differently, and the disassembler
|
||
does not show them separately in DISASSEMBLE, but does
|
||
if DISASSEMBLE-CODE-COMPONENT is used. (lp#1421987)
|
||
* optimization: The compiler's treatment of type specifiers makes
|
||
it slightly faster and more memory-efficient. Portable code
|
||
should be indifferent to this change, however, users of
|
||
SB-INTROSPECT:FUNCTION-TYPE might notice that (MEMBER T NIL)
|
||
and (MEMBER NIL T) are both internally collapsed to the former,
|
||
so that the latter can never be obtained as part of an FTYPE.
|
||
* optimization: a TYPEP call in which the second argument is not a
|
||
QUOTE form but nevertheless recognized as a compile-time constant
|
||
might open-code the test. One scenario for this involves backquote,
|
||
such as (TYPEP x `(my-type ,some-arg)). Code which relied upon
|
||
deferring until runtime should declare (NOTINLINE TYPEP).
|
||
[Due to the sematic constraints of DEFTYPE etc in in CLHS 3.2.2.3,
|
||
code requiring delayed evaluation could be unportable though.]
|
||
* enhancement: unused variables at the top-level are now reported.
|
||
(lp#492200)
|
||
* bug fix: DEFCLASS handles cyclic {super,meta}class relations better
|
||
(lp#1418883)
|
||
* bug fix: compiler no longer signals an error when compiling certain
|
||
function calls. (lp#1416704, lp#404441, lp#1417822, lp#1234919)
|
||
* bug fix: compiler doesn't stumble on a LOGIOR transform. (lp#1389433)
|
||
* bug fix: more robust debugger and backtraces. (lp#1413850, lp#1099500,
|
||
lp#1412881, lp#945261, lp#1419205, lp#1409402)
|
||
* bug fix: files larger than 4GB can now be compiled.
|
||
* bug fix: x86 truncated results from 64-bit foreign functions to 32 bits.
|
||
* bug fix: file-position didn't work on large files on win32. (lp#1271545)
|
||
* bug fix: callbacks from foreign threads can work without enabling
|
||
sb-safepoint.
|
||
* bug fix: sb-introspect:function-lambda-list works properly on interpeted
|
||
macros. (lp#1387404)
|
||
* bug fix: ADJUST-ARRAY properly handles non-adjustable arrays. (lp#886418)
|
||
* bug fix: compiler no longer fails to dump a multidimensional array
|
||
constant involving a circular reference to itself
|
||
* bug fix: conditional and nested DX allocation no longer confuse the
|
||
compiler in STACK analysis. (lp#1044465)
|
||
* bug fix: sb-rotate-byte constant folding bug fixed. (lp#1423682)
|
||
|
||
changes in sbcl-1.2.8 relative to sbcl-1.2.7:
|
||
* enhancement: better error and warning messages. (lp#1314767, lp#736383)
|
||
* enhancement: backtrace for invalid argument count produces the exact
|
||
supplied arguments including the extra ones, on x86, x86-64 and ARM.
|
||
* enhancement: a STYLE-WARNING is signaled for DEFSTRUCT accessors which
|
||
are used before the structure is defined; similarly for the predicate.
|
||
* optimization: FORMAT NIL with only ~a and string arguments is transformed
|
||
into CONCATENATE.
|
||
* optimization: POSITION and FIND when inlined into code that is compiled
|
||
with qualities of safety < 2 and speed > space will no longer signal
|
||
an error on circular lists, but will potentially loop forever if given
|
||
no :END constraint. As was always the case, calls that are not inlined
|
||
are safe regardless of lexical policy.
|
||
* bug fix: CLOS methods compiled with (OPTIMIZE (DEBUG 0))
|
||
no longer cause debugger failure when printing a backtrace
|
||
* bug fix: more resilience to deleted code. (lp#1308328, lp#1390544)
|
||
* bug fix: the CLHS example of MAKE-LOAD-FORM involving TREE-WITH-PARENT
|
||
did not work, and now it does.
|
||
|
||
changes in sbcl-1.2.7 relative to sbcl-1.2.6:
|
||
* optimization: returning constant values refers to preboxed constants
|
||
more reliably. (lp#1398785)
|
||
* enhancement: a STYLE-WARNING is produced if a compiler-macro is defined
|
||
for a function after at least one ordinary (not inlined) call to that
|
||
function was compiled, indicating a likely compilation order problem.
|
||
Likewise a warning ensues if a call is compiled to a function
|
||
that is subsequently proclaimed INLINE.
|
||
* enhancement: always lose() when something goes wrong while saving a core
|
||
(instead of just printing an error on stderr in some situations).
|
||
* enhancement: frames in the debugger are now restartable by default.
|
||
* bug fix: restore error handling on Windows x86.
|
||
* bug fix: MAKE-SEQUENCE detects type errors in its :INITIAL-ELEMENT
|
||
at compile-time when possible. (lp#330299)
|
||
* bug fix: parsing of malformed type specifiers no longer results
|
||
in a memory-fault-error.
|
||
* bug fix: LOOP properly destructures nested lists in WITH.
|
||
* bug fix: MACROEXPANDing the redefinition of an alien structure type no
|
||
longer signals the wrong error.
|
||
* bug fix: PROGV doesn't get confused by forced DEBUG 3 (lp#1405456).
|
||
|
||
changes in sbcl-1.2.6 relative to sbcl-1.2.5:
|
||
* enhancement: SERVE-EVENTS uses the poll() system call in lieu of
|
||
select() if the OS has the former. Previously poll() was used
|
||
only if waiting on exactly one file descriptor.
|
||
* enhancement: efficiency of access to untagged structure slots is improved
|
||
on x86-64, and the order of slots in memory is exactly as specified by
|
||
defstruct, simplifying use of structures as arguments to foreign calls.
|
||
* bug fix: SB-DEBUG:ARG now works in all TRACE options which evaluate forms.
|
||
(lp#1357826)
|
||
* bug fix: GC memory corruption during internal memory handling.
|
||
* bug fix: duplicate effective-slot-definition objects as compared
|
||
by EQ on name could be present in CLASS-SLOTS of a class whose
|
||
metaclass was structure-class or condition-class. (lp#1049423)
|
||
* bug fix: HANDLER-BIND with empty bindings works again; regression in
|
||
1.2.5. (lp#1388707)
|
||
* bug fix: ATOMIC-INCF works on structure slots in interpreted code.
|
||
(lp#1381867)
|
||
* bug fix: MAKE-ARRAY properly handles character types like (eql #\a) and
|
||
(member #\a #\c). (lp#1392068)
|
||
* bug fix: READ sometimes accidentally preserved a whitespace character
|
||
after a token when it should not have. (lp#327790)
|
||
|
||
changes in sbcl-1.2.5 relative to sbcl-1.2.4:
|
||
* enhancement: sb-bsd-sockets now has basic support for IPv6
|
||
* enhancement: An sb-unicode package has been added, containing
|
||
many functions related to handling Unicode text
|
||
* enhancement: The reader now normalizes symbols to Normalization
|
||
Form KC (NFKC). This behavior can be disabled with
|
||
SB-EXT:READTABLE-NORMALIZATION
|
||
* enhancement: a style-warning is signaled if OPTIMIZE declarations
|
||
multiply specify a quality with differing values. (lp#310267)
|
||
* bug fix: conservatively pointed to pages wipe out unused dwords so
|
||
that they cannot act as false roots in turn.
|
||
* bug fix: the walker's handling of lexical variable and symbol-macro
|
||
bindings is improved (lp#375326, lp#1368305)
|
||
* bug fix: HANDLER-{BIND,CASE} no longer drop into ldb when a clause
|
||
contains an undefined condition type; regression in 1.1.19 (lp#1378939)
|
||
* bug fix: in interpreted code, inequality predicates did not type-check
|
||
arguments that weren't examined, and a 1-argument use of MIN or MAX
|
||
accepted a complex number. (lp#1373702)
|
||
* bug fix: APROPOS and APROPOS-LIST handle inherited symbols correctly.
|
||
(lp#1364413, thanks to Zach Beane)
|
||
|
||
changes in sbcl-1.2.4 relative to sbcl-1.2.3:
|
||
* enhancement: the sequence functions MAP, CONCATENATE and MERGE now call
|
||
the new generic functions SEQUENCE:MAP, SEQUENCE:CONCATENATE and
|
||
SEQUENCE:MERGE respectively when the specified result type designates an
|
||
extended sequence.
|
||
* bug fix: Wrong binding order of supplied-p parameters in macro lambda
|
||
lists. (lp#721135)
|
||
* bug fix: VALIDATE-SUPERCLASS returns T when the superclass is the
|
||
universal superclass (lp#1332983)
|
||
* bug fix: reading an uninterned symbol whose print name has the
|
||
syntax of an integer signals an error. (lp#310062)
|
||
* bug fix: the walker is less likely to be confused when walking LET* forms
|
||
with special bindings and use of those bindings and others of the same
|
||
name.
|
||
* bug fix: a rare bug affecting 32-bit platforms resulting in a
|
||
fatal condition with the message "Globaldb rehash failure" has been fixed.
|
||
|
||
changes in sbcl-1.2.3 relative to sbcl-1.2.2:
|
||
* enhancement: DOCUMENTATION works on instances of
|
||
FUNCALLABLE-STANDARD-CLASS
|
||
* enhancement: ASSERT reports arguments of calls to lexical functions in
|
||
additional to global functions.
|
||
* enhancement: ASDF updated to 3.1.3
|
||
* enhancement: UIOP can be loaded without ASDF.
|
||
* bug fix: some methods on CHANGE-CLASS did not finalize the new class
|
||
before accessing its class-precedence list.
|
||
* bug fix: CHANGE-CLASS no longer fails on unbound slots in the source
|
||
object.
|
||
* bug fix: CHANGE-CLASS signals an appropriate error when the destination
|
||
class is a FORWARD-REFERENCED-CLASS.
|
||
* bug fix: CHANGE-CLASS no longer signals bogus TYPE-ERRORs for slots for
|
||
which initargs have been supplied.
|
||
* bug fix: saving cores on ARM was broken since the introduction of GENCGC.
|
||
(lp#1349795)
|
||
* bug fix: macroexpanding a backquoted expression involving ",."
|
||
outside of the compiler failed. (lp#1354623)
|
||
|
||
changes in sbcl-1.2.2 relative to sbcl-1.2.1:
|
||
* incompatible change: the #\` ("backquote") reader macro was reimplemented
|
||
to support robust pretty-printing. Reading a form involving #\` produces
|
||
an invocation of the QUASIQUOTE ordinary macro which may contain subforms
|
||
that are not lists. Code that unportably attempts operations on
|
||
un-evaluated forms resulting therefrom, e.g.
|
||
(SUBST a b (read-from-string "`(x (,y))"))
|
||
might generate incorrect results and/or errors.
|
||
* enhancement: support for GNU/kFreeBSD x86.
|
||
* enhancement: ATOMIC-INCF and ATOMIC-DECF can operate on (CAR x), (CDR x)
|
||
and DEFGLOBAL variables of type fixnum.
|
||
* enhancement: arithmetic constant reduction is now performed on defconstant
|
||
constants too. (lp#1337069).
|
||
* bug fix: certain ftype proclamations containing &optional t &rest t no
|
||
longer cause subsequent definitions to signal bogus style-warnings.
|
||
* bug fix: #\Bell and #\Bel now read to different characters. (lp#1319452).
|
||
* bug fix: CAS SYMBOL-VALUE on locally special variables didn't work.
|
||
(lp#1098355)
|
||
|
||
changes in sbcl-1.2.1 relative to sbcl-1.2.0:
|
||
* enhancement: GENCGC is enabled on ARM.
|
||
* enhancement: better error reporting for invalid calls to local functions.
|
||
* enhancement: support for GNU/kFreeBSD distributions. (lp#1079954, thanks
|
||
to Christoph Egger)
|
||
* enhancement: experimental support for threads on NetBSD/x86-64. (thanks
|
||
to Robert Swindells)
|
||
* enhancement: support for DragonFly BSD. (lp#1292845, thanks to Vasily
|
||
Postnicov)
|
||
* bug fix: TYPE-OF must not return AND/OR/NOT expressions.
|
||
(lp#1317308)
|
||
* bug fix: accessing NIL arrays stopped producing errors. (lp#1311421)
|
||
* bug fix: DISASSEMBLE no longer prints unwanted stuff. (lp#1251861)
|
||
* bug fix: compiling SVREF on unknown types no longer produces scary errors.
|
||
(lp#1258716)
|
||
* bug fix: assorted LOOP fixes and enhancements. (lp#645534, lp#1322923,
|
||
lp#700538, lp#613876, lp#695286, lp#798388)
|
||
* bug fix: silence compiler notes from the SEARCH transform. (lp#1071310)
|
||
* bug fix: array type intersection handles T and unknown element types
|
||
correctly. (lp#1258716)
|
||
* bug fix: fix a corner case in array type unparsing that would result in
|
||
misleading translations from our internal type representation.
|
||
* bug fix: array-rank now sees through union and intersection types.
|
||
(lp#1310574)
|
||
* bug fix: when DECLARE expressions are in the wrong place, be careful not
|
||
to attempt to evaluate the subforms. (lp#573747; thanks to Roman
|
||
Marynchak)
|
||
* bug fix: misplaced and missing declarations in DEFTRANSFORM. (lp#1066451)
|
||
* bug fix: FBOUNDP returned NIL for a class of incorrect function names
|
||
instead of signaling an error. (lp#1095483)
|
||
* bug fix: fix a compile-time AVER in regalloc: lifetime analysis
|
||
used to (rarely) introduce duplicate conflict markers in a single
|
||
TN/block pair. (lp#1327008)
|
||
|
||
changes in sbcl-1.2.0 relative to sbcl-1.1.18:
|
||
* bug fix: read-time-eval backquote context mixup. (lp#1321047)
|
||
* enhancement: when SAVE-LISP-AND-DIE fails due multiple threads, the
|
||
report of the signaled conditions lists currently running threads.
|
||
* enhancement: ported to ARM linux.
|
||
* enhancement: sb-gmp contrib has been updated. (lp#1305266)
|
||
* enhancement: new contrib sb-mpfr by Stephan Frank.
|
||
* bug fix: MAKE-SEQUENCE works with sequence types defined via DEFTYPE
|
||
(lp#1315846, thanks to Mark Cox)
|
||
* bug fix: SET-[DISPATCH-]MACRO-CHARACTER should coerce a symbolic
|
||
function-designator to a function only as needed. (lp#1012335)
|
||
* bug fix: remove references to asdf-install from the manual. (lp#1207544,
|
||
thanks to Thomas Hlavaty)
|
||
* bug fix: handle --without-xxx options to make.sh more carefully.
|
||
(lp#1246665, thanks to Richard M Kreuter)
|
||
* bug fix: prevent maybe-delete-exit from doing semantically broken things
|
||
with local exits. (lp#309099, lp#518099, lp#533930)
|
||
* bug fix: attempts to subclass BUILT-IN-CLASSes signal errors, as required
|
||
by AMOP. (lp#861004)
|
||
|
||
changes in sbcl-1.1.18 relative to sbcl-1.1.17:
|
||
* optimization: COERCE is now more effecient for more cases when the type is
|
||
known at compile-time.
|
||
(lp#1309815)
|
||
* bug fix: correctly inherit condition initforms. (lp#1300904)
|
||
* bug fix: properly pprint literal functions inside nested lists.
|
||
(lp#1300716)
|
||
* bug fix: more-correctly handle array-type unity (broken for ages, causing
|
||
compilation problems since 1.1.13.x due to smarter TYPEP type propagation,
|
||
reported by jasom in #lisp).
|
||
|
||
changes in sbcl-1.1.17 relative to sbcl-1.1.16:
|
||
* enhancement: printing backtraces respects
|
||
SB-DEBUG:*DEBUG-PRINT-VARIABLE-ALIST* when printing call arguments
|
||
(lp#1261646)
|
||
* optimization: defstruct out-of-line accessor are now as fast as inlined.
|
||
(lp#1264924)
|
||
* bug fix: INVOKE-RESTART-INTERACTIVELY no longer refuses to invoke RESTART
|
||
instances with a test-function (reported by Vivitron in #sbcl)
|
||
* bug fix: STREAM-ERROR-POSITION-INFO fails in fewer situations (lp#1264902)
|
||
* bug fix: Change COND error message (lp#1254511)
|
||
* bug fix: LOAD is no longer confused when called on a directory.
|
||
(lp#1077996)
|
||
* bug fix: MAKE-CONDITION reports names of missing condition classes
|
||
properly (lp#1199223)
|
||
* bug fix: restore building with clang. (lp#1293643)
|
||
* bug fix: restore building on SPARC (broken since 1.1.15).
|
||
* bug fix: improved FreeBSD support.
|
||
* bug fix: PPC floating point conversion corrupted stack.
|
||
|
||
changes in sbcl-1.1.16 relative to sbcl-1.1.15:
|
||
* minor incompatible change: improve read/print consistency for pathnames on
|
||
Win32, by using the circumflex character #\^ as the escape character.
|
||
(lp#673625)
|
||
* enhancement: SB-EXT:DEFINE-LOAD-TIME-GLOBAL. (lp#1253688)
|
||
* enhancement: Loading fasls with symbols from an undefined package includes
|
||
the name of the symbol in the error message.
|
||
* bug fix: problems when redefining classes and doing TYPEP on classes
|
||
concurrently. (lp#1272742)
|
||
* bug fixes to the x86-64 XCHG instruction:
|
||
** it was misencoded when used with RAX, R8-R15 registers. (reported by
|
||
Eric Marsden)
|
||
** it was misencoded when used to exchange EAX with itself.
|
||
** the disassembler wrongly printed XCHG RAX, R8 and the corresponding
|
||
32- and 16-bit variations as NOP.
|
||
* bug fix: the disassembler outputs source annotations in the right place
|
||
and no longer randomly drops some of them. (lp#1249205)
|
||
* bug fix: fix commutative-arg-swap from introducing undumpable structures
|
||
into code, prevent code with errors from being compiled. (lp#1276282)
|
||
* bug fix: pathnames with :back in their directory component are succeffully
|
||
resolved.
|
||
* bug fix: the deterministic profiler now uses ENCAPSULATE functionality to
|
||
wrap functions around. (lp#309086)
|
||
|
||
changes in sbcl-1.1.15 relative to sbcl-1.1.14:
|
||
* new feature: the iterative spilling/coloring register allocator developed
|
||
by Alexandra Barchunova during Google Summer of Code 2013 is now merged
|
||
in. By default, it only activates for functions that optimize with
|
||
(speed 3) and (> speed compilation-speed), but setting
|
||
sb-regalloc:*register-allocation-method* to :iterative forces its
|
||
execution. The previous behaviour can be obtained by instead setting that
|
||
variable to :greedy. Thanks again to Google for their support, and, more
|
||
crucially, to Alexandra Barchunova for her hard work.
|
||
* optimization: make-array with known element-type and unknown dimensions is
|
||
much faster.
|
||
* optimization: make-array with unknown element-type is faster as well.
|
||
(lp#1004501)
|
||
* enhancement: sb-ext:save-lisp-and-die on Windows now accepts
|
||
:application-type argument, which can be :console or :gui. :gui allows
|
||
having GUI applications without an automatically appearing console window.
|
||
* enhancement: reduced conservativism on GENCGC platforms:
|
||
conservative roots must be valid-looking tagged pointers or point
|
||
within a code object, not merely point to within the allocated part
|
||
of a page, in order to pin a page.
|
||
* enhancement: support for "Mac Roman" external format.
|
||
* enhancement: encapsulation of named generic functions now happens without
|
||
altering the identity of the function bound to the name.
|
||
* bug fix: Windows applications without the console window no longer misbehave.
|
||
(patch by Wilfredo Velazquez, lp#1256034).
|
||
* bug fix: modular arithmetic optimizations do not stumble on dead branches
|
||
with bad constants. (reported by Douglas Katzman)
|
||
* bug fix: CLISP can be used again as a cross-compilation host.
|
||
(Thanks to Vasily Postnicov, lp#1261451)
|
||
* bug fix: run-program crashed with :directory nil. (lp#1265077)
|
||
|
||
changes in sbcl-1.1.14 relative to sbcl-1.1.13:
|
||
* optimization: complicated TYPEP tests are less opaque to the type
|
||
propagation pass. (lp#1229340)
|
||
* optimization: [N]BUTLAST perform a single pass over the list. (lp#1245697)
|
||
* optimization: EQUALP on structures with raw slots (double-float/complex)
|
||
no longer conses and is faster.
|
||
* optimization: RESTART-CASE expands to more compact code.
|
||
Thanks to Jan Moringen. (lp#1249055)
|
||
* enhancement: Top-level defmethod without defgeneric no longer causes
|
||
undefined-function warnings in subsequent forms. (lp#503095)
|
||
* enhancement: Better error messages for system errors on Windows.
|
||
* enhancement: run-sbcl.sh is usefully handled by rlwrap. Thanks to William
|
||
Cushing. (lp#1249183)
|
||
* enhancement: new function SB-EXT:ASSERT-VERSION->= accepts a version
|
||
specification (multiple integer arguments) and signals a continuable error
|
||
if the current SBCL version is lower (older) than the specification.
|
||
(lp#674372)
|
||
* enhancement: better ARRAY-RANK result derivation. (lp#1252108)
|
||
* bug fix: EQUALP now compares correctly structures with raw slots larger
|
||
than a single word.
|
||
* bug fix: contribs couldn't be built on Windows with MinGW.
|
||
* bug fix: Better pathname handling on Windows. (lp#922117)
|
||
* bug fix: OPEN reports a more meaningful error when an existing file is
|
||
opened for output with :if-exists :new-version. Thanks to Philip
|
||
Munksgaard. (lp#455381)
|
||
* bug fix: DEFSTRUCTs with NIL as a slot name no longer cause strange
|
||
CLOS-related errors. (lp#633911)
|
||
* bug fix: GC deadlocks caused by concurrent consing on Windows.
|
||
|
||
changes in sbcl-1.1.13 relative to sbcl-1.1.12:
|
||
* optimization: better distribution of SXHASH over small conses of related
|
||
values. (lp#309443)
|
||
* other improvements to SXHASH:
|
||
** use the whole of the positive-fixnum range for SXHASH of fixnums
|
||
* enhancement: The error message when calling an undefined alien function
|
||
includes the name of the function on x86-64.
|
||
* enhancement: sb-ext:run-program now supports :environment on Windows.
|
||
* enhancement: ASDF is no longer required to load contribs at runtime.
|
||
(lp#1132254)
|
||
* enhancement: when called with a symbol, FIND-RESTART no longer calls
|
||
COMPUTE-RESTARTS, making it faster and cons less (lp#769615)
|
||
* enhancement: FIND-RESTART and COMPUTE-RESTARTS handle huge restart
|
||
clusters better in some cases
|
||
* enhancement: SOME/ANY/other quantification higher-order functions no
|
||
longer cons. (lp#1070635)
|
||
* bug fix: forward references to classes in fasls can now be loaded.
|
||
(lp#746132)
|
||
* bug fix: don't warn on a interpreted->compiled function redefinition
|
||
from the same location. (patch by Douglas Katzman, lp#1042405)
|
||
* bug fix: Create vectors of proper internal length when reading literal
|
||
vectors from FASLs. (Reported by Jan Moringen)
|
||
* bug fix: COMPILE can now successfully compile setf functions.
|
||
(Reported by Douglas Katzman)
|
||
* bug fix: run-program performs more correct escaping of arguments on
|
||
Windows. (lp#1239242)
|
||
* bug fix: function-lambda-expression on generic functions returns the
|
||
actual name.
|
||
* bug fix: (the [type] [constant]) now warns when [constant] matches
|
||
[type] except for the number of values. (Reported by Nathan Trapuzzano
|
||
on sbcl-help)
|
||
* bug fix: signal errors in required cases of slot-definition initialization
|
||
protocol. (lp#309072)
|
||
* bug fix: run-sbcl.sh works better in the presence of symlinks on OS X.
|
||
(thanks to Stelian Ionescu, lp#1242643)
|
||
* bug fix: when given a restart object, FIND-RESTART checks whether the
|
||
restart is active and, when a condition is supplied, whether the restart
|
||
is associated to a different condition (lp#774410)
|
||
|
||
changes in sbcl-1.1.12 relative to sbcl-1.1.11:
|
||
* enhancement: Add sb-bsd-sockets:socket-shutdown, for calling
|
||
shutdown(3). (thanks to Jan Moringen, lp#1207483)
|
||
* enhancement: document extensible sequences. (thanks to Jan Moringen,
|
||
lp#994528)
|
||
* optimization: EQUAL and EQUALP transforms are smarter.
|
||
(thanks to Elias Martenson, lp#1220084)
|
||
* optimization: CHAR-EQUAL is faster for constant and base-char arguments.
|
||
* bug fix: probe-file now can access symlinks to pipes and sockets in
|
||
/proc/pid/fd on Linux. (reported by Eric Schulte)
|
||
* bug fix: SBCL can now be built on Solaris x86-64.
|
||
* bug fix: Floating point exceptions do not persist on Solaris anymore.
|
||
* bug fix: (setf . a) is pprinted correctly (reported by Douglas Katzman).
|
||
* bug fix: handle compiler-error in LOAD when it's not run from inside EVAL.
|
||
(lp#1219601)
|
||
* bug fix: SB-GMP:MPZ-POW no longer segfaults given a non-bignum base.
|
||
(thanks to Stephan Frank)
|
||
* bug fix: space allocation of result bignums in SB-GMP is more accurate.
|
||
(thanks to Stephan Frank, lp#1206191)
|
||
* bug fix: sb-safepoint can now reliably handle signal interruptions of
|
||
foreign code. (lp#1133018)
|
||
* bug fix: the compiler-macro for MAKE-INSTANCE when emitting "fallback"
|
||
constructors no longer fails to merge actual and default initargs
|
||
(thanks to Jan Moringen, lp#1179858)
|
||
* bug fix: the compiler-macro for MAKE-INSTANCE when emitting "fallback"
|
||
constructors handles non-KEYWORD initialization arguments more correctly.
|
||
* bug fix: loading the SB-SIMPLE-STREAMS contributed module no longer
|
||
clobbers FILE-NAMESTRING. (thanks to Anton Kovalenko, lp#884603)
|
||
* bug fix: class definitions with CPLs inconsistent with their metaclasses
|
||
are less likely to destroy the object system's integrity. (lp#309076)
|
||
* bug fix: restart clause parsing in RESTART-CASE is more in line with the
|
||
standard. (lp#1203585, thanks to Jan Moringen)
|
||
* bug fix: silence a note from RESTART-CASE under high-SPEED optimization
|
||
settings. (lp#1023721)
|
||
* bug fix: getting the order of arguments to
|
||
SB-MOP:SET-FUNCALLABLE-INSTANCE-FUNCTION wrong produces a sensible error
|
||
rather than a failed AVER. (reported by Paul Nathan)
|
||
* bug fix: Parsing of &optional/&key/&rest arguments now never overwrites
|
||
arguments during copying on x86 and x86-64; it may still happen on other
|
||
platforms when there are more fixed arguments than stack slots.
|
||
(reported by Jan Moringen)
|
||
|
||
changes in sbcl-1.1.11 relative to sbcl-1.1.10:
|
||
* enhancement: support building the manual under texinfo version 5.
|
||
(lp#1189146)
|
||
* enhancement: Windows builds no longer display the "Kitten of Death" message.
|
||
A warning is instead appended to the regular banner, and may be muted with
|
||
--noinform. (lp#728247)
|
||
* enhancement: support building under new linker handling of syscalls under
|
||
NetBSD. (thanks to Robert Swindells)
|
||
* bug fix: undefined function errors are now properly reported on PPC and MIPS.
|
||
(regression since 1.1.9)
|
||
* bug fix: (funcall (function X junk)) didn't causes an error when X had a
|
||
compiler macro. (thanks to Douglas Katzman).
|
||
* bug fix: signal a warning when defining a setf-function when a
|
||
setf-expander is already present. (thanks to Douglas Katzman).
|
||
* bug fix: improved threading on PPC.
|
||
* bug fix: ROOM works again on Windows. (lp#1206456)
|
||
* bug fix: Streams were flushed even when there was one byte still left in
|
||
the buffer. (lp#910213)
|
||
* bug fix: OPEN handles correctly when :if-exists and :if-does-not-exist are
|
||
either NIL or :ERROR. (reported by Jan Moringen)
|
||
|
||
changes in sbcl-1.1.10 relative to sbcl-1.1.9:
|
||
* enhancement: ASDF has been updated to 3.0.2.
|
||
* optimization: stack frames are packed more efficiently on x86oids, which
|
||
ought to reduce the frequency of Methuselahn conservative references (it
|
||
certainly helps with gc.impure.lisp / BUG-936304 on x86).
|
||
* optimization: on x86 and x86-64, integer negation forms like (- x) are now
|
||
recognized in modular arithmetic contexts, and compile to native negate,
|
||
rather than going through bignums only to keep the low bits.
|
||
* bug fix: Compiling potential modularic arithmetic forms does not cause type
|
||
errors when some integer types lack lower or upper bounds. (lp#1199127)
|
||
* bug fix: Non-trivial modular arithmetic forms are always cut to the right
|
||
bitwidth before being used in a non-modular context. (lp#1199428)
|
||
* bug fix: Multiple catch/unwind blocks in a single function are now
|
||
allocated in the right stack order on win32. (lp#1072739)
|
||
|
||
changes in sbcl-1.1.9 relative to sbcl-1.1.8:
|
||
* new feature: the contrib SB-GMP links with libgmp at runtime to speed
|
||
up arithmetic on bignums and ratios. (contributed by Stephan Frank)
|
||
* enhancement: disassemble now annotates some previously missing static
|
||
functions, like LENGTH.
|
||
* enhancement: clean.sh now also cleans doc/internals.
|
||
* enhancement: SB-EXT:PRINT-SYMBOL-WITH-PREFIX can be used within ~// to
|
||
print a symbol with a package prefix.
|
||
* enhancement: The debugger and backtracing are more robust against buggy
|
||
PRINT-OBJECT methods.
|
||
* optimization: calls to static functions on x86-64 use less instructions.
|
||
* optimization: compute encode-universal-time at compile time when possible.
|
||
* optimization: when referencing internal functions as #'x, don't go through
|
||
an indirect fdefn structure.
|
||
* optimization: SLEEP doesn't cons on non-immediate floats and on ratios.
|
||
* optimization: (mod fixnum) type-checks are performed using one unsigned
|
||
comparison, instead of two.
|
||
* optimization: enable more modular arithmetic transforms in the presence of
|
||
conditionals.
|
||
* optimization: bitwise OR forms can now trigger modular arithmetic as well,
|
||
when the result is known to be negative.
|
||
* optimization: recognize more cases of useless LOGAND/LOGIOR with constants.
|
||
* optimization: comparisons between rationals and constant floats or between
|
||
integers and constant ratios are now converted to rationals/integers at
|
||
compile time.
|
||
* optimization: Smaller and faster DOUBLE-FLOAT-LOW-BITS on x86-64.
|
||
* bug fix: problems with NCONC type derivation (reported by Jerry James).
|
||
* bug fix: EXPT type derivation no longer constructs bogus floating-point
|
||
types. (reported by Vsevolod Dyomkin)
|
||
* bug fix: sb-bsd-sockets has correct declaration of the canonname field of
|
||
addrinfo. (lp#1187041, patch by Jerry James)
|
||
* bug fix: uninitialized type-error conditions can now be printed.
|
||
(lp#1184586)
|
||
* bug fix: tests for sb-bsd-sockets no longer use a predefined port for
|
||
listening, allowing several tests to run in parallel.
|
||
* bug fix: during disassembly to *COMPILER-TRACE-OUTPUT* instruction
|
||
prefixes as used on x86 and x86-64 no longer sometimes print incorrectly.
|
||
(lp#1085729)
|
||
* bug fix: Specialised SIMD-PACK types can be negated.
|
||
* bug fix: Modular arithmetic is more robust. (incidentally fixes another bug
|
||
reported by Eric Marsden)
|
||
* bug fix: FP return values from foreign calls are always rounded to single
|
||
or double float precision on x87.
|
||
* bug fix: Known-safe vector access on x86oids should not fail spuriously
|
||
when the index is of the form (+ x constant-positive-integer).
|
||
* bug fix: Remove GPL-licensed files from source distribution. (lp#1185668)
|
||
* bug fix: backtrace printer no longer tries to create very large lists when
|
||
the arg-count register is clobberred by other code. (lp#1192929)
|
||
* bug fix: x86 should never signal an FP exception while boxing an FP value,
|
||
a situation that lands us into ldb.
|
||
|
||
changes in sbcl-1.1.8 relative to sbcl-1.1.7:
|
||
* notice: The implementation of MAP-ALLOCATED-OBJECTS (the heart of
|
||
ROOM, plus a few SB-INTROSPECT functions) has been completely
|
||
rewritten; it may now exhibit different bugs than before.
|
||
* new feature: minimal runtime/compiler intrastructure support for SSE
|
||
SIMD values, as SB-EXT:SIMD-PACK. Enabled on x86-64 via the build-time
|
||
feature :sb-simd-pack. This should enable intrinsics extensions as
|
||
libraries, without patching SBCL itself. Thanks to Alexander Gavrilov
|
||
for maintaining a branch for so long.
|
||
* enhancement: RUN-PROGRAM supports a :DIRECTORY argument to set
|
||
the working directory of the spawned process.
|
||
(lp#791800) (patch by Matthias Benkard)
|
||
* enhancement: boxed vectors (vectors of T or of FIXNUM) can now be
|
||
stack-allocated on PPC.
|
||
* enhancement: "fixed objects" can now be stack-allocated on PPC.
|
||
* enhancement: WITH-PINNED-OBJECTS no longer conses on PPC/GENCGC.
|
||
* enhancement: (sb-introspect:find-definition-sources-by-name x :vop) now
|
||
also returns VOPs which do not translate any functions, and finds
|
||
defoptimizer types ir2convert and stack-allocate-result.
|
||
* enhancement: better type derivation for APPEND, NCONC, LIST.
|
||
(lp#538957)
|
||
* enhancement: MAP-ALLOCATED-OBJECTS (the heart of ROOM) now walks the
|
||
heap in a manner similar to the GC rather than its previous ad-hoc
|
||
scheme, and is therefore no less and possibly more accurate.
|
||
* fixes and enhancements related to Unicode:
|
||
** the character database information has been updated to Unicode 6.2;
|
||
** support for canonical and compatibility decomposition of characters has
|
||
been added, along with support for primary composition;
|
||
** support for Unicode normalization forms of strings (NFC, NFKC, NFD and
|
||
NFKD) has been included;
|
||
** querying the character database for code points not defined by Unicode
|
||
gives less wrong answers (lp#1178038, reported by Ken Harris)
|
||
* enhancement: print intermediate evaluation results for some ASSERTed
|
||
expressions. (lp#789497) (patch by Alexandra Barchunova)
|
||
* enhancement: x86-64 disassemblies are annotated with unboxed constant
|
||
values when there are references to (RIP-relative) unboxed constants.
|
||
* bug fix: type derivation for LOG{AND,IOR,XOR} scales linearly instead
|
||
of quadratically with the size of the input in the worst case.
|
||
(lp#1096444)
|
||
* bug fix: handle errors when initializing *default-pathname-defaults*,
|
||
sb-ext:*runtime-pathname*, sb-ext:*posix-argv* on startup, like character
|
||
decoding errors, or directories being deleted.
|
||
* bug fix: Loading a core with a discontiguous dynamic space now correctly
|
||
computes the amount of dynamic space used.
|
||
* bug fix: disassembler missing ",8" on SHLD
|
||
* bug fix: backtracing through INTERNAL-ERROR signal handlers on systems
|
||
that provide an "invalid" stack frame link for the signal handler
|
||
itself now use the saved-fp-and-pc mechanism to pick up from the stack
|
||
frame in the interrupt (signal) context. This is known to affect
|
||
threaded FreeBSD/x86-64.
|
||
* bug fix: some LOOP statements couldn't be compiled.
|
||
(lp#1178989)
|
||
* bug fix: sb-sequence:dosequence works on literal vectors.
|
||
* bug fix: errors in generic arithmetic show the assembly routine's
|
||
caller on x86 and x86-64. (lp#800343)
|
||
* bug fix: Compile-time type errors should never result in COMPILE-FILE
|
||
failure. (lp#943953)
|
||
* bug fix: Known bad local calls do not cause strange failures when
|
||
emitting or dumping code. (lp#504121)
|
||
* bug fix: Multiply-inlined structure constructor don't cause IR2-time
|
||
codegen errors: type checks are inserted as necessary. (lp#1177703)
|
||
* bug fix: Unsigned modular arithmetic is correctly converted into signed
|
||
modular arithemtic (mostly to exploit fixnum-width VOPs). (lp#1026634)
|
||
* bug fix: a combination of inlined local function with &optional and
|
||
recursion no longer causes undescriptive compiler errors. (lp#1180992)
|
||
* bug fix: sub-word BOOLEAN alien types now disregard higher order bits
|
||
when testing for non-zero-ness.
|
||
* bug fix: (CONCATENATE 'null ...) no longer fails for generic sequences.
|
||
(lp#1162301)
|
||
* bug fix: Type mismatch for the value of conditional expressions are
|
||
correctly reported when detected at compile-time, instead of complaining
|
||
about a constant NIL (similar for non-EQ-comparable catch tags).
|
||
* bug fix: Referring to INLINE global functions as values should not result
|
||
in a compilation failure. (lp#1035721)
|
||
* optimization: faster ISQRT on fixnums and small bignums
|
||
* optimization: faster and smaller INTEGER-LENGTH on fixnums on x86-64.
|
||
* optimization: On x86-64, the number of multi-byte NOP instructions used
|
||
for code alignment is now always minimal.
|
||
* optimization: On 64-bit targets, the compiler generates much faster
|
||
code for type checks for types known at compile time that are smaller
|
||
than (SIGNED-BYTE 64) or (UNSIGNED-BYTE 64) and larger than FIXNUM, and
|
||
their COMPLEX variants.
|
||
* optimization: On x86 targets, more uses of ALIEN-FUNCALL during cross
|
||
compilation now inline the INVOKE-WITH-SAVED-FP-AND-PC dance.
|
||
* optimization: ROOM no longer conses so egregiously on non-x86oid
|
||
systems.
|
||
* optimization: associative bitwise operations reassociate patterns like
|
||
(f (f x k1) k2) to expose (f x (f k1 k2)). Same for + and * of
|
||
rational values.
|
||
* optimization: quasiquote expressions now perform more constant folding,
|
||
instead of consing equal lists at runtime. (lp#1026439)
|
||
* optimization: local call analysis of inlined higher-order function
|
||
should converge more quickly, resulting in better code for complex
|
||
functions.
|
||
* optimization: On x86-64, medium (word-sized but wider than 32 bits)
|
||
integer constants are handled more cleverly, especially when they
|
||
can be represented as sign-extended (signed-byte 32). (Based on a
|
||
patch by Douglas Katzman)
|
||
* optimization: IF/IF conversion should reliably result in sane code
|
||
when (some of) the results of the inner IF are always false or
|
||
always true.
|
||
* optimization: On x86oids, variable right shifts of machine words are
|
||
compiled into straight SAR/SHR, instead of going through the generic
|
||
VOP. (lp#1066204)
|
||
|
||
changes in sbcl-1.1.7 relative to sbcl-1.1.6:
|
||
* enhancement: TRACE :PRINT-ALL handles multiple-valued forms.
|
||
(lp#457053)
|
||
* bug fix: :allocation slot option works for condition slots
|
||
(lp#1049404)
|
||
* bug fix: redefining conditions does not lead to multiple evaluations of
|
||
hairy slot initfunctions anymore (lp#1164969)
|
||
* bug fix: CLASS-DIRECT-DEFAULT-INITARGS now works for condition classes
|
||
(lp#1164970)
|
||
* bug fix: function constants now work as initforms and default initarg
|
||
values of conditions (lp#539517)
|
||
* bug fix: svref/(setf svref) on symbol macros don't crash the compiler
|
||
anymore. (Minimal test case provided by James M. Lawrence on sbcl-devel)
|
||
* bug fix: no more bogus ## references when pretty printing backquoted
|
||
forms with non-trivial structure sharing. (lp#1161218)
|
||
* bug fix: Don't signal an error on (setf (documentation nil 'function)
|
||
"doc"). Signal a style-warning instead when trying to set documentation
|
||
of NIL for all other documentation types. (Reported by Zach
|
||
Beane; regression since 2e52fa05.)
|
||
* bug fix: modular arithmetic involving large constants and conditionals
|
||
should no longer result in spurious dead code elimination. (Reported by
|
||
Eric Marsden).
|
||
* bug fix: our mach exception handler can seemingly called very early in
|
||
the program execution process on OS X 10.8.0. Try and handle that case
|
||
robustly, without potentially leaking mach ports too much.
|
||
* optimization: LOGBITP and LOGTEST optimizations from x86 ported to x86_64.
|
||
|
||
changes in sbcl-1.1.6 relative to sbcl-1.1.5:
|
||
* enhancement: the continuable error when defknown-ing over extant
|
||
fndb entries can be ignored by passing :overwrite-fndb-silently t
|
||
as a keyword argument to sb-c:defknown (after attributes). Useful
|
||
to allow defknown to be re-loaded. Use with :allow-other-keys t
|
||
for backward compatibility.
|
||
* optimization: compiler is much faster in compiling SVREF and (SETF SVREF)
|
||
forms.
|
||
* bug fix: Prevent a make-array transform from modifying source forms
|
||
causing problems for inlined code. Thanks to Bart Botta.
|
||
(regression since 1.0.42.11-bis)
|
||
* bug fix: clear-output calls the correct gray stream routine,
|
||
sb-gray:stream-clear-output. (lp#1153257)
|
||
* bug fix: an error is signalled for an invalid format modifier: ~<~@>.
|
||
(lp#1153148)
|
||
* bug fix: Better error messages for package operations (lp#1154776)
|
||
* bug fix: delete-package on a nonexistent package should signal a cerror.
|
||
(regression since 1.0.37.44).
|
||
* bug fix: accessing &MORE (stack allocated &REST) arguments checks bounds.
|
||
(lp#1154946, lp#1072112)
|
||
* bug fix: compiling make-array no longer signals an error when the
|
||
element-type is an uknown type, a warning is issued instead.
|
||
Thanks to James Kalenius (lp#1156095)
|
||
* bug fix: SEARCH on generic (non-VECTOR non-LIST) sequence types no longer
|
||
produces wrong results for some inputs. (Thanks to Jan Moringen.)
|
||
(lp#1153312)
|
||
|
||
changes in sbcl-1.1.5 relative to sbcl-1.1.4:
|
||
* minor incompatible change: SB-SPROF:WITH-PROFILING no longer loops
|
||
by default.
|
||
* new feature: package local nicknames. See manual for details.
|
||
* new feature: SB-EXT:MAP-DIRECTORY provides a powerful interface for
|
||
directory traversal: it is the backend used by SBCL for CL:DIRECTORY.
|
||
* enhancement: easier to use restarts for resolving name-conflicts
|
||
resulting from IMPORT, EXPORT, or USE-PACKAGE.
|
||
* enhancement: variant DEFPACKAGE forms now signal a full error with
|
||
restarts provided for resolving the situation. (lp#891351)
|
||
* enhancement: by setting SB-EXT:*ON-PACKAGE-VARIANCE* appropriately variant
|
||
DEFPACKAGE forms can now signal a full error with restarts provided for
|
||
resolving the situation. See manual for details. (lp#891351)
|
||
* enhancement: make-random-state now uses CryptGenRandom as a seed on Windows.
|
||
(Thanks to Anton Kovalenko.) (lp#1102748)
|
||
* enhancement: backtrace improvements
|
||
** secondary CLOS dispatch functions have better debug names (lp#503081)
|
||
** easier to read method names in backtraces. See
|
||
SB-DEBUG:*METHOD-FRAME-STYLE*.
|
||
** SB-DEBUG:PRINT-BACKTRACE and SB-DEBUG:LIST-BACKTRACE are available as
|
||
forwards-compatible replacements for SB-DEBUG:BACKTRACE and
|
||
SB-DEBUG:BACKTRACE-AS-LIST.
|
||
** SB-DEBUG:*SHOW-ENTRY-POINT-DETAILS** has been deprecated, as the same
|
||
information is available in less intrusive form as frame annotations.
|
||
* enhancement: SB-POSIX now provides MAP-ANON.
|
||
* enhancement: test-suite results are colorized, failures in red, unexpected
|
||
success in green. Works on Windows and on terminals with ANSI escape code
|
||
support. Can be disabled with --no-color.
|
||
* optimization: SB-CONCURRENCY:QUEUE implementation is more efficient.
|
||
(thanks to James M. Lawrence)
|
||
* bug fix: no more unused variable style warnings from RESTART-CASE
|
||
macroexpansion (lp#1113859)
|
||
* bug fix: no more unused variable style warnings when loading
|
||
sb-bsd-sockets.asd (lp#1114681)
|
||
* bug fix: deleting a package removes it from implementation-package
|
||
lists of other packages.
|
||
* bug fix: SB-SPROF:WITH-PROFILING is now usable in the Slime REPL on Darwin.
|
||
This does not fix the occasional "interrupt already pending" issue, though.
|
||
* bug fix: (setf (documentation 'x 'function)) and
|
||
(setf (documentation #'x t)) set documentation in different places.
|
||
(regression since 1.0.43.63)
|
||
* bug fix: build on newer glibc. (lp#1095036)
|
||
|
||
changes in sbcl-1.1.4 relative to sbcl-1.1.3:
|
||
* optimization: LOOP expressions using "of-type character" have slightly
|
||
more efficient expansions.
|
||
* bug fix: very long (or infinite) constant lists in DOLIST do not result
|
||
in very long compile times or heap exhaustion anymore. (lp#1095488)
|
||
* bug fix: `#3(1) is read as #(1 1 1), not as #(1). (lp#1095918)
|
||
* bug fix: adjust-array ignored :initial-element for simple-vectors.
|
||
(lp#1096359)
|
||
* bug fix: optimizations to MAKE-INSTANCE with literal list initargs no
|
||
longer cause infinite loops (on circular data) or violate eqlity
|
||
constraints. (lp#1099708)
|
||
* bug fix: FIRST was not being open coded. (regression from 1.1.0)
|
||
|
||
changes in sbcl-1.1.3 relative to sbcl-1.1.2:
|
||
* enhancement: warnings about bad locale settings, LANG, LC_CTYPE, etc.
|
||
(lp#727625)
|
||
* enhancement: support for C-c to interrupt the foreground thread
|
||
on Windows. (Thanks to Anton Kovalenko.)
|
||
* enhancement: STDCALL alien callbacks. (Thanks to Anton Kovalenko.)
|
||
* enhancement: Safepoint builds on POSIX platforms can now optionally be
|
||
built without pseudo-atomic sequences and their run-time overhead.
|
||
* enhancement: Threads created outside of Lisp can enter Lisp through
|
||
alien callbacks and appear as Lisp threads for the duration of that
|
||
function invocation. On safepoint builds only.
|
||
* enhancement: Miscellaneous improvements to namestrings and underlying
|
||
calls to OS functions for file system access on Windows. (Thanks to
|
||
Anton Kovalenko.)
|
||
* enhancement: The MSI installer support for Windows now uses Windows
|
||
Installer XML at least version 3.5 and includes various usability
|
||
improvements. (Thanks to Dmitry Kalyanov and Anton Kovalenko.)
|
||
* enhancement: The sb-bsd-sockets contrib now supports non-blocking-mode
|
||
on Windows. (Thanks to Anton Kovalenko.)
|
||
* enhancement: The Windows backend now supports the x86-64 platform.
|
||
(Thanks to Anton Kovalenko.)
|
||
* bug fix: fasls are now once again directly executable (on platforms
|
||
supporting shebang lines, with a suitably-installed sbcl).
|
||
* bug fix: make.sh --help no longer runs clean.sh. (lp#937001)
|
||
* bug fix: Fix CAS access to slots of direct instances of structure classes
|
||
in the presence of subclasses sharing the same conc-name.
|
||
* bug fix: Logical pathname namestrings on Windows have been changed to
|
||
be lower-case, to minimize differences between POSIX and Windows.
|
||
|
||
changes in sbcl-1.1.2 relative to sbcl-1.1.1:
|
||
* notice: System requirements for SBCL on Microsoft Windows: Windows NT 5.1
|
||
or newer (Windows XP, Server 2003) is required. Support for Windows 2000
|
||
(NT 5.0) is no longer being maintained.
|
||
* notice: Starting with this version, SBCL on Windows no longer supports
|
||
building with disabled thread support.
|
||
* enhancement: frlocks have been added to SB-CONCURRENCY contrib module.
|
||
* enhancement: New feature sb-dynamic-core allows the runtime to be
|
||
rebuilt or relocated without requiring changes to the core file on
|
||
all linkage table platforms. Required on Windows. (Thanks to Anton
|
||
Kovalenko.)
|
||
* enhancement: Console I/O streams use UCS-2. (Thanks to Anton Kovalenko.)
|
||
* enhancement: I/O on Windows unnamed pipes is interruptible
|
||
asynchronously using interrupt-thread, timers when running on Windows NT
|
||
version 6.1 or newer (Windows 7, Server 2008 R2). (Thanks to Anton
|
||
Kovalenko.)
|
||
* enhancement: Support for the experimental safepoint-based stop-the-world
|
||
protocol on the PowerPC platform.
|
||
* bug fix: Non-blocking reads from the Windows console were not necessarily
|
||
non-blocking. Thanks to Anton Kovalenko. (lp#308923)
|
||
* bug fix: stability of threads on Windows has been improved upon through
|
||
an updated stop-the-world protocol (thanks to Anton Kovalenko).
|
||
|
||
changes in sbcl-1.1.1 relative to sbcl-1.1.0:
|
||
* enhancement: WITH-COMPILATION-UNIT no longer grabs the world-lock.
|
||
(COMPILE and COMPILE-FILE still do.)
|
||
* optimization: the SPARC backend now supports the precise generational
|
||
(GENCGC) garbage collection. Enabled by default on Solaris/SPARC and
|
||
Linux/SPARC. Thanks to Raymond Toy (via CMUCL).
|
||
* enhancement: add experimental support for the SB-THREAD feature and the
|
||
timer facility on Windows. Thanks to Dmitry Kalyanov and Anton Kovalenko.
|
||
Threads are enabled by default, and this version of SBCL is considered
|
||
to be the last and final release to officially support building with
|
||
threads disabled.
|
||
* optimization: The compiler no longer rotates loops in some cases where
|
||
this transformation actually lead to worse code being generated.
|
||
* 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.
|
||
* bug fix: SB-EXT:GC-LOGFILE signaled an error when no logfile was set.
|
||
(thanks to SANO Masatoshi)
|
||
* bug fix: PARSE-NATIVE-NAMESTRING performed non-native parsing when
|
||
:JUNK-ALLOWED was true.
|
||
* bug fix: type derivation inferred overly conservative types for
|
||
unions of array types. (lp#1050768)
|
||
|
||
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,
|
||
the parameter n-fixnum-tag-bits may now vary from 1 (fixnum =
|
||
(signed-byte 63)) to 3 (fixnum = (signed-byte 61)) at build-time.
|
||
* enhancement: SB-EXT:WAIT-FOR allows waiting for arbitrary events.
|
||
* minor(?) incompatible(?) change: The default fixnum width on 64-bit
|
||
targets is now 63 bits (up from 61).
|
||
* enhancement: DESCRIBE now reports a lambda-list and source location
|
||
for complext setf-expanders.
|
||
* bug fix: PUSH, PUSHNEW, POP, REMF, INCF, DECF, DEFINE-MODIFY-MACRO,
|
||
GETF, LOGBITP, LDB, and MASK-FIELD now arrange for non-primary values
|
||
of multiple-valued places to be set to NIL, instead of signalling an
|
||
error (per a careful reading of CLHS 5.1.2.3).
|
||
* bug fix: floating-point traps now work on darwin/x86 and /x86-64.
|
||
* bug fix: repair crash in x86oid darwin signal handling emulation
|
||
when built with certain compilers.
|
||
* bug fix: SB-ROTATE-BYTE misrotated to the right when using constant
|
||
rotation arguments on x86-64. (lp#882151)
|
||
* bug fix: low-level control flow optimisations could result in bogus
|
||
code in functions with tail and non-tail calls to local functions on
|
||
x86oids. (lp#883500)
|
||
* bug fix: on SPARC/:sb-unicode, avoid crashing the assembler by trying
|
||
to emit literal characters > (code-char 4095), for comparisons with
|
||
constant characters.
|
||
* bug fix: ROOM reported only the low 32 bits of dynamic space usage
|
||
on 64 bit platforms. (lp#881445)
|
||
* bug fix: DELETE-FILE did not MERGE-PATHNAMES, making it possible to
|
||
delete the wrong file when using relative pathnames. (lp#882877)
|
||
* bug fix: optimized SEARCH of vectors-on-vectors mishandled zero-length
|
||
sequences and :KEY NIL.
|
||
|
||
changes in sbcl-1.0.52 relative to sbcl-1.0.51:
|
||
* enhancement: ASDF has been updated to version 2.017.
|
||
* enhancement: the --core command line option now accepts binaries with
|
||
an embedded core.
|
||
* enhancement: when built with :sb-core-compression, core files (regular
|
||
or executable) can be compressed with zlib. Use the :COMPRESSION
|
||
argument to SAVE-LISP-AND-DIE to specify a compression level.
|
||
* enhancement: --[no-]merge-core-pages determines whether the runtime
|
||
hints the operating system that identical core pages between SBCL
|
||
processes should share the same physical memory. Default is to only
|
||
enable this for compressed cores.
|
||
* optimization: SLEEP no longer conses.
|
||
* optimization: *PRINT-PRETTY* no longer slows down printing of strings
|
||
or bit-vectors when using the standard pretty-print dispatch table.
|
||
* bug fix: non-function FTYPE declarations no longer cause a compiler-error.
|
||
(lp#738464)
|
||
* bug fix: compiler-errors causes by MEMBER types in conjunction with with
|
||
AREF, CHAR, etc. (lp#826971)
|
||
* bug fix: compiler-errors causes by integer arguments with composed of
|
||
multiple ranges to ARRAY-IN-BOUNDS-P. (lp#826970)
|
||
* bug fix: ,@ and ,. now signal a read-time error for certain non-list
|
||
expressions. (lp#770184)
|
||
* bug fix: complex single float literals are correctly aligned when used
|
||
as arguments of arithmetic operators.
|
||
* bug fix: on 32-bit platforms, rounding of double floats larger than a
|
||
fixnum is correct. (reported by Peter Keller)
|
||
* bug fix: stray FD-HANDLERs are no longer left lying around after unwinds
|
||
from RUN-PROGRAM. (lp#840190, reported by Dominic Pearson; fix from Max
|
||
Mikhanosha)
|
||
* bug fix: redefining classes such that slots with custom allocation are
|
||
added or removed works again.
|
||
|
||
changes in sbcl-1.0.51 relative to sbcl-1.0.50:
|
||
* minor incompatible change: SB-BSD-SOCKET socket streams no longer
|
||
participate in SERVE-EVENT by default: pass :SERVE-EVENTS T to
|
||
MAKE-SOCKET-STREAM if using SERVE-EVENT.
|
||
* enhancement: added support for socket keepalive timeout intervals
|
||
and probe counts on Linux.
|
||
* enhancement: building 32-bit SBCL on Linux/x86-64 now works without a
|
||
chroot. (Use "SBCL_ARCH=x86 sh make.sh" to build.)
|
||
* enhancement: added new toplevel options --quit and --non-interactive
|
||
(lp#822712).
|
||
* enhancement: the Windows port of SBCL now builds and runs on Wine
|
||
(thanks to Anton Kovalenko).
|
||
* enhancement: more, and more correct, SSE instruction definitions on
|
||
x86-64 (thanks to Alexander Gavrilov).
|
||
* enhancement: SB-EXT:SPIN-LOOP-HINT assembles to an instruction designed
|
||
to help the processor execute spin loops, when applicable. Currently
|
||
implemented for x86 and x86-64.
|
||
* optimization: unsigned integer divisions by a constant are implemented
|
||
using multiplication (affects CEILING, FLOOR, TRUNCATE, MOD, and REM.)
|
||
* optimization: improved type-derivation for LOAD-TIME-VALUE.
|
||
* bug fix: correct RIP offset calculation in SSE comparison and shuffle
|
||
instructions. (lp#814688)
|
||
* bug fix: COERCE to unfinalized extended sequence classes now works.
|
||
(reported by Jan Moringen; lp#815155)
|
||
* bug fix: a compiler error during typecheck generation, reported by Eric
|
||
Marsden. (lp#816564)
|
||
* bug fix: obsolete instance protocol fires when shared slots are added
|
||
or removed.
|
||
* bug fix: fixed-format floating point printing with scaling factors.
|
||
(lp#811386)
|
||
* bug fix: using GCC >= 4.6 to build SBCL on x86 no longer breaks
|
||
backtraces. (lp#818460)
|
||
* bug fix: better backtraces for interrupted syscall frames on x86.
|
||
(lp#549673)
|
||
* bug fix: SSE comparison instructions can be disassembled even when one
|
||
operand is in memory. (lp#814702)
|
||
* bug fix: incomplete writes when not using SERVE-EVENTS. (lp#820599)
|
||
* bug fix: MULTIPLE-VALUE-BIND + VALUES -> LET conversion could lose derived
|
||
type information associated with the VALUES form.
|
||
* bug fix: broken warnings/errors for type-errors involving LOAD-TIME-VALUE
|
||
forms. (lp#823014)
|
||
* bug fix: OPEN :IF-EXISTS :APPEND now returns correct FILE-POSITION before
|
||
first write (lp#561642).
|
||
* bug fix: compiled closures from EVAL could not be DESCRIBEd. (lp#824974)
|
||
* bug fix: bound propagation involving conversion of large bignums to
|
||
floats no longer signals a SIMPLE-TYPE-ERROR, reported by Lutz Euler.
|
||
(lp#819269)
|
||
* bug fix: &REST to &MORE conversion still works in unsafe call to known
|
||
functions; reported by Lutz Euler (lp#826459).
|
||
* bug fix: bogus deadlocks from interrupts and GCs. (lp#807475, regression
|
||
since 1.0.48)
|
||
|
||
changes in sbcl-1.0.50 relative to sbcl-1.0.49:
|
||
* enhancement: errors from FD handlers now provide a restart to remove
|
||
the offending handler.
|
||
* enhancement: SB-INTROSPECT:FIND-DEFINITION-SOURCE now works on structure
|
||
copiers as well.
|
||
* enhancement: location of user or system initialization file can now easily
|
||
be customized for saved cores. See: SB-EXT:*USERINIT-PATHNAME-FUNCTION*
|
||
and SB-EXT:*SYSINIT-PATHNAME-FUNCTION*.
|
||
* enhancement: SB-EXT:MAKE-THREAD accepts an argument list designator for
|
||
the thunk, as a keyword argument, :arguments.
|
||
* enhancement: constraint propagation is simplified (and sped up) when
|
||
COMPILATION-SPEED > SPEED.
|
||
* enhancement: SB-ALIEN exports alien type specifiers SIZE-T and OFF-T.
|
||
* enhancement: debugger understands &MORE arguments better.
|
||
* optimization: extracting bits of a single-float on x86-64 has been
|
||
optimized. (lp#555201)
|
||
* optimization: MAP and MAP-INTO are more efficient for non-simple vectors,
|
||
when (> SPEED SPACE).
|
||
* optimization: local call trampolines (x86 and x86-64) are emitted
|
||
inline.
|
||
* optimization: implicit value cells for dynamic-extent closed-over bindings
|
||
on x86 and x86-64 can hold unboxed values as well.
|
||
* meta-optimization: improved compilation speed, especially for large
|
||
functions. (lp#792363 and lp#394206)
|
||
* bug fix: bound derivation for floating point operations is now more
|
||
careful about rounding possibly closing open bounds. (lp#793771)
|
||
* bug fix: SB-POSIX:SYSCALL-ERROR's argument is now optional. (accidental
|
||
backwards incompatible change in 1.0.48.27)
|
||
* bug fix: occasional debugger errors in when a type-error occured in a
|
||
function with dynamic-extent &rest list.
|
||
* bug fix: &optional and &key supplied-p arguments in DEFSTRUCT
|
||
boa-construtors can be used to initialized structure slots.
|
||
* bug fix: FMAKUNBOUND removes the MACRO-FUNCTION, should one exist.
|
||
(lp#795705, regression)
|
||
* bug fix: DIRECTORY works better on logical pathnames.
|
||
* bug fix: RUN-PROGRAM no longer fails spuriously when argument strings
|
||
are of the order of ARRAY-TOTAL-SIZE-LIMIT. (lp#787237)
|
||
* bug fix: the compiler no longer constant-folds NaNs in
|
||
MAKE-{SINGLE,DOUBLE}-FLOAT. (lp#486812)
|
||
* bug fix: FORMAT now handles floating point rounding correct, eg.
|
||
(format nil "~,1F" 0.01) => "0.0" instead of "0.01" as previously.
|
||
(lp#308961)
|
||
* bug fix: style warning during lambda-list introspection of generic
|
||
functions with both optional and key argments.
|
||
* bug fix: regalloc doesn't barf on unused TNs due to type-directed constant
|
||
folding. (lp#729765)
|
||
* bug fix: Fixed an off-by-one in MAP-ALLOCATED-OBJECTS that might have caused
|
||
infinite loops.
|
||
|
||
changes in sbcl-1.0.49 relative to sbcl-1.0.48:
|
||
* minor incompatible change: WITH-LOCKED-HASH-TABLE no longer disables
|
||
interrupts for its body.
|
||
* enhancement: source locations are now available for files loaded as
|
||
source, compile-time-too evaluation, and initialization files.
|
||
* enhancement: WITH-COMPILATION-UNIT :SOURCE-NAMESTRING allows providing
|
||
virtual source-file information, eg. overriding input-file of COMPILE-FILE
|
||
when a temporary file is used for compilation.
|
||
* enhancement: ASDF has been updated to version 2.015.3.
|
||
* enhancement: backtraces involving frames from the default evaluator are
|
||
more readable.
|
||
* enhancement: RUN-PROGRAM works with user-defined binary input and output
|
||
streams.
|
||
* enhancement: more informative compile-time warnings and runtime errors for
|
||
type-errors detected at compile-time.
|
||
* enhancement: deadlock detection for mutexes and spinlocks.
|
||
* enhancement: dynamic-extent for &rest lists stack allocate only their
|
||
spines, not their argumets. While portable code should not rely on this,
|
||
particularly in combination with inlining, it should make dynamic-extent
|
||
easier to use safely.
|
||
* enhancement: SB-POSIX improvements:
|
||
** WNOHANG and WUNTRACED are exported.
|
||
** SYSCALL-ERROR now also provides the name of the failing system call.
|
||
* enhancement: --script improvements:
|
||
** errors on standard input, output, and error streams are handled and
|
||
cause scripts to exit silently, making them easier to use in shell
|
||
pipelines.
|
||
** backtraces from scripts now go to standard error instead of the
|
||
terminal even if one is available.
|
||
** --script can be an argument, causing the script to be loaded from
|
||
standard input.
|
||
* enhancement: MAKE-ALIEN-STRING provides an easy way to transport lisp
|
||
strings to foreign memory.
|
||
* enhancement: (SETF GC-LOGFILE) allows logging garbage collections to
|
||
a file, making it easier to understand heap dynamics.
|
||
* optimization: using a &REST argument only in APPLY or VALUES-LIST calls
|
||
allows the compiler to automatically elide rest-list allocation so long as
|
||
the call sites are in functions that the compiler knows cannot escape.
|
||
(lp#504575)
|
||
* optimization: CALL-NEXT-METHOD using explicit arguments is faster,
|
||
especially in safe code when none of the required arguments have changed
|
||
their identities.
|
||
* bug fix: blocking reads from FIFOs created by RUN-PROGRAM were
|
||
uninterruptible, as well as blocking reads from socket streams created
|
||
with for which :SERVE-EVENTS NIL. (regression from 1.0.42.43)
|
||
* bug fix: SET-SYNTAX-FROM-CHAR now removes dispatch-macro character syntax
|
||
from the to-char if the from-char is not a dispatch-macro character.
|
||
* bug fix: references to undefined variables in function calls that are
|
||
optimized away now signal a runtime error. (lp#722734)
|
||
* bug fix: miscompilation of MULTIPLE-VALUE-CALL when asserting derived
|
||
types from a function defined in the same file. (regression from
|
||
1.0.43.57)
|
||
* bug fix: TRULY-THE forms are now macroexpandable and setf-expandable.
|
||
(lp#771673)
|
||
* bug fix: spurious errors during QUIT when standard streams were closed.
|
||
|
||
changes in sbcl-1.0.48 relative to sbcl-1.0.47:
|
||
* incompatible change: SB!KERNEL:INSTANCE-LAMBDA, deprecated for over five
|
||
years, is now no longer supported.
|
||
* enhancement: read() and write() have been added to SB-POSIX.
|
||
* enhancement: types of DEFSTRUCT constructors are proclaimed more
|
||
accurately, allowing better typechecking of call-sites.
|
||
* enhancement: errors during compile-time-too processing (i.e. EVAL-WHEN)
|
||
are no longer caught. (reverted to pre 1.0.34 behaviour)
|
||
* optimization: slightly faster ISQRT. (lp#713343)
|
||
* bug fix: better support for Solaris /bin/sh in sh-based tests.
|
||
* bug fix: TRACE behaves better when attempting to trace undefined
|
||
functions. (lp#740717)
|
||
* bug fix: missed optimizations for (FUNCALL (LAMBDA ...) ...) in comparison
|
||
to (FUNCALL #'(LAMBDA ...) ...).
|
||
* bug fix: ((LAMBDA ...) ...) forms with invalid argument counts resulted in
|
||
a compile-time error. (lp#720382)
|
||
* bug fix: forms such as (FUNCALL (FUNCTION NAME OOPS) ...) were compiled
|
||
without complaints.
|
||
* bug fix: less verbose source forms for functions from EVAL. (lp#747485)
|
||
* bug fix: sense of SLOT-BOUNDP-USING-CLASS was inverted in a MAKE-INSTANCE
|
||
optimization. (regression from 1.0.45.18/1.0.46.15)
|
||
* bug fix: package locks did not protects against compile-time side-effects
|
||
of DEFUN. (lp#675584)
|
||
* bug fix: --dynamic-space-size argument is validated more carefully.
|
||
(lp#721457)
|
||
* bug fix: memory fault from printing a malformed simple-condition.
|
||
(lp#705690)
|
||
* bug fix: redefining classes so that slot-definition classes change now
|
||
engages the obsolete instance protocol. (lp#766271)
|
||
* bug fix: constant improper lists could break source coverage recording.
|
||
(lp#767959)
|
||
* bug fix: compiling calls to eg. MEMBER with massive constant list arguments
|
||
could exhaust stack.
|
||
|
||
changes in sbcl-1.0.47 relative to sbcl-1.0.46:
|
||
* bug fix: fix mach port rights leaks in mach exception handling code on
|
||
darwin/x86 and /x86-64. (thanks to Willem Oudshoorn for motivation and the
|
||
initial patch)
|
||
* enhancement: --script muffles style-warnings and compiler notes. (lp#677779)
|
||
* enhancement: redefinition warnings for macros from different files. (lp#434657)
|
||
* enhancement: better MACHINE-VERSION on Darwin x86 and x86-64. (lp#668332)
|
||
* enhancement: (FORMAT "foo" ...) and similar signal a compile-time warning. (lp#327223)
|
||
* enhancement: no more "in: LAMBDA NIL" messages from the compiler for forms
|
||
processed using EVAL -- now the appropriate toplevel form is reported instead.
|
||
* enhancement: more legible style-warnings for inappropriate IGNORE and IGNORABLE
|
||
declarations. (lp#726331)
|
||
* enhancement: :NOT-NULL option has been added to alien C-STRING type to indicate
|
||
that NIL/NULL is excluded from the type.
|
||
* enhancement: SB-INTROSPECT:MAP-ROOT allows mapping over pointers contained in
|
||
arbitrary objects.
|
||
* optimization: SLOT-VALUE &co are faster in the presence of SLOT-VALUE-USING-CLASS
|
||
and its compatriots.
|
||
* optimization: core startup time is reduced by 30% on x86-64. (lp#557357)
|
||
* bug fix: SB-DEBUG:BACKTRACE-AS-LIST guards against potentially leaking
|
||
stack-allocated values out of their dynamic-extent. (lp#310175)
|
||
* bug fix: attempts to use SB-SPROF for wallclock profiling on threaded
|
||
x86-64 builds caused a type-error.
|
||
* bug fix: calling COMPILE with something else than a lambda-expression as the
|
||
second argument reports a more sensible error. (lp#718905)
|
||
* bug fix: invalid combinations of :PREDICATE and :TYPE options in DEFSTRUCT
|
||
are detected. (lp#520607)
|
||
* bug fix: constant keyword argument checking didn't take :ALLOW-OTHER-KEYS
|
||
into account.
|
||
* bug fix: SLOT-BOUNDP information is correct during MAKE-INSTANCE in the
|
||
presence of (SETF SLOT-VALUE-USING-CLASS) and SLOT-BOUNDP-USING-CLASS
|
||
methods. (regression from 1.0.45.18)
|
||
* bug fix: INITIALIZE-INSTANCE :AROUND methods supplying initargs via
|
||
CALL-NEXT-METHOD work correctly. (regression from 1.0.45.19)
|
||
* bug fix: several foreign functions accepting string also accepted NIL and
|
||
consequently caused a memory fault at 0 now signal a type-error instead.
|
||
(lp#721087)
|
||
* bug fix: under rare circumstances, constraint propagation could rewrite a
|
||
variable reference to refer to a variable not in scope, causing an error
|
||
during physical environment analysis when attempting to close over the
|
||
variable. (lp#551227)
|
||
* bug fix: SIMPLE-CONDITION :FORMAT-CONTROL defaults to NIL.
|
||
|
||
changes in sbcl-1.0.46 relative to sbcl-1.0.45:
|
||
* enhancement: largefile support on Solaris.
|
||
* enhancement: SB-PROFILE:REPORT now supports :LIMIT and :PRINT-NO-CALL-LIST
|
||
arguments (lp#710017)
|
||
* enhancement: SB-PCL:+SLOT-UNBOUND+ is exported, making it possible to
|
||
distinguish unbound instance slots when using STANDARD-INSTANCE-ACCESS
|
||
&co. (lp#718039)
|
||
* optimization: ERROR and CERROR are approximately 5 times faster.
|
||
* optimization: optimized constructors are used for MAKE-INSTANCE of classes
|
||
with applicable non-standard (SETF SLOT-VALUE-USING-CLASS),
|
||
SLOT-BOUNDP-USING-CLASS, and INITIALIZE-INSTANCE :AROUND methods, speeding
|
||
up instance creation in those cases.
|
||
* optimization: arithmetic operations with multiple constant arguments in now
|
||
have them reduced at compile-time. (lp#676414)
|
||
* optimization: determining current character position on string-streams for
|
||
pretty-printing was overly slow.
|
||
* bug fix: local tail calls to DYNAMIC-EXTENT functions can no longer cause
|
||
lifetime analysis to overwrite closed-over variables (lp#681092).
|
||
* bug fix: encoding errors from some multibyte external formats such as EUC-JP
|
||
were not handled correctly (lp#713063).
|
||
* bug fix: printing waitqueue objects without setting *PRINT-CIRCLE* to T is now
|
||
safe (lp#673630).
|
||
* bug fix: Solaris/x86-64 wasn't getting built with lutex support by
|
||
mistake. (lp#667297).
|
||
* bug fix: CONSTANTLY generated functions had bogus lambda-lists. (lp#713626)
|
||
* bug fix: RUN-PROGRAM :PTY option was racy on OpenBSD. (lp#669485)
|
||
* bug fix: UNINTERN takes a symbol, not a symbol designator -- could previously
|
||
unintern the wrong symbol with the same name. (lp#693796)
|
||
* bug fix: COPY-PPRINT-DISPATCH always has access to a pristine table,
|
||
making it possible to restore the initial table if it has been messed up.
|
||
(lp#678409)
|
||
|
||
changes in sbcl-1.0.45 relative to sbcl-1.0.44:
|
||
* enhancement: ~/ and ~user/ are treated specially in pathnames.
|
||
Refer to documentation for details.
|
||
* enhancement: ASDF has been updated to version 2.010.
|
||
* optimization: mutated closed-over variables that are only accessed by
|
||
DYNAMIC-EXTENT closures (currently only FLET and LABELS functions
|
||
declared to be DYNAMIC-EXTENT) are stored directly in their containing
|
||
stack frame, rather than allocating a VALUE-CELL (lp#586103).
|
||
* optimization: UNWIND-PROTECT cleanup functions are now declared
|
||
DYNAMIC-EXTENT.
|
||
* bug fix: backtracing function with &REST arguments now shows the full
|
||
argument list. (lp#310173)
|
||
* bug fix: return types for functions with complex lambda-lists are now
|
||
derived properly (lp#384892)
|
||
* bug fix: when SPEED > SPACE compiling CONCATENATE 'STRING with constant
|
||
long string arguments slowed the compiler down to a crawl.
|
||
* bug fix: closure VALUE-CELLs are no longer stack-allocated (lp#308934).
|
||
* bug fix: non-standard MAKE-METHOD-LAMBDA methods could break RETURN-FROM
|
||
in the DEFMETHOD body.
|
||
* bug fix: #<SB-C::DEFINED-FUN ...> should no longer appear in compiler
|
||
messages, being instead replaced with the corresponding function name.
|
||
* bug fix: don't derive overly complex unions of numeric types for arithmetic
|
||
operators. (lp#309448)
|
||
|
||
changes in sbcl-1.0.44 relative to sbcl-1.0.43:
|
||
* enhancement: RUN-PROGRAM accepts :EXTERNAL-FORMAT argument to select the
|
||
external-format for its :INPUT, :OUTPUT, AND :ERROR :STREAMs.
|
||
* enhancement: ALLOCATION-INFORMATION also provides the page the object
|
||
resides on.
|
||
* enhancement: default dynamic-space size can be configured at build-time
|
||
without touching source, using the --dynamic-space-size argument to make.sh.
|
||
* enhancement: DESCRIBE recognizes symbols naming optimization policy
|
||
qualities, and mentions ALWAYS-BOUND declarations.
|
||
* enhancement: ATOMIC-INCF now supports AREF of (SIMPLE-ARRAY SB-EXT:WORD (*))
|
||
as a place.
|
||
* enhancement: ASDF has been updated to 2.009.
|
||
* enhancement: the system detects known type-erros in calls better,
|
||
signalling a full warning about violated proclaimed FTYPEs and violations
|
||
of derived FTYPEs within the same file, including self-calls.
|
||
* enhancement: new function: SB-EXT:DELETE-DIRECTORY is now provided.
|
||
* optimization: constant-folding exploits numeric and character types, in
|
||
addition member types.
|
||
* optimization: numeric, character and member types that are inhabited by
|
||
exactly one value are tested with EQL.
|
||
* optimization: more conditional branches are eliminated during IR1.
|
||
Branches are simplified before performing if/if-conversion, and simple
|
||
equivalent branches (that only read the same constant or variable) are
|
||
merged.
|
||
* improvements to the Windows port:
|
||
** change: canonical unparsing form for pathname namestrings now uses / as
|
||
directory separator. NATIVE-NAMESTRING still uses \ as the separator.
|
||
** bug fix: stackoverwriting due to incorrect usage of PeekConsoleInput
|
||
on Windows. (thanks to Kalyanov Dmitry)
|
||
** bug fix: build now works on cygwin with GCC 4.x installed. (thanks to
|
||
Kalyanov Dmitry)
|
||
** bug fix: run-sbcl.sh now works on Cygwin. (thanks to Kalyanov Dmitry)
|
||
* bug fix: compiler failed to derive the result-type of MAKE-ARRAY as
|
||
(AND VECTOR (NOT SIMPLE-ARRAY)) when appropriate. (lp#309130)
|
||
* bug fix: (THE (VALUES ...)) in LOAD-TIME-VALUE caused a compiler-error.
|
||
(lp#646796)
|
||
* bug fix: interrupts arriving during CL:OPEN caused an error.
|
||
* bug fix: overeager character buffering could cause input to block
|
||
spuriously when reading from a pipe (lp#643686)
|
||
* bug fix: more efficient timer expiry should avoid starvation on systems
|
||
where number of SIGALRMs per second is restricted. (lp#375515)
|
||
* bug fix: non-unicode builds no longer fail (broken since 1.0.36.15).
|
||
* bug fix: compile-times no longer scale linearly with the size of
|
||
quoted lists in source-code. (lp#654289)
|
||
* bug fix: better errors for unknown external-formats in OPEN. (lp#561974)
|
||
* bug fix: DEBUG>SPEED no longer degrades ALIEN-FUNCALL performance quite
|
||
so badly. (lp#654485)
|
||
* bug fix: SB-INTROSPECT:FIND-DEFINITION-SOURCES-BY-NAME no longer signals
|
||
an error for eg. STRUCTURE. (lp#458015)
|
||
* bug fix: LOOP WITH NIL = ... signalled an unused variable style-warning.
|
||
(lp#613871, thanks to Roman Marynchak)
|
||
* bug fix: more reliable &REST list type derivation. (lp#655203)
|
||
* bug fix: PPRINT-LOGICAL-BLOCK multiply-evaluated :PER-LINE-PREFIX,
|
||
and issued pointles code-deletion notes for it, :PREFIX, and :SUFFIX.
|
||
* bug fix: the compiler didn't utilize the proclaimed ftype for functions
|
||
also declared NOTINLINE. (lp#655581)
|
||
* bug fix: the compiler could attempt to emit constant left shifts of
|
||
greater value than n-word-bits. (lp#309063)
|
||
* bug fix: (SETF SYMBOL-FUNCTION) and (SETF FDEFINITION) clear derived
|
||
type information for the function being set. (lp#659220)
|
||
* bug fix: the system used to signal bogus STYLE-WARNINGs when functions
|
||
containing self-calls were recompiled with a new signature, and failed
|
||
to warn when a self-call using the old signature was left in. (lp#655126)
|
||
* bug fix: incorrect FILE-POSITION on streams opened using :EXTERNAL-FORMAT
|
||
:DEFAULT when the default external had character size other than 8 bits.
|
||
(lp#657183)
|
||
* bug fix: derived types of functions in the same file were implicitly
|
||
trusted, leading to potential heap corruption when those function were
|
||
defined incompatibly. (lp#657499)
|
||
* bug fix: existing ASDF source registries are ignored when building
|
||
contribs (lp#659105)
|
||
* bug fix: short-form DEFSETF checks that the second argument is a symbol
|
||
(lp#655824, thanks to Roman Marynchak)
|
||
* bug fix: (SETF MACRO-FUNCTION) clobbered macro-definitions before
|
||
package-lock violation was detected. (lp#660752)
|
||
* bug fix: the system can store different docstrings for a single function
|
||
under different names. (lp#661631, regression from 1.0.29.24)
|
||
* bug fix: source-locations of DEFGENERIC forms weren't getting recorded
|
||
properly. (lp#384801)
|
||
* bug fix: (COERCE X '(SIMPLE-VECTOR 5)) and similar coercions to vectors
|
||
of specified length could confuse the type derivation in unsafe code.
|
||
(lp#655872)
|
||
* bug fix: SB-POSIX:FORK now signals an error if an attempt to
|
||
fork with multiple Lisp threads running is made on every platform,
|
||
not just Darwin. (lp#451111)
|
||
* bug fix: SB-BSD-SOCKETS and SB-SIMPLE-STREAMS could leave stale finalizers
|
||
around when core was saved, which could cause undefined behaviour when the
|
||
core was reified.
|
||
* bug fix: Allow UNTRACE of functions that are no longer defined
|
||
(lp#667657, thanks to Attila Lendvai)
|
||
* bug fix: MAKE-ARRAY calls with invalid keyword argument lists now signal a
|
||
compile-time warning (lp#664373, thanks to Stas Boukarev)
|
||
|
||
changes in sbcl-1.0.43 relative to sbcl-1.0.42:
|
||
* incompatible change: FD-STREAMS no longer participate in the serve-event
|
||
event-loop by default. (lp#316072)
|
||
** In addition to streams created by explicit calls to MAKE-FD-STREAM this
|
||
affects streams from CL:OPEN.
|
||
** Streams from SOCKET-MAKE-STREAM still participate in serve-event by
|
||
default, but this is liable to change: applications needing serve-event
|
||
for socket streams should explicitly request it using :SERVE-EVENTS T
|
||
in the call.
|
||
* enhancement: SB-EXT:WORD type is provided for use with SB-EXT:ATOMIC-INCF
|
||
&co.
|
||
* enhancement: CLOS effective method functions and defclass slot typechecking
|
||
function now have debug names for use in backtraces and profiles.
|
||
* enhancement: ASDF has been updated to version 2.004. (lp#605260, thanks to
|
||
Faré Rideau)
|
||
* enhancement: symbols are printed using fully qualified names in several
|
||
error and warning messages which are often associated with package
|
||
conflicts or mixups (lp#622789, thanks to Attila Lendvai)
|
||
* bug fix: SB-BSD-SOCKETS:SOCKET-CONNECT was not thread safe. (lp#505497,
|
||
thanks to Andrew Golding)
|
||
* bug fix: reading /proc files on Linux works. (lp#425199)
|
||
* bug fix: DOTIMES accepted literal non-integer reals. (lp#619393, thanks to
|
||
Roman Marynchak)
|
||
* bug fix: WRITE-TO-STRING compiler macro binding special variable names,
|
||
breaking code that tried to write the value of a printer control variable.
|
||
(lp#581564, thanks to Stas Boukarev)
|
||
* bug fix: WRITE compiler macro did not handle output stream designators
|
||
correctly. (lp#598374, thanks to Stas Boukarev)
|
||
* bug fix: better availability of names of foreign functions in backtraces
|
||
on Linux. (lp#626962, thanks to Stas Boukarev)
|
||
* bug fix: scripting and build for Solaris and FreeBSD. (lp#615497,
|
||
lp#627581, thanks to Josh Elsasser and Jim Wise)
|
||
* bug fix: build fixes for OpenBSD -current and 4.8 (lp#615489, lp#615492,
|
||
thanks to Josh Elsasser)
|
||
* bug fix: using aliases for builtin classes as defmethod specializers
|
||
without adding DEFTYPEs for them works. (lp#618387)
|
||
* bug fix: timetravel by getrusage() no longer causes type-errors during GC.
|
||
(lp#544421)
|
||
* bug fix: legally dynamic-extent lists and vectors used as
|
||
initialization arguments to MAKE-ARRAY can be stack allocated. (lp#586105)
|
||
* bug fix: inline-expansion creating references to dead lambda-variables
|
||
(lp#454681, thanks to Alexey Dejneka)
|
||
* bug fix: better error message for bogus numerical arguments to RANDOM.
|
||
(lp#598986, thanks to Stas Boukarev)
|
||
* bug fix: the compiler occasionally inlined references from incompatible
|
||
environments occurs. (lp#308951)
|
||
* bug fix: the compiler threw an error when trying to compile a local
|
||
function (labels or flet) known to take a specialized complex argument.
|
||
(not in launchpad, reported by sykopomp in #lispgames)
|
||
* bug fix: package-locks failed to protect against compile-time effects of
|
||
DEFUN when the symbol previously had a macro definition. (lp#576637)
|
||
* bug fix: spurious ignore warnings even given (DECLARE IGNORE) in methods
|
||
when parameter bindings mutated. (reported by Faré Rideau; lp #611361)
|
||
* bug fix: workaround for compiler hang in ORDER-UVL-SETS (lp#308914)
|
||
* bug fix: evaluation in debugger REPL works using the global context when
|
||
in frames that do not have sufficient debug information.
|
||
* bug fix: exceeding FD_SETSIZE limit now results in an sensible error
|
||
(lp#316068)
|
||
* bug fix: (SETF DOCUMENTATION) of a macro works properly. (lp#643958, thanks
|
||
to Stas Boukarev)
|
||
* bug fix: interrupt taking longer than the requested period caused SLEEP
|
||
to hang on Darwin. (lp#640516, thanks to Joe Lebroco for the analysis)
|
||
|
||
changes in sbcl-1.0.42 relative to sbcl-1.0.41
|
||
* build changes
|
||
** Cross-compilation host is now specified to make.sh using
|
||
command-line argument --xc-host=<command> instead of a positional
|
||
argument. (thanks to Daniel Herring)
|
||
** Install location can be specified to make.sh using command-line
|
||
argument --prefix=<path>. (lp#550889s, thanks to Daniel Herring)
|
||
* optimization: The default implementation of
|
||
COMPUTE-DISCRIMINATING-FUNCTION does much less wasted work.
|
||
* enhancement: Explicit memory barrier operations are now available for use
|
||
by multithreaded code. See documentation for details.
|
||
* enhancement: Experimental support for threading on Linux/PPC.
|
||
* bug fix: RENAME-PACKAGE returns the package. (Thanks to Eric Marsden)
|
||
* bug fix: EXPT signals an error if first argument is a zero and second
|
||
argument is a floating point zero. (lp#571581, thanks to Roman Marynchak)
|
||
* bug fix: DEFTYPE signals an error for non-list lambda-lists.
|
||
(lp#576594, thanks to Roman Marynchak)
|
||
* bug fix: make ASDF-INSTALL compatible with the now-included ASDF2.
|
||
(lp#612998, reported by Phil Hargett; patch from Jim Wise)
|
||
|
||
changes in sbcl-1.0.41 relative to sbcl-1.0.40:
|
||
* optimization: validity of observed keyword initargs to MAKE-INSTANCE is
|
||
cached, leading to many fewer expensive calls to
|
||
COMPUTE-APPLICABLE-METHODS.
|
||
* optimization: in the (unoptimized) general method for MAKE-INSTANCE on a
|
||
CLASS argument, search for and call an appropriate optimized ctor function
|
||
if it exists.
|
||
* bug fix: WRITE always returns the correct value.
|
||
|
||
changes in sbcl-1.0.40 relative to sbcl-1.0.39:
|
||
* bug fix: readdir now works on :inode64 darwin builds (lp#592897)
|
||
* bug fix: Name conflicts between symbols passed as arguments to a single
|
||
call to IMPORT no longer add multiple symbols with the same name to the
|
||
package (detectable via DO-SYMBOLS).
|
||
* bug fix: support building without the dlshim on darwin x86 and x86-64
|
||
(lp#533470).
|
||
* bug fix: TRACE :ENCAPSULATE NIL now works on ppc/linux.
|
||
|
||
changes in sbcl-1.0.39 relative to sbcl-1.0.38:
|
||
* bug fix: Backtrace from undefined function on x86 and x86-64 now show
|
||
the calling frame.
|
||
* bug fix: linkage-table entries on PPC now no longer overflow their
|
||
space allocation (potentially causing crashes if they are written out
|
||
of order).
|
||
* bug fix: Scrub control stack after scavenging in gencgc on non-x86oid
|
||
platforms, preventing the GC from seeing stale pointers on the control
|
||
stack in subsequent GCs (which would, and does, break invariants).
|
||
* bug fix: 32-bit unicode external formats now work on big-endian systems.
|
||
* bug fix: Literal characters with code points greater than about 32767
|
||
now work on PPC UNICODE builds.
|
||
* bug fix: Any noise left by SSE operations (sqrt and conversions) in the
|
||
high order bits are explicitly cleared out. In some contrived situations,
|
||
this could lead to wrong results in mixed real/complex float arithmetic.
|
||
* bug fix: Fix function/macro redefinition warnings when building with
|
||
clisp. (lp#576787, thanks to Josh Elsasser)
|
||
* new platform: experimental support for ppc/openbsd (thanks to Josh
|
||
Elsasser).
|
||
* bug fix: Floating-point traps now work on ppc/linux.
|
||
|
||
changes in sbcl-1.0.38 relative to sbcl-1.0.37:
|
||
* incompatible change: Thread names are now restricted to SIMPLE-STRINGs
|
||
like for any other thread-related datastructure, MUTEX, etc. (lp#547095)
|
||
* deprecation: the SB-QUEUE contrib was merged into the SB-CONCURRENCY
|
||
contrib module. New code should depend on SB-CONCURRENCY, not SB-QUEUE.
|
||
* deprecation: SB-THEAD:GET-MUTEX was deprecated in favor of
|
||
SB-THREAD:GRAB-MUTEX.
|
||
* new contributed module: SB-CONCURRENCY is a new contrib; it's supposed to
|
||
contain additional data structures and tools for concurrent programming;
|
||
at the moment it contains a lock-free queue, and a lock-free mailbox
|
||
implementation.
|
||
* new feature: added SB-THREAD:GRAB-MUTEX; it's like the now deprecated
|
||
GET-MUTEX but takes &key rather than &optional parameters. Also added
|
||
:TIMEOUT argument to GRAB-MUTEX on non-sb-lutex platforms like Linux and
|
||
BSD.
|
||
* new feature: added SB-THREAD:TRY-SEMAPHORE, a non-blocking variant of
|
||
SB-THREAD:WAIT-ON-SEMAPHORE.
|
||
* new feature: SB-EXT:ATOMIC-DECF has been added as a companion to
|
||
SB-EXT:ATOMIC-INCF.
|
||
* new feature: a CANCEL-DEADLINE is associated with DEADLINE-TIMEOUT
|
||
conditions to defer the deadline for forever.
|
||
* enhancement: *STANDARD-OUTPUT*, *STANDARD-INPUT*, and *ERROR-OUTPUT* are
|
||
now bivalent.
|
||
* enhancement: errors from NO-APPLICABLE-METHOD and
|
||
NO-PRIMARY-METHOD now have a RETRY restart available to retry the
|
||
generic function call.
|
||
* enhancement: SB-BSD-SOCKET improvements
|
||
** sockets and socket streams now have a more informative printed
|
||
representation based on the corresponding SOCKET-NAME and
|
||
SOCKET-PEERNAME.
|
||
** SOCKET-MAKE-STREAM once more supports the :AUTO-CLOSE option.
|
||
(lp#540413)
|
||
** SOCKET-CLOSE now accepts :ABORT argument, which is passed on to
|
||
CL:CLOSE when appropriate, and no longer disassociates the stream
|
||
from the socket if close failed. (lp#543951)
|
||
* improvements to the instrumenting profiler
|
||
** new feature: report per-function GC overhead. (thanks to John Fremlin)
|
||
** optimization: counters no longer use locks for the overflow mode.
|
||
** bug fix: whenever a profiling counter wrapped into overflow mode, it
|
||
incurred an off-by-one miscount.
|
||
* enhancement: improved MAKE-HASH-TABLE documentation (lp#543473)
|
||
* enhancement: improved DEFMETHOD pretty-printing.
|
||
* enhancement: perform range reduction when arguments are too large for
|
||
x87's transcendentals (instead of returning 0). (lp#327192)
|
||
* enhancement: eliminate some spurious TYPE-WARNINGs. Should help with
|
||
some of CL-PPCRE's macros. (lp#570079)
|
||
* enhancement: our machine code is slightly less hostile to valgrind on
|
||
x86-64.
|
||
* enhancement: up-to-date versions of NetBSD-current are supported. (Thanks
|
||
to Robert Swindells and Aleksej Saushev)
|
||
* bug fix: correct restart text for the continuable error in MAKE-PACKAGE.
|
||
* bug fix: a rare case of startup-time page table corruption.
|
||
* bug fix: a semaphore with multiple waiters and some of them unwinding due
|
||
to timeouts could be left in an inconsistent state.
|
||
* bug fix: fix typo in "Reporting Bugs" section of the manual (lp#520366)
|
||
* bug fix: misoptimization of multiplication by one in
|
||
(SB-C::FLOAT-ACCURACY 0) policies.
|
||
* bug fix: miscounts in SB-PROFILE.
|
||
* bug fix: Fix lost wakeup bug between SB-THREAD:CONDITION-WAIT and
|
||
CONDITION-NOTIFY on Linux. See threads "lost wakeup in condition-wait /
|
||
condition-notify" (Feb 2010) and "Condition-Wait, Deadline handler, waking
|
||
up itself" (March 2010) for further details.
|
||
* bug fix: allow forward FIND and POSITION on lists to elide checking :END
|
||
against length of the list if the element is found before the specified
|
||
END is reached. (thanks to Alec Berryman, lp#554385)
|
||
* bug fix: errors signalled during package graph modification no longer
|
||
block FIND-SYMBOL and FIND-PACKAGE in other threads. (lp#511072)
|
||
* bug fix: SB-POSIX build was broken when SBCL was compiled without the
|
||
:SB-DOC feature. (lp#552564)
|
||
* bug fix: SB-INTROSPECT build issues on GENGC/PPC. (lp#490490)
|
||
* bug fix: more robust runtime executable path detection. (lp#375549)
|
||
* bug fix: GCD always returns positive values. (lp#413680)
|
||
* bug fix: Converting division to multiplication by reciprocal handles
|
||
denormals.
|
||
* bug fix: We were too eager in eliding range reduction tests on x87.
|
||
The maximal magnitude is 2^63, not 2^64.
|
||
* bug fix: Transforms for TRUNCATE don't die when the result is completely
|
||
ignored anymore.
|
||
* bug fix: Maybe restore buildability on Alpha.
|
||
* bug fix: READ-BYTE isn't inline anymore, fixing weird streams failures.
|
||
(lp#569404)
|
||
* bug fix: RANDOM-STATE can be printed readably again.
|
||
* bug fix: Unreadable objects were sometimes printed like #<\nFoo>.
|
||
* bug fix: Using EQL with non-constant values of constant type (e.g. EQL
|
||
types) could result in type mismatches during compilation.
|
||
|
||
changes in sbcl-1.0.37 relative to sbcl-1.0.36:
|
||
* enhancement: Backtrace from THROW to uncaught tag on x86oids now shows
|
||
stack frame thrown from.
|
||
* enhancement: WITH-COMPILATION-UNIT :POLICY allows restricting changes to
|
||
compiler optimization qualities inside dynamic extent of its body.
|
||
* enhancement: LOAD-LOGICAL-PATHNAME-TRANSLATIONS can be used to load
|
||
translations from SYS:SITE;<HOST>.TRANSLATIONS.NEWEST (thanks to Michael
|
||
Weber)
|
||
* optimization: SLOT-VALUE and (SETF SLOT-VALUE) take advantage of
|
||
constraint propgation, allowing better compilation eg. when used to
|
||
access structures with WITH-SLOTS. (lp#520366)
|
||
* optimization: the compiler is now more aware of the type of the underlying
|
||
storage vector for multidimensional simple arrays resulting in better code
|
||
for accessing such arrays.
|
||
* optimization: passing NIL as the environment argument to TYPEP no longer
|
||
inhibits optimizing it. (lp#309788)
|
||
* optimization: more efficient register usage when handling single-float
|
||
arguments on x86-64. (thanks to Lutz Euler)
|
||
* optimization: ADJUST-ARRAY and STABLE-SORT on vectors no longer use
|
||
pre-allocated temporary vectors. (lp#496249)
|
||
* bug fix: Fix compiler error involving MAKE-ARRAY and IF forms
|
||
in :INITIAL-CONTENTS. (lp#523612)
|
||
* bug fix: FUNCTION-LAMBDA-EXPRESSION lost declarations from interpreted
|
||
functions. (lp#524707)
|
||
* bug fix: bogus style warnings from certain (SETF SLOT-VALUE) and
|
||
WITH-SLOTS usages during compilation.
|
||
* bug fix: SB-C::CLASS-INFO now prints correctly. (lp#514762)
|
||
* enhancement: Can now build with ud2 instead of int3 as trap instruction on
|
||
all x86oid platforms with :UD2-BREAKPOINTS target feature.
|
||
* bug fix: Breakpoints now work when using ud2 instead of int3 as trap
|
||
instruction (tested on x86oid linux with ud2-breakpoints).
|
||
* bug fix: slam.sh now works on win32.
|
||
* bug fix: better differences of numeric types. (lp#309124)
|
||
* bug fix: arrays declared intersection and union types can have their
|
||
upgraded element type derived. (lp#316078)
|
||
* bug fix: SB-SPROF allocation profiling for all threads failed to profile
|
||
threads started during profiling. (lp#472499)
|
||
* bug fix: SB-INTROSPECT test failure when building without SB-EVAL feature.
|
||
(lp#535658)
|
||
* bug fix: SB-CLTL2:DECLARATION-INFORMATION did not take
|
||
SB-EXT:RESTRICT-COMPILER-POLICY into account. (lp#313337)
|
||
* bug fix: Comma inside a backquoted array or structure resulted in nonsense
|
||
values instead of signaling an error. (lp#309093)
|
||
* bug fix: Spurious unused variable warning in a DEFSTRUCT edge case.
|
||
(lp#528807)
|
||
* bug fix: More consistent warnings and notes for ignored DYNAMIC-EXTENT
|
||
declarations (lp#497321)
|
||
* bug fix: FIND and POSITION on lists did not check sequence bounds properly
|
||
and failed to detect circular lists (lp#452008)
|
||
* bug fix: leakage from ~/.asdf-install into the ASDf-INSTALL contrib build
|
||
(lp#538974)
|
||
* bug fix: LOOP OF-TYPE VECTOR compile-time error. (lp#540186)
|
||
* bug fix: SIGNAL SB-SYS:INTERACTIVE-INTERRUPT before entering the debugger
|
||
due to it, so that handlers can run.
|
||
* bug fix: reparsing undefined types if they have become defined since
|
||
parsing. (lp#309128)
|
||
* bug fix: missing &REST type in a proclamation for a function with both
|
||
&REST and &KEY in lambda-list caused miscompilation (lp#458354)
|
||
* bug fix: WHO-CALLS information for source-transformed and compiler-macro
|
||
expanded calls (lp#542174)
|
||
* bug fix: more accurate WHO-MACROEXPANDS information; point into rather
|
||
than just at toplevel form.
|
||
|
||
changes in sbcl-1.0.36 relative to sbcl-1.0.35:
|
||
* new feature: SB-EXT:TYPEXPAND-1, SB-EXT:TYPEXPAND, and
|
||
SB-EXT:TYPEXPAND-ALL behave exactly like their MACROEXPAND counterparts
|
||
but work on type specifiers.
|
||
* new feature: SB-EXT:DEFINED-TYPE-NAME-P returns whether a symbol is known
|
||
to name a type specifier.
|
||
* new feature: SB-EXT:VALID-TYPE-SPECIFIER-P returns whether a given type
|
||
specifier is valid where "valid" basically means "would be accepted as
|
||
second argument of TYPEP".
|
||
* new feature: SB-INTROSPECT:FUNCTION-TYPE takes a function-designator and
|
||
returns the function's declared, or derived FTYPE.
|
||
* new feature: SB-POSIX now supports accessing the d_ino member of
|
||
dirent structures. (Thanks to Philipp Marek and Pierre THEIRRY)
|
||
* new feature: The function SB-EXT:SEED-RANDOM-STATE has been added to
|
||
provide for seeding a RANDOM-STATE object with user-provided data or
|
||
from the operating system's PRNG. Also, (MAKE-RANDOM-STATE T) will
|
||
attempt to initialize the returned state from the operating system's
|
||
PRNG where possible. (Thanks to Fare Rideau; launchpad bug lp#310116)
|
||
* bug fix: Fix SB-SIMPLE-STREAMS:READ-VECTOR to correctly set the
|
||
FILE-POSITION of the stream being read from. (launchpad bug lp#491087)
|
||
* bug fix: Fix grammar and style issues for the docstrings of
|
||
printer-related variables and functions. (Thanks to mon_key; launchpad
|
||
bug lp#518696)
|
||
* bug fix: Fix compilation on chenygc platforms. Thanks to Larry Valkama and
|
||
Bruce O'Neel.
|
||
* bug fix: SB-THREAD:CONDITION-WAIT sometimes signaled a deadline twice
|
||
in a row even though a handler defered the deadline long into the
|
||
future. (lp#512914)
|
||
* bug fix: A deadline handler was run without interrupts enabled for a
|
||
deadline signaled within SB-THREAD:CONDITION-WAIT. That could result
|
||
in infinitely spinning, non-killable threads.
|
||
* bug fix: Backtrace from internal-errors on x86-64 os x was truncated
|
||
before reaching the erring stack frame.
|
||
* bug fix: Fix type derivation for EXPT when raising a fixnum to a
|
||
real power. (launchpad bug lp#525949)
|
||
* bug fix: Fix SB-EXT:GENERATION-* accessors for generations > 0 on
|
||
GENCGC platforms. (launchpad bug lp#529014)
|
||
* bug fix: More robust checks for invalid DEFMETHOD argument specializers.
|
||
(launchpad bug lp#525916)
|
||
* bug fix: Fix building on Darwin when sysctl is not in the user's PATH.
|
||
(Thanks to Robert Goldman)
|
||
|
||
changes in sbcl-1.0.35 relative to sbcl-1.0.34:
|
||
* optimization: ROUND with a single single-float or double-float argument
|
||
is properly inlined when possible.
|
||
* optimization: Slightly better code is generated for integer<->float
|
||
conversions and for single-float<->double-float conversions on x86-64.
|
||
* optimization: SB-ROTATE-BYTE:ROTATE-BYTE now generates more efficient
|
||
code for 32-bit and 64-bit rotations on x86-64.
|
||
* bug fix: The install script changes the ownership of directories as well
|
||
as files for contrib modules using asdf. (thanks to Eugene Ossintsev;
|
||
launchpad bug lp#508485)
|
||
* bug fix: TRUNCATE with a single single-float or double-float argument is
|
||
properly inlined when possible. (launchpad bug lp#489388)
|
||
* bug fix: Passing a rotation count of zero to SB-ROTATE-BYTE:ROTATE-BYTE
|
||
no longer causes a compiler error on x86 and ppc.
|
||
* bug fix: GET-MACRO-CHARACTER bogusly computed its second return value
|
||
always relative to *READTABLE* rather than the passed argument.
|
||
|
||
changes in sbcl-1.0.34 relative to sbcl-1.0.33:
|
||
* minor incompatible change: threading support is now enabled by default
|
||
on x86[-64] Linux.
|
||
* enhancement: SB-INTROSPECT:DEFTYPE-LAMBDA-LIST now also works on most
|
||
builtin types.
|
||
* enhancement: Errors during compile-time-too processing (i.e. EVAL-WHEN)
|
||
are now caught and reported just like errors during macroexpansion.
|
||
* enhancement: SB-POSIX now provides access to tcdrain(), tcflow(),
|
||
tcflush(), tcgetsid(), and tcsendbreak(). (thanks to Jerry James)
|
||
* enhancement: ASDF systems can now depends on SB-QUEUE.
|
||
* fixes and improvements related to Unicode and external formats:
|
||
** bug fix: error handling and restart usage in the ucs-2 external format
|
||
has been improved.
|
||
** there is now an implementation of the ucs-4 external format.
|
||
** the utf-16 and utf-32 external formats are supported.
|
||
* bug fix: SB-POSIX wrapper for putenv no longer tries to put lisp strings
|
||
in the environment. setenv() and unsetenv() are also provided. (reported by
|
||
Fare Rideau; launchpad bug lp#460455)
|
||
* bug fix: LOAD of both .fasl and .FASL type files now forces fasl-style
|
||
loading. This ensures sensible errors for .FASL files from other
|
||
implementations on case-insensitive filesystems. (reported by Willem
|
||
Broekema; launchpad bug lp#489417)
|
||
* bug fix: #p"\\\\" can now be read without error on Win32. (reported by
|
||
Willem Broekema; launchpad bug lp#489698).
|
||
* bug fix: some minor code rearrangements to reenable warning-free building
|
||
from CMUCL (reported by xme@gmx.net; launchpad bug lp#491104)
|
||
* bug fix: PRINT-OBJECT for clos instances respects the right margin when
|
||
pretty printing
|
||
* bug fix: FIND-PACKAGE & DEFPACKAGE were not thread safe. (reported by
|
||
Attila Lendvai)
|
||
|
||
changes in sbcl-1.0.33 relative to sbcl-1.0.32:
|
||
* new port: support added for x86-64 NetBSD. (thanks to Aymeric Vincent)
|
||
* improvement: support O_LARGEFILE access to files larger than 2GB on
|
||
x86-64/linux. (thanks to Daniel Janus; launchpad bug lp#453080)
|
||
* new feature: SB-INTROSPECT:WHO-SPECIALIZES-DIRECTLY to get a list of
|
||
definitions for methods specializing on the passed class itself.
|
||
* new feature: SB-INTROSPECT:WHO-SPECIALIZES-GENERALLY to get a list of
|
||
definitions for methods specializing on the passed class itself, or on
|
||
subclasses of it.
|
||
* new build flag: :sb-xref-for-internals; SBCL will collect xref information
|
||
about itself during the build (e.g. for M-? in Slime), if this flag is
|
||
enabled in customize-target-features.lisp. This will increase the core
|
||
size by about 5-6mb, though, so it's mostly interesting to SBCL
|
||
developers.
|
||
* new feature: various GENCGC tuning parameters have been experimentally
|
||
documented and exported from SB-EXT. See documentation for details.
|
||
* fixes and improvements related to Unicode and external formats:
|
||
** the Unicode character database has been upgraded to the
|
||
Unicode 5.2 standard, giving names and properties to a number of new
|
||
characters, and providing a few extra characters with case
|
||
transformations.
|
||
** improvement: restarts for providing replacement input/output on coding
|
||
errors for fd-stream external formats.
|
||
** improvement: where :<encoding> is a keyword corresponding to an
|
||
external format the system supports, it is now possible to specify
|
||
(:<encoding> :replacement <character>) as an external format which will
|
||
automatically substitute <character> on encoding or decoding errors for
|
||
streams and for STRING-TO-OCTETS and its inverse. (launchpad bug
|
||
lp#317072)
|
||
** improvement: the file streams underlying the standard streams (such as
|
||
*STANDARD-INPUT*, *TERMINAL-IO*) are opened with an external format
|
||
which uses the replacement mechanism to handle encoding errors,
|
||
preventing various infinite error chains and unrecoverable I/O
|
||
confusion.
|
||
** minor incompatible change: the utf-8 external format now correctly
|
||
refuses to encode Lisp characters in the surrogate range (char-codes
|
||
between #xd800 and #xdfff).
|
||
** fix a typo preventing conversion of strings into octet vectors
|
||
in the latin-2 encoding. (reported by Attila Lendvai; launchpad bug
|
||
lp#471689)
|
||
** fix a bug in the octet multibyte handling of decoding errors and the
|
||
USE-VALUE restart. (launchpad bug lp#314939)
|
||
** fix the bug underlying the expected failure in the FORCE-END-OF-FILE
|
||
restart on fd-stream decoding errors.
|
||
** fix a bug in the ATTEMPT-RESYNC fd-stream decoding restart when the
|
||
error is near the end of file.
|
||
** fix a double-error case in unibyte octet conversions, when the first
|
||
use of USE-VALUE is ignored.
|
||
** fix bugs in handling of undefined code points in unibyte encodings.
|
||
** fix LISTEN (and consequent hangs in READ-CHAR-NO-HANG) on bivalent
|
||
streams after an UNREAD-CHAR.
|
||
* enhancement: SB-INTROSPECT:ALLOCATION-INFORMATION also reports if the
|
||
object is allocated in a boxed region of dynamic space.
|
||
* enhancement: SB-POSIX:FORK now signals an error if an attempt to
|
||
fork with multiple Lisp threads running is made, instead of going
|
||
ahead with unpredictable consequences. (reported by Leslie Polzer)
|
||
* bug fix: uses of slot accessors on specialized method parameters within
|
||
the bodies of SLOT-VALUE-USING-CLASS methods no longer triggers a type
|
||
error while finalizing the class. This fix may cause classes with slot
|
||
accessors to be finalized later than previously. (reported by Lars Rune
|
||
Nøstdal; launchpad bug lp#473699)
|
||
* bug fix: restore buildability on the MIPS platform. (regression from
|
||
1.0.30.38, reported by Samium Gromoff)
|
||
* bug fix: inspecting closures is less likely to fail with a type error.
|
||
* bug fix: no timer starvation when setting the system clock back.
|
||
(launchpad bug lp#460283)
|
||
* bug fix: WITH-STANDARD-IO-SYNTAX now binds *PRINT-PPRINT-DISPATCH* to the
|
||
standard pprint dispatch table as specified by CLHS.
|
||
* bug fix: give CLISP a hint about a type declaration to enable it to build
|
||
the cross-compiler without warnings. (thanks to Josh Elasser; launchpad
|
||
bug lp#396597)
|
||
* bug fix: correctly dump literal objects in defaulting forms of arglists.
|
||
(reported by Attila Lendvai; launchpad bug lp#310132)
|
||
* bug fix: distinguish in type specifiers between arrays that might be
|
||
complex and arrays that are definitely complex. (launchpad bug lp#309129)
|
||
* bug fix: SUBTYPEP knows that the SYMBOL type is not SUBTYPEP the KEYWORD
|
||
type. (reported by Levente Mészáros; launchpad bug lp#485972)
|
||
* bug fix: setting the value of a symbol-macro within a method in the
|
||
presence of type declarations works properly again. (reported by Iban
|
||
Hatchondo; launchpad bug lp#485019)
|
||
|
||
changes in sbcl-1.0.32 relative to sbcl-1.0.31:
|
||
* optimization: faster FIND and POSITION on strings of unknown element type
|
||
in high SPEED policies. (thanks to Karol Swietlicki)
|
||
* optimization: faster CONCATENATE 'STRING in low SPEED policies (reported
|
||
by David Vázquez)
|
||
* improvement: better error signalling for bogus parameter specializer names
|
||
in DEFMETHOD forms (reported by Pluijzer)
|
||
* bug fix: DELETE-FILE once again works on logical pathnames (regression
|
||
since 1.0.30.49)
|
||
* bug fix: LOGICAL-PATHNAME signals a TYPE-ERROR if pathspec is specified
|
||
incorrectly.
|
||
* bug fix: redefinition of a class via DEFCLASS without :DEFAULT-INITARGS
|
||
removes previous default initargs (reported by Lars Rune Nøstdal and
|
||
Samium Gromoff)
|
||
* bug fix: correct WHO-CALLS information for inlined lambdas with complex
|
||
lambda-lists. (reported by Peter Seibel)
|
||
* bug fix: SAVE-LISP-AND-DIE option :SAVE-RUNTIME-OPTIONS did not work
|
||
correctly when starting from an executable core without saved runtime
|
||
options (reported by Faré Rideau, thanks to Zach Beane)
|
||
* bug fix: (SETF SLOT-VALUE) signalled a warning which should have been
|
||
an optimization note instead. (reported by Martin Cracauer)
|
||
* bug fix: WITH-SLOTS did not work with THE forms. (thanks to David Tolpin)
|
||
* bug fix: Have RUN-PROGRAM with :INPUT T only run the subprocess in a
|
||
new process group if it doesn't need to share stdin with the sbcl
|
||
process. (thanks to Leslie Polzer)
|
||
* bug fix: SATISFIES could be misoptimized to refer to a local function.
|
||
(reported by Stanislaw Halik)
|
||
|
||
changes in sbcl-1.0.31 relative to sbcl-1.0.30:
|
||
* improvement: stack allocation is should now be possible in all nested
|
||
inlining cases: failure to stack allocate when equivalent code is manually
|
||
open coded is now considered a bug.
|
||
* improvements related to Unicode:
|
||
** the Unicode character database has been upgraded to the
|
||
Unicode 5.1 standard, giving names and properties to a number of new
|
||
characters, and providing a few extra characters with case
|
||
transformations.
|
||
** the system now recognizes and produces names for Unicode Hangul
|
||
syllable characters.
|
||
** the EBCDIC-US external-format is now supported for octet operations
|
||
(as well as for stream operations).
|
||
* new feature: experimental :EMIT-CFASL parameter to COMPILE-FILE can
|
||
be used to output toplevel compile-time effects into a separate .CFASL
|
||
file.
|
||
* optimization: COERCE to VECTOR, STRING, SIMPLE-STRING and recognizable
|
||
one-dimenstional subtypes of ARRAY is upto 70% faster when the coercion is
|
||
actually needed.
|
||
* optimization: TRUNCATE on known single- and double-floats is upto 25%
|
||
faster.
|
||
* optimization: division of floating point numbers by constants uses
|
||
multiplication by reciprocal when an exact reciprocal exists.
|
||
* optimization: multiplication of single- and double-floats floats by
|
||
constant two has been optimized.
|
||
* optimization: ARRAY-IN-BOUNDS-P is resolved at compile-time when
|
||
sufficient type information is available. (thanks to Leslie Polzer)
|
||
* optimization: SLOT-VALUE and (SETF SLOT-VALUE) with constant slot names on
|
||
known structure objects are as efficient as defstruct generated accessors.
|
||
* optimization: unused vector creation can now be optimized away.
|
||
* improvement: ASDF systems can now depends on SB-INTROSPECT.
|
||
* improvement: a STYLE-WARNING is signalled when a generic function
|
||
clobbers an earlier FTYPE proclamation.
|
||
* improvement: the compiler is able to track the effective type of
|
||
generic function across method addition and removal even in the
|
||
absence of an explicit DEFGENERIC.
|
||
* improvement: DESCRIBE now reports on symbols naming undefined
|
||
but assumed or declared function as well.
|
||
* improvement: recompilation of systems using SB-GROVEL now works
|
||
(thanks to Leslie Polzer)
|
||
* improvements to SB-CLTL2 (thanks to Larry D'Anna):
|
||
** functions DECLARATION-INFORMATION, PARSE-MACRO, and ENCLOSE have been
|
||
documented.
|
||
** AUGMENT-ENVIRONMENT and DEFINE-DECLARATION have been implemented.
|
||
** DECLARATION-INFORMATION now supports declaration name DECLARATION as
|
||
well as user defined declaration names.
|
||
** VARIABLE-INFORMATION is now aware of alien variables.
|
||
* improvement: improved address space layout on OpenBSD (thanks to Josh
|
||
Elsasser)
|
||
* improvement: pretty-printing of various Lisp forms has been improved
|
||
(thanks to Tobias Rittweiler)
|
||
* bug fix: calls to DECODE-FLOAT and INTEGER-DECODE-FLOAT whose value was
|
||
unused were deleted in safe code. (reported by John Fremlin)
|
||
* bug fix: a failing AVER compiling certain MAKE-ARRAY forms. (reported
|
||
by James Wright)
|
||
* bug fix: some out-of-line array predicates were missing (reported by
|
||
Stelian Ionescu)
|
||
* bug fix: a failing AVER in CONVERT-MV-CALL has been fixed. (thanks to
|
||
Larry D'Anna)
|
||
* bug fix: a failing AVER in %ALLOCATE-CLOSURES conversion has been fixed
|
||
(thanks to Larry D'Anna)
|
||
* bug fix: SLEEP supports times over 100 million seconds on long on OpenBSD
|
||
as well. (reported by Josh Elsasser)
|
||
* bug fix: DELETE-FILE on streams no longer closes the stream with :ABORT T,
|
||
leading to possible attempts to delete the same file twice. See docstring
|
||
on DELETE-FILE for details. (reported by John Fremlin)
|
||
* bug fix: DELETE-FILE once again deletes the file named by the pathname
|
||
designator argument, rather than its truename. (reported by Luis
|
||
Oliveira)
|
||
* bug fix: the low-level debugger had 32-bit assumptions and was missing
|
||
information about some array types. (thanks to Luis Oliveira)
|
||
* bug fix: moderately complex combinations of inline expansions could
|
||
be miscompiled if the result was declared to be dynamic extent.
|
||
* bug fix: on x86, SAP-REF of sizes greater than 8 bits with offsets of the
|
||
form (+ <variable> <integer>) were miscompiled under certain
|
||
circumstances.
|
||
* bug fix: in some cases no compiler note about failure to stack allocate
|
||
was emitted, even if the objects were in fact heap allocated.
|
||
* bug fix: minor violation of "otherwise inaccessible" rule for stack
|
||
allocation could cause objects users might reasonably expect to
|
||
be heap allocated to be stack allocated.
|
||
* bug fix: DESCRIBE signalled an error for generic functions under
|
||
certain circumstances. (thanks to Leslie Polzer)
|
||
* bug fix: Fixed spelling of an error message.
|
||
|
||
changes in sbcl-1.0.30 relative to sbcl-1.0.29:
|
||
* minor incompatible change: SB-THREAD:JOIN-THREAD-ERROR-THREAD and
|
||
SB-THREAD:INTERRUPT-THREAD-ERROR-THREAD have been deprecated in favor
|
||
of SB-THREAD:THREAD-ERROR-THREAD.
|
||
* new contrib module: SB-QUEUE provides thread-safe lockless FIFO queues.
|
||
* new feature: docstrings for local and anonymous functions are no longer
|
||
discarded. (thanks to Leslie Polzer)
|
||
* new feature: SB-THREAD:SYMBOL-VALUE-IN-THREAD provides access to symbol
|
||
values in other threads.
|
||
* new feature: SB-INTROSPECT:ALLOCATION-INFORMATION provides information
|
||
about object allocation.
|
||
* optimization: division of a real float by a complex float is implemented
|
||
with a specialised code sequence.
|
||
* optimization: MAKE-INSTANCE with non-constant class-argument but constant
|
||
keywords is an order of magnitude faster.
|
||
* optimization: MAKE-INSTANCE with constant keyword arguments is x2-4 faster
|
||
in the presence of :AROUND or non-standard primary INITIALIZE-INSTANCE
|
||
methods, and similarly for non-standard metaclass classes as long as there
|
||
are no methods additional on MAKE-INSTANCE.
|
||
* optimization: more efficient type-checks for FIXNUMs when the value
|
||
is known to be a signed word on x86 and x86-64.
|
||
* optimization: compiler now optimizes (EXPT -1 INTEGER), (EXPT -1.0 INTEGER),
|
||
and (EXPT -1.0d0 INTEGER) into an ODDP test. (thanks to Stas Boukarev and
|
||
Paul Khuong)
|
||
* optimization: compiler is smarter about delegating argument type checks to
|
||
callees.
|
||
* optimization: several character functions are now compiled somewhat more
|
||
efficiently. (reported by Lynn Quam)
|
||
* optimization: the compiler now derives simple types for LOAD-VALUE-FORMs.
|
||
* improvement: less unsafe constant folding in floating point arithmetic,
|
||
especially for mixed complex/real -float operations.
|
||
* optimization: constant double and single floats are stored in native
|
||
unboxed format on x86[-64].
|
||
* optimization: smarter code for arithmetic operations with constant floats,
|
||
complex floats, or integers on x86[-64].
|
||
* optimization: smarter code for conjugate/multiplication of float complexes
|
||
and abs/negate of floats on x86-64.
|
||
* optimization: more efficient complex float and real float operations on
|
||
x86-64.
|
||
* improvement: complex float division is slightly more stable.
|
||
* improvement: DESCRIBE output has been reworked to be easier to read and
|
||
contains more pertinent information.
|
||
* improvement: failure to provide requested stack allocation compiler notes
|
||
provided in all cases (requested stack allocation not happening without a
|
||
note being issued is now considered a bug.)
|
||
* bug fix: SB-POSIX exports the documented types and functions
|
||
FILE-DESCRIPTOR and FILENAME, and also the corresponding -DESCRIPTOR
|
||
types. (reported by "abhi")
|
||
* bug fix: on 64 bit platforms FILL worked incorrectly on arrays with
|
||
upgraded element type (COMPLEX SINGLE-FLOAT), regression from 1.0.28.55.
|
||
(thanks to Paul Khuong)
|
||
* bug fix: looping around HANDLER-CASE could silently consume stack space
|
||
on each iteration. (reported by "foobar")
|
||
* bug fix: better error signalling when calls to functions seeking elements
|
||
from lists (eg. ADJOIN) are compiled with both :TEST and :TEST-NOT.
|
||
(reported by Tobias Rittweiler)
|
||
* bug fix: regressions in DIRECTORY from 1.0.28.61: pattern matching of
|
||
directory components now works as it used to. (various prolems reported by
|
||
Michael Becker, Gabriel Dos Reis, Cyrus Harmon, and Harald Hanche-Olsen)
|
||
* bug fix: :PTY option in RUN-PROGRAM was broken with stream arguments.
|
||
(reported by Elliot Slaughter, thanks to Stas Boukarev)
|
||
* bug fix: bogus undefined variable warnings from fopcompiled references to
|
||
global variables. (thanks to Lars Rune Nøstdal)
|
||
* bug fix: foreign function names should now appear in backtraces on
|
||
FC6 as well. (reported by Tomasz Skutnik and Tobias Rautenkranz)
|
||
* bug fix: SETF compiler macro documentation strings are not discarded
|
||
anymore.
|
||
* bug fix: GENTEMP is now unaffected by pretty printer dispatch table.
|
||
(thanks to Alex Plotnick)
|
||
* bug fix: SLEEP accepts large integer arguments, truncating them to
|
||
SIGNED-WORD on the assumption that sleeping for 68 years is sufficient
|
||
for anyone. (reported by Leslie Polzer, thanks to Stas Boukarev)
|
||
* bug fix: compiler notes for expensive slot type checks could be emitted
|
||
at runtime MAKE-INSTANCE calls. (reported by Samium Gromoff)
|
||
|
||
changes in sbcl-1.0.29 relative to 1.0.28:
|
||
* IMPORTANT: bug database has moved from the BUGS file to Launchpad
|
||
https://bugs.launchpad.net/sbcl
|
||
Bugs can be reported directly there, or by sending email to
|
||
sbcl-bugs@lists.sourceforge.net
|
||
(no subscription required.)
|
||
* minor incompatible change: under weak type checking policy integer
|
||
types are weakened less aggressively.
|
||
* minor incompatible change: SAVE-LISP-AND-DIE :TOPLEVEL function is now
|
||
allowed to return, which causes SBCL to quit with exit status 0. Previously
|
||
if the function returned with a small integer return value, that value
|
||
was accidentally reused as the exit status.
|
||
* new feature: SB-EXT:DEFINE-HASH-TABLE-TEST allows defining new arguments
|
||
to MAKE-HASH-TABLE :TEST, and MAKE-HASH-TABLE has been extended with
|
||
:HASH-FUNCTION argument. Refer to user manual for details.
|
||
* new feature: SB-EXT:DEFGLOBAL macro allows defining global non-special
|
||
variables.
|
||
* new feature: SB-EXT:GET-TIME-OF-DAY provides access to seconds and
|
||
microseconds since the Unix epoch on all platforms.
|
||
* new feature: SB-EXT:ALWAYS-BOUND proclamation inhibits MAKUNBOUND, and
|
||
allows the compiler to safely elide boundedness checks for special
|
||
variables.
|
||
* new feature: SB-EXT:GLOBAL proclamation inhibits SPECIAL proclamations for
|
||
the symbol, prohibits both lexical and dynamic binding. This is mainly an
|
||
efficiency measure for threaded platforms, but also valueable in
|
||
expressing intent.
|
||
* new feature: UNC pathnames are now understood by the system on Windows.
|
||
* optimization: the compiler uses a specialized version of FILL when the
|
||
element type is know in more cases, making eg. (UNSIGNED-BYTE 8) case
|
||
almost 90% faster.
|
||
* optimization: accesses to potentially non-simple arrays where element type
|
||
is known are 50% faster.
|
||
* optimization: compiler now generates faster array typechecking code.
|
||
* optimization: ARRAY-DIMENSION is now faster for multidimensional and
|
||
non-simple arrays.
|
||
* optimization: multidimensional array accesses in the absence of type
|
||
information regarding array rank are approximately 10% faster due to
|
||
open coding of ARRAY-RANK.
|
||
* optimization: result of (FILL (MAKE-ARRAY ...) ...) and (REPLACE
|
||
(MAKE-ARRAY ...) ...) can be stack allocated if the result of MAKE-ARRAY
|
||
form can be.
|
||
* optimization: result of call to VECTOR can now be stack allocated.
|
||
* optimization: MAKE-ARRAY with :INITIAL-CONTENTS is now vastly faster
|
||
as long as the resulting array is one-dimensional and has a known
|
||
element type. In particular, :INITIAL-CONTENTS (LIST ...) where the
|
||
length of the list matches the known length of the vector does not
|
||
allocate the list as an intermediate step. Ditto for VECTOR and simple
|
||
backquoted forms.
|
||
* optimization: MAKE-ARRAY can now stack allocate in the presence of
|
||
:INITIAL-CONTENTS and :INITIAL-ELEMENT as long as the result has a
|
||
known element type, and is known to be simple and one dimensional.
|
||
* improvement: SBCL now emits a compiler note where stack allocation was
|
||
requested but could not be provided (not in all cases, unfortunately)
|
||
* improvement: better MACHINE-VERSION responses. (thanks to Josh Elsasser)
|
||
* improvement: pretty-printing loop has been implemented properly. (thanks
|
||
to Tobias Rittweiler)
|
||
* documentation: CLOS slot typechecing policy has been documented.
|
||
* bug fix: FILE-AUTHOR no longer signals an error on Windows.
|
||
* bug fix: SB-SPROF could be foiled by foreign code not have a frame
|
||
pointer, leading to memory faults. (thanks to Bart Botta)
|
||
* bug fix: better floating point exception handling on x86/OpenBSD.
|
||
(thanks to Josh Elsasser)
|
||
* bug fix: exit status from QUIT when called under --script was lost
|
||
(reported by Hubert Kauker)
|
||
* bug fix: MAKE-ARRAY for non-zero :INITIAL-ELEMENT always used the
|
||
same implementation of FILL to initialize the array, even if a more
|
||
efficient one was available (reported by Stas Boukarev, thanks to
|
||
Paul Khuong)
|
||
* bug fix: potential miscompilation of array stack allocation on x86 and
|
||
x86-64. (reported by Time Tossavainen)
|
||
* bug fix: some forms of AND, OR, and COND resulted in expansions that could
|
||
result in their subforms being treated as top level forms. (reported by
|
||
James Knight)
|
||
* bug fix: On x86/x86-64 alien functions declared to return integers shorter
|
||
than a machine register could leave garbage in the high bits of the
|
||
result register (bug 316325).
|
||
* bug fix: disable address space randomization Linux/x86-64 as well,
|
||
not just x86-64. (reported by Ken Olum)
|
||
* bug fix: Attempting to DEREF an (ALIEN (* T)) would produce a WARNING and
|
||
generate incorrect code.
|
||
* bug fix: #201; type inference for CONS and ARRAY types could derive
|
||
wrong results in the presence of eg. RPLACA or ADJUST-ARRAY.
|
||
* bug fix: special variables with a proclaimed specific subtype of FUNCTION
|
||
could not be assigned to or bound with PROGV. (reported by Lorenz
|
||
Mösenlechner)
|
||
* bug fix: the value of CL:- in the inspector was the previous expression
|
||
evaluated rather than the expression being evaluated.
|
||
* bug fix: constants can no longer be locally declared special.
|
||
* bug fix: signals delivered to threads started from foreign land (read:
|
||
directly by pthread_create, not by MAKE-THREAD) are redirected to a Lisp
|
||
thread by blocking all signals and resignalling.
|
||
* bug fix: SHARED-INITIALIZE initialized unbound :ALLOCATION :CLASS slots
|
||
from :INITFORM, if any.
|
||
|
||
changes in sbcl-1.0.28 relative to 1.0.27:
|
||
* a number of bugs in cross-compilation have been fixed, with the ultimate
|
||
result that building under (at least) clisp should be much more reliable.
|
||
* minor incompatible changes: echo-streams now propagate unread-char to the
|
||
underlying input stream, and no longer permit unreading more than one
|
||
character.
|
||
* improvement: on x86/x86-64 Lisp call frames now have the same layout as C
|
||
frames, allowing for instance more reliable backtraces.
|
||
* improvement: the debugger REPL can now reference lexical variables
|
||
by name directly for code compiled with (DEBUG 3).
|
||
* improvement: errors from malformed declarations now have better source
|
||
paths associated with them. (thanks to Tobias Rittweiler)
|
||
* optimization: faster local calls on x86/x86-64
|
||
* bug fix: some error messages for out-of-bound array indexes confused the
|
||
index and the bound. (thanks to Stas Boukarev)
|
||
* bug fix: pretty printing malformed DEFPACKAGE forms (thanks to Sidney
|
||
Markowitz)
|
||
* bug fix: running regressions tests in shells without OSTYPE set now works.
|
||
(reported by Harald Hanche-Olsen)
|
||
* bug fix: more robust static space exhaustion signalling from
|
||
MAKE-STATIC-VECTOR (thanks to Daniel Lowe)
|
||
* bug fix: (SETF DOCUMENTATION) for anonymous function now throws the
|
||
docstring away instead of storing it under names such as (LAMBDA (X)).
|
||
(reported by Leslie Polzer)
|
||
* bug fix: timers could go off in the wrong order, be delayed indefinitely
|
||
(thanks to Ole Arndt for the patch)
|
||
* bug fix: RESTART-FRAME and RETURN-FROM-FRAME stack corruption
|
||
* bug fix: the discriminating function for PRINT-OBJECT no longer preserves
|
||
potentially-invalid effective methods in its cache.
|
||
* bug fix: SB-INTROSPECT:FIND-DEFINITION-SOURCE now works with funcallable
|
||
instances as well (thanks to Paul Khuong)
|
||
* bug fix: using RUN-PROGRAM does not interfere with SB-POSIX:WAIT,
|
||
SB-POSIX:WAITPID and their C equivalents.
|
||
* bug fix: RUN-PROGRAM does not crash on Darwin when stressed.
|
||
|
||
changes in sbcl-1.0.27 relative to 1.0.26:
|
||
* new port: support added for x86-64 OpenBSD. (thanks to Josh Elsasser)
|
||
* new port: support added for x86-64 Solaris. (thanks to Alex Viskovatoff)
|
||
* improvement: the system either recovers from stack exhaustion or dies
|
||
properly as opposed to leaving the user uncertain of whether the handler
|
||
trampled on some random memory next to the stack or having to rely on
|
||
--lose-on-corruption (which is still a good idea to use in production
|
||
because stack exhaustion can happen in signal handlers which will likely
|
||
lead to hangs.)
|
||
* bug fix: fix gc related interrupt handling bug on ppc (regression from
|
||
1.0.25.37, reported by Harald Hanche-Olsen)
|
||
* bug fix: work around signal delivery bug in darwin (regression from
|
||
1.0.25.44, reported by Sidney Markowitz)
|
||
* bug fix: fix ERROR leaking memory (reported by David Thompson)
|
||
|
||
changes in sbcl-1.0.26 relative to 1.0.25:
|
||
* incompatible change: an interruption (be it a function passed to
|
||
INTERRUPT-THREAD or a timer function) runs in an environment where
|
||
interrupts can be enabled. The interruption can use
|
||
WITH-INTERRUPTS or WITHOUT-INTERRUPTS as it sees fit. Use
|
||
WITHOUT-INTERRUPTS to avoid nesting of interruptions and
|
||
potentially running out of stack. Keep in mind that in the absence
|
||
of WITHOUT-INTERRUPTS some potentially blocking operation such as
|
||
acquiring a lock can enable interrupts.
|
||
* incompatible change: GC-OFF and GC-ON are removed, as they were
|
||
always unsafe. Use WITHOUT-GCING instead.
|
||
* new feature: runtime option --disable-ldb
|
||
* new feature: runtime option --lose-on-corruption to die at the
|
||
slightest hint of possibly non-recoverable errors: running out of
|
||
memory, stack, alien stack, binding stack, encountering a memory
|
||
fault, etc. In the absence of --lose-on-corruption a warning is
|
||
printed to stderr.
|
||
* enhancement: detect binding stack exhaustion
|
||
* enhancement: detect alien stack exhaustion on x86/x86-64
|
||
* improvement: generally more stable and reliable interrupt handling
|
||
* improvement: there is a per thread interruption queue,
|
||
interruptions are executed in order of arrival
|
||
* improvement: a repeating timer reschedules itself when the it has
|
||
finished, but expiration times are spaced equally. If an
|
||
expiration time is in the past it will trigger after a short grace
|
||
period that may give a chance to other things to run.
|
||
* optimization: slightly faster gc on multithreaded builds
|
||
* optimization: faster WITHOUT-GCING
|
||
* bug fix: when JOIN-THREAD signals an error, do it when not holding
|
||
important locks so that the debugger/handler doesn't produce
|
||
recursive errors or deadlock.
|
||
* bug fix: real-time signals are not used anymore, so no more
|
||
hanging when the system wide real-time signal queue gets full.
|
||
* bug fix: INTERRUPT-THREAD on a dying thread could produce memory
|
||
fault.
|
||
* bug fix: finalizers, gc hooks never run in a WITHOUT-INTERRUPTS
|
||
* bug fix: fix random memory faults related to interrupts on alpha
|
||
* bug fix: fix random memory faults related to interrupts on sparc
|
||
* bug fix: fix deadlocks related to starting threads
|
||
* bug fix: fix deadlines on locks on futex platforms
|
||
* bug fix: restore errno in signal handlers
|
||
* bug fix: fix deadlocks related to hash tables
|
||
* bug fix: fix deadlocks in pcl
|
||
|
||
changes in sbcl-1.0.25 relative to 1.0.24:
|
||
* incompatible change: SB-INTROSPECT:FUNCTION-ARGLIST is deprecated, to be
|
||
removed later. Please use SB-INTROSPECT:FUNCTION-LAMBDA-LIST instead.
|
||
* new feature: SB-INTROSPECT:DEFTYPE-LAMBDA-LIST allows retrieval of
|
||
DEFTYPE lambda lists. (thanks to Tobias Rittweiler)
|
||
* enhancement: MUTEX-VALUE is to be superseded by MUTEX-OWNER that has a
|
||
better name and does not return values so stale on multiprocessor systems.
|
||
Also, HOLDING-MUTEX-P was added for about the only sane usage of
|
||
MUTEX-OWNER.
|
||
* improvement: unithread builds keep track of MUTEX-VALUE.
|
||
* improvement: reading from a TWO-WAY-STREAM does not touch the output
|
||
stream anymore making it thread safe to have a concurrent reader and
|
||
a writer, for instance, in a pipe.
|
||
* improvement: GET-SETF-EXPANDER avoids adding bindings for constant
|
||
arguments, making compiler-macros for SETF-functions able to inspect
|
||
their constant arguments.
|
||
* improvement: COMPILE-FILE reports times with millisecond accuracy
|
||
(thanks to Luis Oliveira)
|
||
* optimization: CHAR-CODE type derivation has been improved, making
|
||
TYPEP elimination on subtypes of CHARACTER work better. (reported
|
||
by Tobias Rittweiler, patch by Paul Khuong)
|
||
* bug fix: setting alien structure fields of type struct by value now
|
||
computes the right offset for the memory copy.
|
||
* bug fix: compilation problem involving inlined calls to aliens with
|
||
result type VOID. (reported by Ken Olum)
|
||
* bug fix: #235a; sequential inline expasion in different policies no
|
||
longer reuses the functional from the previous expansion site.
|
||
* bug fix: DEFTYPE no longer breaks on bodies consisting of a single
|
||
unquoted symbol. Regression from 1.0.22.8. (reported by Ariel Badichi)
|
||
* bug fix: named ENUMs in multiply-referenced alien record types no longer
|
||
cause an implied type redefinition. Regression from 1.0.21.29.
|
||
* bug fix: sign-extension of small signed return values now works with C
|
||
code compiled with gcc 4.3 or newer. (reported by Liam Healy)
|
||
* improvements to the Windows port:
|
||
** SB-BSD-SOCKETS now works from saved cores as well. (reported by Stephen
|
||
Westfold, thanks to Rudi Schlatte)
|
||
|
||
changes in sbcl-1.0.24 relative to 1.0.23:
|
||
* new feature: ARRAY-STORAGE-VECTOR provides access to the underlying data
|
||
vector of a multidimensional SIMPLE-ARRAY.
|
||
* new feature: the system now signals a continuable error if standard
|
||
readtable modification is attempted. (thanks to Tobias Rittweiler)
|
||
* new feature: DIRECTORY has been extended with a non-standard keyword
|
||
argument :RESOLVE-SYMLINKS. (thanks to TC-Rucho)
|
||
* enhancement: SB-BSD-SOCKETS:MAKE-SOCKET-STREAM keyword argument handling
|
||
has been robustified and documented better. (thanks to Robert Goldman)
|
||
* optimization: faster generic arithmetic dispatch on x86 and x86-64.
|
||
* optimization: FORMAT ~D and ~F are now approximately 5% faster.
|
||
* tradeoff: constant FORMAT control strings are now compiled unless
|
||
SPACE > SPEED (previously only when SPEED > SPACE.)
|
||
* bug fix: Red Hat Enterprise 3 mmap randomization workaround. (thanks
|
||
to Thomas Burdick)
|
||
* bug fix: DEFCLASS and ENSURE-CLASS-USING-CLASS are now expected to
|
||
be thread safe.
|
||
* bug fix: lexical type declarations are now correctly reported by
|
||
SB-CLTL2. (reported by Larry D'Anna)
|
||
* bug fix: STRING-TO-OCTETS did not handle :START properly when
|
||
using UTF-8 as external format. (thanks to Luis Oliveira)
|
||
* bug fix: errors from invalid fill-pointer values to (SETF FILL-POINTER)
|
||
are signalled correctly. (thanks to Stas Boukarev)
|
||
* bug fix: SET-MACRO-CHARACTER accepts NIL as the readtable
|
||
designator. (thanks to Tobias Rittweiler)
|
||
* bug fix: SET-DISPATCH-MACRO-CHARACTER accepts NIL as the readtable
|
||
designator, and returns T instead of the function. (thanks to
|
||
Tobias Rittweiler)
|
||
* bug fix: direct superclasses of STANDARD-CLASS and
|
||
FUNCALLABLE-STANDARD-CLASS now default to STANDARD-OBJECT and
|
||
FUNCALLABLE-STANDARD-OBJECT as required by AMOP.
|
||
* bug fix: compiling a call to SLOT-VALUE with a constant slot-name
|
||
when no class with the named slot yet exists no longer causes a
|
||
compile-time style-warning.
|
||
* bug fix: :ALLOCATION :CLASS slots are type-checked properly
|
||
in safe code. (reported by Didier Verna)
|
||
* bug fix: #430; nested structure constructors can stack allocate.
|
||
* bug fix: on some 64-bit platforms dynamic space size was truncated
|
||
to #xffff0000 bytes. (reported by Benjamin Lambert)
|
||
* bug fix: setting *READ-SUPPRESS* to T no longer renders the default
|
||
REPL unusable. (reported by Daniel Herring)
|
||
* bug fix: return values of READ-SEQUENCE did not take :START into
|
||
account on file streams, regressions since 1.0.12.22. (reported by
|
||
Thomas Russ, patch by Paul Khuong)
|
||
* bug fix: using SET or (SETF SYMBOL-VALUE) to change the value of a
|
||
method specializer used to confuse permuation vector optimization.
|
||
* bug fix: system inserted bogus implicit type declarations for local
|
||
special variables in DEFMETHOD bodies.
|
||
* bug fix: #354; duplicated frames in backtraces due to
|
||
non-tail-call-optimized XEPs to functions with return type NIL
|
||
have been elimited.
|
||
* bug fix: #357; MAKE-INSTANCE/SHARED-INITIALIZE now
|
||
initializes structure object slots according to DEFSTRUCT initforms,
|
||
and DEFSTRUCT forms :INCLUDEind structure classes defined using
|
||
DEFCLASS :METACLASS STRUCTURE-CLASS now inherit their initforms.
|
||
(reported by Bruno Haible and Stephen Wilson)
|
||
* bug fix: #395; fill-pointer output streams used now support
|
||
element-type BASE-CHAR as well.
|
||
* bug fix: compiler error when attempting to derive return value of
|
||
ARRAY-ELEMENT-TYPE when the array type was a union of intersection
|
||
types.
|
||
* bug fix: address-spaces overlapped on OpenBSD. (thanks to Josh
|
||
Elsasser)
|
||
* bug fix: Mac OS X binaries should now be portable between Leopard
|
||
and Tiger.
|
||
|
||
changes in sbcl-1.0.23 relative to 1.0.22:
|
||
* enhancement: when disassembling method functions, disassembly
|
||
for the associated fast function is also produced.
|
||
* enhancement: system stores DEFTYPE lambda-lists, so DESCRIBE can
|
||
report them.
|
||
* optimization: printing with *PRINT-PRETTY* true is now more
|
||
efficient as long as the object being printed doesn't require
|
||
special handling by the pretty printer.
|
||
* bug fix: slot symbol-macros from WITH-SLOTS inside DEFMETHOD bodies
|
||
now interact correctly with type declarations.
|
||
* partial bug fix: PCL detects infinite recursion during wrapper
|
||
validation. (thanks to Attila Lendvai)
|
||
* bug fix: #426; nested function calls are inlined properly.
|
||
Previously if FOO was an inline function, in calls of the form
|
||
(FOO (FOO ...)) the outer call was not inlined.
|
||
* bug fix: long long arguments passed in registers to alien
|
||
functions on PowerPC Linux and NetBSD are now handled correctly
|
||
when preceded by SYSTEM-AREA-POINTERs. (reported by Josh Elsasser)
|
||
|
||
changes in sbcl-1.0.22 relative to 1.0.21:
|
||
* minor incompatible change: LOAD-SHARED-OBJECT no longer by default looks
|
||
for the shared object in the current directory, but passes the native
|
||
namestring of the designated pathname to the operation system's shared
|
||
object loading function as-it.
|
||
* minor incompatible change: --disable-debugger toplevel option now takes
|
||
effect before processing of initialization files and --eval or --load
|
||
options.
|
||
* new feature: new commandline argument: --script, which supports
|
||
shebang lines. See documentation for details. (based on work by
|
||
Kevin Reid)
|
||
* new feature: SAVE-LISP-AND-DIE can save current values of
|
||
--dynamic-space-size and --control-stack-size in the executable core,
|
||
causing it to skip normal runtime option processing. See documentation
|
||
for details. (thanks to Zach Beane)
|
||
* enhancement: inoccous calls to EVAL or generic functions dispatching
|
||
on subclasses of eg. STREAM no longer cause compiler notes to appear.
|
||
* enhancement: the system no longer resignals errors from --load and
|
||
--eval toplevel arguments as SIMPLE-ERRORS, which caused restarts
|
||
associated with the original error to be lost. (thanks to Ariel
|
||
Badichi)
|
||
* enhancement: :DONT-SAVE keyword argument has been added to
|
||
LOAD-SHARED-OBJECT for controlling interaction with
|
||
SAVE-LISP-AND-DIE, and UNLOAD-SHARED-OBJECT can be used to undo
|
||
the effects of an earlier LOAD-SHARED-OBJECT call.
|
||
* bug fix: ADJUST-ARRAY on multidimensional arrays used bogusly give
|
||
them a fill pointer unless :DISPLACED-TO or :INITIAL-CONTENTS were
|
||
provided. (reported by Cedric St-Jean)
|
||
* bug fix: circularity handling in the reader did not treat raw
|
||
structure slots correctly. (reported by Cedric St-Jean)
|
||
* bug fix: SERVE-EVENT occasionally signaled an error about bogus
|
||
file descriptors when there were none.
|
||
* bug fix: DEFINE-COMPILER-MACRO support of destructuring lambda-lists
|
||
was broken. (reporteed by Willem Broekema)
|
||
* bug fix: SB-EXT:NATIVE-NAMESTRING on Windows did not work on
|
||
pathnames without a directory.
|
||
* bug fix: COMPILE-FILE did not warn about undefined variable
|
||
references at toplevel, and LOAD of the resulting fasl did
|
||
not signal an error.
|
||
* bug fix: functions with non-required arguments used to end up with
|
||
(SB-C::&OPTIONAL-DISPATCH ...) as their name.
|
||
* bug fix: redefining a function with non-required arguments didn't
|
||
update the system's knowledge about its call signature properly.
|
||
* bug fix: fixed #431; incompatible alien record type redefinitions
|
||
are detected and handled. (reported by Neil Haven)
|
||
* bug fix: using RESTRICT-COMPILER-POLICY with DEBUG 3 could cause
|
||
PROGV miscompilation. (reported by Matthias Benkard, patch by Juho
|
||
Snellman)
|
||
* bug fix: on x86 and x86-64 backtraces were sometimes truncated
|
||
after alien stack frames.
|
||
* bug fix: strings passed to mk{s,d}temp lacked null termination
|
||
|
||
changes in sbcl-1.0.21 relative to 1.0.20:
|
||
* new feature: the compiler is able to track the effective type of a
|
||
generic function across method addition and removal.
|
||
* new feature: SB-EXT:ATOMIC-INCF allows atomic incrementation of
|
||
appropriately typed structure slots without locking.
|
||
* new feature: SB-EXT:CALL-WITH-TIMING provides access to timing
|
||
information like those gathered by TIME using a programming-friendly
|
||
interface.
|
||
* new feature: TIME reports time taken even if the form performs a
|
||
non-local transfer of control.
|
||
* enhancement: reduced conservativism on GENCGC platforms: on
|
||
average 45% less pages pinned (measured from SBCL self build).
|
||
* bug fix: SB-EXT:COMPARE-AND-SWAP on SYMBOL-VALUE can no longer
|
||
mutate constant symbols or violate declaimed type of the symbol.
|
||
* bug fix: SB-THREAD:SIGNAL-SEMAPHORE could fail to wakeup threads
|
||
sleeping on the semaphore in heavily contested semaphores.
|
||
* bug fix: semaphores and condition variables were not interrupt
|
||
safe.
|
||
* bug fix: SB-THREAD:CONDITION-WAIT doesn't allow waits on mutexes
|
||
owned by other threads anymore.
|
||
* bug fix: FIND on lists called KEY outside the specified
|
||
subsequence. (reported by budden)
|
||
* bug fix: LOG doesn't use single-float intermediate results when
|
||
given mixed integer and double-float arguments, leading to better
|
||
precision. (reported by Bob Felts)
|
||
* bug fix: LOG with base zero returned values of inconsistent type.
|
||
|
||
changes in sbcl-1.0.20 relative to 1.0.19:
|
||
* minor incompatible change: OPTIMIZE qualities
|
||
SB-C::STACK-ALLOCATE-DYNAMIC-EXTENT, SB-C::STACK-ALLOCATE-VECTOR,
|
||
and SB-C::STACK-ALLOCATE-VALUE-CELLS no longer exist. See documentation
|
||
and SB-EXT:*STACK-ALLOCATE-DYNAMIC-EXTENT* for details.
|
||
* documentation: some slot access efficiency guidelines have been
|
||
added to the user manual.
|
||
* optimization: ASSOC-IF, ASSOC-IF-NOT, MEMBER-IF, MEMBER-IF-NOT,
|
||
RASSOC, RASSOC-IF, and RASSOC-IF-NOT are now equally efficient
|
||
as ASSOC and MEMEBER.
|
||
* optimization: calls to ASSOC, MEMBER, and RASSOC can be transformed
|
||
to more efficient EQ-comparison versions more often.
|
||
* optimization: enhanced derivation of DOLIST iteration variable type
|
||
for constant lists.
|
||
* optimization: constant folding of simple (LIST ...) forms as DOLIST
|
||
arguments.
|
||
* optimization: runtime lookup of function definitions can be
|
||
elided in more cases, eg: (let ((x 'foo)) (funcall foo)).
|
||
* optimization: compiler is able to derive the return type of
|
||
(AREF (THE STRING X) Y) as being CHARACTER.
|
||
* optimization: CLRHASH on empty hash-tables no longer does pointless
|
||
work. (thanks to Alec Berryman)
|
||
* optimization: REPLACE deftransforms don't punt when :START1 or
|
||
:START2 is given
|
||
* bug fix: compiling DESTRUCTURING-BIND on constant list arguments
|
||
no longer emits a code deletion note. (reported by Andrew
|
||
Gasparovic)
|
||
* bug fix: bogus odd-number-of-keywords STYLE-WARNINGs from calls to
|
||
functions with an odd number of &OPTIONAL arguments, a &REST
|
||
argument, and one or more &KEY arguments at the call site.
|
||
* bug fix: STYLE-WARNINGs for functions with both &OPTIONAL and &KEY
|
||
arguments appeared at call sites as well.
|
||
* bug fix: fixed #425; CLOSE drops input buffers from streams, so
|
||
READ-LINE &co can no longer read from them afterwards. (reported
|
||
by Damien Cassou)
|
||
* bug fix: fixed #427: unused local aliens no longer cause compiler
|
||
breakage. (reported by Stelian Ionescu, Andy Hefner and Stanislaw
|
||
Halik)
|
||
* bug fix: non-local exit from a WITH-ALIEN form no longer causes
|
||
alien-stack leakage. (reported by Andy Hefner)
|
||
* bug fix: PROGV signals an error when an attempt to violate declared
|
||
type of a variable or bind a constant is made.
|
||
* bug fix: SET signals an error when an attempt to violate declared
|
||
type of a variable is made.
|
||
* bug fix: restart computation during the execution of a restart
|
||
test function no longer causes infinite recursion. (reported by
|
||
Michael Weber)
|
||
* bug fix: calling SB-COVER:REPORT with a non-directory pathname now
|
||
signals an error. (thanks to Pierre Mai)
|
||
* bug fix: EXPORT left symbol unexported in conflict situations.
|
||
(thanks to Michael Weber)
|
||
* bug fix: correctly handle name conflicts involving CL:NIL.
|
||
(thanks to Michael Weber)
|
||
* bug fix: RESOLVE-CONFLICT restart for name conflicts handles
|
||
conflicts arising from USEing package with conflicting symbols
|
||
correctly. (thanks to Michael Weber)
|
||
|
||
changes in sbcl-1.0.19 relative to 1.0.18:
|
||
* new feature: user-customizable variable SB-EXT:*MUFFLED-WARNINGS*;
|
||
warnings that go otherwise unhandled will be muffled if they are
|
||
of the type that's the value of this variable.
|
||
* optimization: stack allocation is slightly more efficient on x86
|
||
and x86-64.
|
||
* bug fix: DEFSTRUCT forms with user-specified :CONSTRUCTOR options,
|
||
where a raw slot always is initialized using the initform whose
|
||
type is not know sufficiently well a compile-time are now compiled
|
||
correctly. (reported by John Morrison)
|
||
* bug fix: compiler no longer makes erronous assumptions in the
|
||
presence of non-foldable SATISFIES types.
|
||
* bug fix: stack analysis missed cleanups of dynamic-extent
|
||
arguments in non-let-converted calls to local functions.
|
||
* improvements to the Windows port:
|
||
** adjusted address spaces for building on both Win32 and
|
||
Win64. (thanks for John Connors)
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** interval arithmetic during type derivation used inexact integer
|
||
to single-float coercions.
|
||
** arithmetic operations involving large integers and single
|
||
floats give the same results in compiled and interpreted code.
|
||
** deriving the result type of COERCE no longer signals an error
|
||
if the derived type of the second argument is a MEMBER type
|
||
containing invalid type specifiers.
|
||
** ADJOIN with constant NIL as second argument works correctly.
|
||
** FUNCTION-KEYWORDS was called SB-PCL::FUNCTION-KEYWORD-PARAMETERS.
|
||
|
||
changes in sbcl-1.0.18 relative to 1.0.17:
|
||
* minor incompatible change: SB-SPROF:WITH-PROFILING now by default
|
||
profiles only the current thread.
|
||
* minor incompatible change: changes to SYMBOL-VALUE of constants
|
||
defined with DEFCONSTANT now signal an error.
|
||
* enhancement: SB-SPROF now has support for wallclock profiling,
|
||
and is also able to profile specific threads. REPORT output
|
||
has also additional sorting options.
|
||
* enhancement: better pretty-printing of DEFPACKAGE forms. (Thanks
|
||
to Michael Weber)
|
||
* optimization: structure allocation has been improved
|
||
** constructors created by non-toplevel DEFSTRUCTs are ~40% faster.
|
||
** out of line constructors are ~10% faster.
|
||
** inline constructors are ~15% faster.
|
||
** inline constructors are capable of dynamic extent allocation
|
||
(generally on x86 and x86-64, in some cases on other platforms
|
||
as well.)
|
||
* optimization: simple uses of HANDLER-CASE and HANDLER-BIND no
|
||
longer cons.
|
||
* optimization: file compiler is now able to coalesce non-circular
|
||
lists, non-base strings, and bit-vectors. Additionally, constants
|
||
are never referenced through SYMBOL-VALUE at runtime.
|
||
* optimization: code defining methods on PRINT-OBJECT (and other
|
||
generic functions in the COMMON-LISP package) now loads faster.
|
||
* bug fix: EAI_NODATA is deprecated since RFC 3493. Stop using it
|
||
in sb-bsd-sockets.
|
||
* bug fix: if COMPILE-FILE aborts due to an unwind, the partial
|
||
fasl is now deleted. (reported by Attila Lendvai)
|
||
* bug fix: READ-LINE always returned NIL for the last line in files.
|
||
(reported by Yoshinori Tahara)
|
||
* bug fix: more accurate disassembly annotations of foreign function
|
||
calls. (thanks to Andy Hefner)
|
||
* bug fix: trimming non-simple strings and non-string string
|
||
designators when the there is nothing to trim works properly.
|
||
(thanks to James Knight)
|
||
* new feature: SB-POSIX bindings for mlockall, munlockall, and setsid.
|
||
(thanks to Travis Cross)
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** NIL is a valid function name (regression at 1.0.13.38)
|
||
** FILL on lists was missing its return value (regression at 1.0.12.27)
|
||
** STRING-TRIM, STRING-LEFT-TRIM, and STRING-RIGHT-TRIM did not respect
|
||
fill pointers properly (regression at 1.0.12.23)
|
||
** STRING-TRIM, STRING-LEFT-TRIM, and STRING-RIGHT-TRIM did not respect
|
||
displacement indices properly (regression at 1.0.12.23)
|
||
|
||
changes in sbcl-1.0.17 relative to 1.0.16:
|
||
* temporary regression: user code can no longer allocate closure
|
||
variable storage on stack, due to bug 419 without explicitly
|
||
requesting it. Please consult sbcl-devel for advice if you need to
|
||
use this feature in the meanwhile.
|
||
* new feature: runtime argument --control-stack-size can be used to
|
||
adjust thread default control stack size.
|
||
* enhancement: improved TIME output
|
||
** all times are reported using the measured accuracy (milliseconds
|
||
for real and GC times, microseconds for everything else.)
|
||
** processor cycle counts on x86 and x86-64.
|
||
** interpreted forms are counted for both evaluator modes.
|
||
** number of lambdas converted by the compiler is reported.
|
||
** CPU percentage report (computed from real and total run time.)
|
||
** more comprehensive run time reporting, using a condenced format
|
||
** interperted form, lambda, and page fault counts are omitted
|
||
when zero.
|
||
* optimization: ADJOIN and PUSHNEW are upto ~70% faster in normal
|
||
SPEED policies.
|
||
* optimization: APPEND is upto ~10% faster in normal SPEED policies.
|
||
* optimization: two argument forms of LAST are upto ~10% faster
|
||
in normal SPEED policies.
|
||
* optimization: NCONC no longer needs to heap cons its &REST list
|
||
in normal SPEED policies.
|
||
* bug fix: SB-FLUID build feature no longer breaks the build. (thanks
|
||
to Sidney Markowitz)
|
||
* bug fix: UNION and NUNION work with :TEST-NOT once more,
|
||
regression since 1.0.9.1. (thanks to Eric Marsden)
|
||
* bug fix: result of MAKE-ARRAY can be stack allocated - regression
|
||
since 1.0.15.36. (thanks to Paul Khuong)
|
||
* bug fix: LAST when always returned the whole list when given a bignum
|
||
as the second argument.
|
||
* bug fix: dynamic extent allocation of nested lists and vectors
|
||
could leak to otherwise accessible parts.
|
||
* bug fix: invalid optimization of heap-allocated alien variable
|
||
reference.
|
||
* bug fix: fasl header checking is less vulnerable to different
|
||
platform word lengths.
|
||
* bug fix: more correct assembler syntax for GNU binutils
|
||
2.18.50.0.4 support. (thanks to Marijn Schouten)
|
||
* bug fix: fix ECASE warnings from CMUCL-as-xc-host. (reported by
|
||
Andreas Franke)
|
||
* bug fix: the fopcompiler can handle LOCALLY forms (with no
|
||
declarations) successfully. (reported by Attila Lendvai)
|
||
|
||
changes in sbcl-1.0.16 relative to 1.0.15:
|
||
* minor incompatible change: revert the changes to sb-posix's error
|
||
signaling added in 1.0.14.
|
||
* minor incompatible change: change PROBE-FILE back to returning
|
||
NIL whenever we can't get a truename, as was the case before 1.0.14.
|
||
* minor incompatible change: SB-BSD-SOCKETS:NAME-SERVICE-ERROR now
|
||
inherits from ERROR instead of just CONDITION.
|
||
* new feature: SB-INTROSPECT can provide source locations for instances
|
||
as well. (thanks to Tobias Rittweiler)
|
||
* optimization: binding special variables now generates smaller code
|
||
on threaded platforms.
|
||
* optimization: MEMBER and ASSOC are over 50% faster for :TEST #'EQ
|
||
and cases where no :TEST is given but the compiler can infer that
|
||
the element to search is of type (OR FIXNUM (NOT NUMBER)).
|
||
* optimization: better LOGNOT on fixnums.
|
||
* optimization: modular arithmetic for a particular requested width
|
||
is implemented using a tagged representation unless a better
|
||
representation is available.
|
||
* fixed bug 423: TRULY-THE and *CHECK-CONSISTENCY* interaction.
|
||
* bug fix: SB-BSD-SOCKETS:MAKE-INET-ADDRESS checks the input string
|
||
for wellformedness and returns a specialized vector. (reported by
|
||
Francois-Rene Rideau)
|
||
* bug fix: FIND-CLASS was not thread-safe. (reported by Attila Lendvai)
|
||
* bug fix: ~R was broken for vigtillions. (thanks to Luis Oliveira)
|
||
* bug fix: attempt to obtain *SCHEDULER-LOCK* recursively when
|
||
unscheduling timer at the same time as another timer fires.
|
||
* bug fix: don't reschedule timers for dead threads.
|
||
* bug fix: periodic polling was broken. (thanks to Espen S Johnsen)
|
||
* bug fix: copying output from RUN-PROGRAM to a stream signalled
|
||
bogus errors if select() was interrupted.
|
||
* enhancement: add support for fcntl's struct flock to SB-POSIX.
|
||
|
||
changes in sbcl-1.0.15 relative to sbcl-1.0.14:
|
||
* enhancement: cleaner backtraces for interactive interrupts, as
|
||
well as other cases where the interesting frames used to be
|
||
obscured by interrupt handling frames.
|
||
* enhancement: untracing a whole package using (UNTRACE "FOO") is
|
||
now supported, and tracing a whole package using (TRACE "FOO") now
|
||
traces SETF-functions as well.
|
||
* enhancement: implement SB-POSIX:MKTEMP and SB-POSIX:MKDTEMP.
|
||
* SB-DEBUG:PRINT-FRAME-CALL now prints the entry-point kind even
|
||
when SB-DEBUG:*SHOW-ENTRY-POINT-DETAILS* is NIL.
|
||
* unreadably printed representation of hash-tables now includes
|
||
weakness if any.
|
||
* bug fix: partially fixed #188: type propagation from assignments
|
||
is now more efficient.
|
||
* bug fix: fixed #407: (COERCE X 'SINGLE-FLOAT) and (COERCE X
|
||
'DOUBLE-FLOAT) are not flushable.
|
||
* bug fix: on x86 and x86-64 pointer based EQ-hashing now uses the
|
||
full address of the object, and none of the tag bits.
|
||
* bug fix: readably printing hash-tables now respects other printer
|
||
control variables. (reported by Cedric St-Jean)
|
||
* bug fix: compiler gave a bogus STYLE-WARNING for the :SYNCHRONIZED
|
||
keyword with MAKE-HASH-TABLE.
|
||
* bug fix: export SB-POSIX:MKSTEMP.
|
||
* bug fix: SORT was not interrupt safe.
|
||
* bug fix: XREF accounts for the last node of each basic-block as
|
||
well.
|
||
* bug fix: MAKE-INSTANCE optimizations interacted badly with
|
||
non-keyword :DEFAULT-INITARGS in the presence of :BEFORE/:AFTER
|
||
methods on SHARED-INITIALIZE. (thanks to Matt Marjanovic)
|
||
* bug fix: the CTOR optimization for MAKE-INSTANCE should no longer
|
||
create obsolete instances in the case of redefinition or
|
||
obsoletion of a superclass. (thanks to Andy Hefner)
|
||
* bug fix: Support for the Alpha architecture has been revived; it had
|
||
suffered somewhat from lack of maintenance since sbcl-1.0.
|
||
* improvements to the Windows port:
|
||
** The system detects the codepage to use at startup, instead of
|
||
using the value from the saved core. (thanks to Kei Suzuki)
|
||
|
||
changes in sbcl-1.0.14 relative to sbcl-1.0.13:
|
||
* new feature: SB-EXT:*EXIT-HOOKS* are called when the process exits
|
||
(see documentation for details.)
|
||
* revived support for OpenBSD (contributed by Josh Elsasser)
|
||
* partially fixed bug #108: ROOM no longer suffers from occasional
|
||
(AVER (SAP= CURRENT END)) failures.
|
||
* fixed bug #402: proclaimed non-standard declarations in DEFMETHOD
|
||
bodies no longer cause a WARNING to be signalled. (reported by
|
||
Vincent Arkesteijn)
|
||
* bug fix: (TRUNCATE X 0) when X is a bignum now correctly signals
|
||
DIVISION-BY-ZERO. Similarly for MOD and REM (which suffered due to
|
||
the bug in TRUNCATE.) (reported by Michael Weber)
|
||
* bug fix: SB-SPROF:REPORT no longer signals an error if there are
|
||
no samples. (reported by Andy Hefner)
|
||
* bug fix: functions compiled using (COMPILE NIL '(LAMBDA ...))
|
||
no longer appear as (NIL ...) frames in backtraces.
|
||
* bug fix: RESOLVE-CONFLICT (and the other name conflict machinery)
|
||
is now actually exported from SB-EXT as documented. (reported by
|
||
Maciej Katafiasz)
|
||
* bug fix: sb-aclrepl now correctly understands how to inspect
|
||
single-floats on 64-bit platforms where single-floats are not boxed.
|
||
* bug fix: SB-MOP:CLASS-SLOTS now signals an error if the class has not
|
||
yet been finalized. (reported by Levente Meszaros)
|
||
* bug fix: CLOSE :ABORT T behaves more correctly on Windows.
|
||
* DESCRIBE and (DOCUMENTATION ... 'OPTIMIZE) describe meaning of
|
||
SBCL-specific optimize qualities.
|
||
|
||
changes in sbcl-1.0.13 relative to sbcl-1.0.12:
|
||
* minor incompatible change: RUN-PROGRAM now uses execvp(3) to find
|
||
an executable in the search path, and does so in the child
|
||
process's PATH. The function FIND-EXECUTABLE-IN-SEARCH-PATH has
|
||
been removed; it can be found in the CVS history, for somebody who
|
||
needs that search behavior (see the manual).
|
||
* minor incompatible change: compiler policy re. weakening type
|
||
checks has changed: now type checks are weakened only if SAFETY < 2
|
||
and SAFETY < SPEED.
|
||
* SB-EXT:NATIVE-NAMESTRING takes a new keyword AS-FILE, forcing
|
||
unparsing of directory pathnames as files. Analogously,
|
||
SB-EXT:PARSE-NATIVE-NAMESTRING takes an AS-DIRECTORY, forcing a
|
||
filename to parse into a directory pathname.
|
||
* enhancement: implicit generic function creation now signals a
|
||
specific style-warning IMPLICIT-GENERIC-FUNCTION-WARNING, which
|
||
users can bind handlers for and muffle around calls to LOAD.
|
||
* enhancement: RUN-PROGRAM allows unicode arguments and environments
|
||
to be used (using the default stream external format), and allows
|
||
non-simple strings to be used. (thanks to Harald Hanche-Olsen)
|
||
* optimization: COPY-SEQ, FILL, and SUBSEQ are 30-80% faster for
|
||
strings and vectors whose element-type or simplicity is not fully
|
||
known at compile-time.
|
||
* optimization: STRING-TRIM and related functions no longer allocate
|
||
a new string when no trimming needs to be performed. These functions
|
||
are also faster than before when the input string has been declared
|
||
as a simple-string.
|
||
* optimization: READ-SEQUENCE on simple-strings is up to 80% faster.
|
||
* optimization: READ-LINE is significantly faster for files containing
|
||
long lines.
|
||
* optimization: non-open coded uses of character comparison operators
|
||
(e.g. char=) no longer cons when called with more than one parameter
|
||
on platforms supporting dynamic-extent allocation.
|
||
* bug fix: READ-SEQUENCE on composite stream wrapping a Gray stream
|
||
with STREAM-ELEMENT-TYPE (UNSIGNED-BYTE 8) signalled an error.
|
||
* bug fix: COPY-SEQ on lists did not signal a type-error on improper
|
||
lists in safe code.
|
||
* bug fix: some sequence functions elided bounds checking when
|
||
SPEED > SAFETY.
|
||
* bug fix: too liberal weakening of union-type checks when SPEED >
|
||
SAFETY.
|
||
* bug fix: more bogus fixnum declarations in ROOM implementation
|
||
have been fixed.
|
||
|
||
changes in sbcl-1.0.12 relative to sbcl-1.0.11:
|
||
* new feature: MAKE-HASH-TABLE now experimentally accepts a
|
||
:SYNCHRONIZED argument, which makes the hash-table safe for
|
||
concurrent accesses (but not iteration.) See also:
|
||
SB-EXT:WITH-LOCKED-HASH-TABLE, and
|
||
SB-EXT:HASH-TABLE-SYNCHRONIZED-P.
|
||
* optimization: CONCATENATE on strings is an order of magnitude faster
|
||
in code compiled with (> SPEED SPACE).
|
||
* optimization: SUBSEQ is ~50% faster on lists.
|
||
* bug fix: bug 417 fixed -- source location reporting is now more robust.
|
||
* bug fix: SUBSEQ on a list will now correctly signal an error if if
|
||
END is smaller then START.
|
||
* bug fix: SB-PROFILE will no longer report extra consing for nested
|
||
calls to profiled functions.
|
||
* bug fix: ROOM implementation had bogus fixnum declarations which
|
||
could cause type-errors when calling ROOM on large images.
|
||
* bug fix: if file compilation is aborted, the partial fasl is now
|
||
deleted, and COMPILE-FILE returns NIL as the primary value.
|
||
* bug fix: number of thread safety issues relating to SBCL's internal
|
||
hash-table usage have been fixed.
|
||
* bug fix: SB-SYS:WITH-PINNED-OBJECTS could cause garbage values to
|
||
be returned from its body when the values were being returned
|
||
using unknown-values return convection and the W-P-O was wrapped
|
||
inside an UNWIND-PROTECT.
|
||
* bug fix: sb-posix should now compile again under Windows, enabling
|
||
slime to work again.
|
||
|
||
changes in sbcl-1.0.11 relative to sbcl-1.0.10:
|
||
* incompatible change: hash-table accessor functions are no longer
|
||
automatically protected by locks. Concurrent accesses on the same hash-table
|
||
from multiple threads can give inconsistent results or even corrupt the
|
||
hash-table completely. Multi-threaded applications should do their own
|
||
locking at the correct granularity. In the current implementation it is
|
||
still safe to have multiple readers access the same table, but it's not
|
||
guaranteed that this property will be maintained in future releases.
|
||
* minor incompatible change: (SETF MUTEX-VALUE) is not longer supported,
|
||
and will signal an error at runtime.
|
||
* enhancement: SB-THREAD package now exports a semaphore interface.
|
||
* enhancement: CONS can now stack-allocate on x86 and
|
||
x86-64. (Earlier LIST and LIST* supported stack-allocation, but
|
||
CONS did not.)
|
||
* enhancement: nested lists can now be stack allocated on
|
||
platforms providing stack allocation support.
|
||
* enhancement: dynamic-extent support has been extended to support
|
||
cases where there are multiple possible sources for the stack
|
||
allocated value.
|
||
* optimization: RELEASE-MUTEX no longer needs to perform a syscall
|
||
if the mutex is uncontested on Linux.
|
||
* bug fix: symbol-macro expansion now uses the *MACROEXPAND-HOOK*
|
||
as specified by the CLHS. (thanks to Tobias Rittweiler)
|
||
* bug fix: NaN comparison now works on x86-64.
|
||
* bug fix: CLOSE :ABORT T on a stream with pending output now
|
||
works.
|
||
* bug fix: instances of non-standard metaclasses using standard
|
||
instance structure protocol sometimes missed the slot type checks
|
||
in safe code.
|
||
* bug fix: known functions can be inlined in high-debug code.
|
||
|
||
changes in sbcl-1.0.10 relative to sbcl-1.0.9:
|
||
* minor incompatible change: the MSI installer on Windows no longer
|
||
associates .lisp and .fasl files with the installed SBCL.
|
||
* minor incompatible change: :UNIX is no longer present in *FEATURES*
|
||
on Windows. (thanks to Luis Oliviera)
|
||
* new feature: SB-CLTL2 contrib module now implements
|
||
FUNCTION-INFORMATION. (thanks to Larry D'Anna)
|
||
* optimization: scavenging weak pointers is now more efficient,
|
||
requiring O(1) instead of O(N) per weak pointer to identify
|
||
scanvenged vs. unscavenged pointers. (thanks to Paul Khuong)
|
||
* optimization: typechecking (SETF SLOT-VALUE) is now ~5x faster in
|
||
method bodies using constant slot-names when the first argument is
|
||
a specializer parameter for the method.
|
||
* optimization: SLOT-VALUE &co are now ~50% faster for variable slot
|
||
names, when the class of the instance is a direct instance
|
||
STANDARD-CLASS or FUNCALLABLE-STANDARD-CLASS (making them only 3x
|
||
as slow as the constant slot-name case.)
|
||
* optimization: member type construction is now O(N) instead
|
||
of O(N^2).
|
||
* optimization: UNION and NUNION are now O(N+M) for large
|
||
inputs as long as the :TEST function is one of EQ, EQL, EQUAL, or
|
||
EQUALP.
|
||
* enhancement: DEFINE-MODIFY-MACRO lambda-list information is
|
||
now more readable in environments like Slime which display it.
|
||
(thanks to Tobias C. Rittweiler)
|
||
* bug fix: SB-EXT:COMPARE-AND-SWAP was non-atomic unless the compiler
|
||
was able to infer the correct argument type for the object on which
|
||
the CAS operation was being performed.
|
||
* bug fix: copy propagation interfered with parallel assignment
|
||
semantics in local calls. (reported by Paul Khuong)
|
||
* bug fix: the signed modular fixnum shift compiled to wrong code on
|
||
x86 and x86-64. (spotted by a slight modification to some of
|
||
PFD's random tests)
|
||
|
||
changes in sbcl-1.0.9 relative to sbcl-1.0.8:
|
||
* minor incompatible change: SB-SYS:OUTPUT-RAW-BYTES is deprecated.
|
||
* enhancement: SB-EXT:FINALIZE accepts a :DONT-SAVE keyword argument,
|
||
indicating the finalizer should be cancelled when SAVE-LISP-AND-DIE
|
||
is called.
|
||
* enhancement: default PRINT-OBJECT methods for classes, slot-definitions,
|
||
and generic function now print the object identity for anonymous
|
||
instances. (thanks to Attila Lendvai)
|
||
* enhancement: as an extension to MOP, SBCL now supports SETF of
|
||
STANDARD-INSTANCE-ACCESS and FUNCALLABLE-STANDARD-INSTANCE-ACCESS.
|
||
(thanks to Attila Lendvai)
|
||
* enhancement: sb-cover has an alternate annotation mode which puts
|
||
the form annotations at the car of the form, instead of annotating
|
||
it completely. The benefit of this mode is that it shows better
|
||
which forms were instrumented by the compiler.
|
||
* bug fix: new compiler transforms for MEMBER and ASSOC were affected
|
||
by printer control variables. (reported by Dan Corkill)
|
||
* bug fix: system leaked memory when delayed output was performed by
|
||
the OS in smaller chunks then expected. (thanks to David Smith)
|
||
* bug fix: system leaked memory when file streams were not closed
|
||
properly.
|
||
* bug fix: large objects written to slow streams that were modified
|
||
after the write could end up with the modified state written to
|
||
the underlying file descriptor.
|
||
* bug fix: multiple threads operating in parallel on the same stream
|
||
could cause buffer-overflows.
|
||
* bug fix: source location information is stored correctly
|
||
(broken since 1.0.6). This bug would generally show up as the
|
||
Slime debugger highlighting the wrong form when the sldb-show-source
|
||
command was used.
|
||
* bug fix: Branch forms are again annotated as branches in the sb-cover
|
||
annotations.
|
||
* bug fix: GCD on MOST-NEGATIVE-FIXNUM no longer causes an infinite loop
|
||
on x86-64. (reported by Gregory Vanuxem)
|
||
* bug fix: EQUALP could return wrong results for structures with raw
|
||
slots (slots with a :TYPE of SINGLE-FLOAT, DOUBLE-FLOAT, or a machine
|
||
word). (reported by Vjacheslav Fyodorov)
|
||
* bug fix: sb-sprof sampling didn't work on non-x86oid platforms. (patch
|
||
by Pierre Mai)
|
||
|
||
changes in sbcl-1.0.8 relative to sbcl-1.0.7:
|
||
* enhancement: experimental macro SB-EXT:COMPARE-AND-SWAP provides
|
||
atomic compare-and-swap operations on threaded platforms.
|
||
* enhancement: experimental function SB-EXT:RESTRICT-COMPILER-POLICY
|
||
allows assigning a global minimum value to optimization qualities
|
||
(overriding proclamations and declarations).
|
||
* enhancement: closed over variables can be stack-allocated on x86
|
||
and x86-64.
|
||
* performance bug fix: GETHASH and (SETF GETHASH) are once again
|
||
non-consing.
|
||
* optimization: slot definition lookup is now O(1). This speeds up
|
||
eg. SLOT-VALUE and (SETF SLOT-VALUE) with variable slot names.
|
||
* optimization: STRING-TO-OCTETS is now up to 60% faster for UTF-8.
|
||
* optimization: ASSOC and MEMBER can now be open-coded for all
|
||
combinations of keyword arguments when second argument is constant
|
||
and SPEED >= SPACE. In other cases a specialized version is
|
||
selected.
|
||
* bug fix: using obsoleted structure instances with TYPEP and
|
||
generic functions now signals a sensible error.
|
||
* bug fix: threads waiting on GET-FOREGROUND can be interrupted.
|
||
(reported by Kristoffer Kvello)
|
||
* bug fix: backtrace construction is now more careful when making
|
||
lisp-objects from pointers on the stack, to avoid creating bogus
|
||
objects that can be seen by the GC.
|
||
* bug fix: defaulting of values in contexts expecting more than 7
|
||
variables now works on x86-64. (reported by Christopher Laux)
|
||
* bug fix: modifications to packages (INTERN, EXPORT, etc) are now
|
||
thread safe.
|
||
* bug fix: (SETF SYMBOL-PLIST) no longer allows assigning a non-list
|
||
as the property-list of a symbol.
|
||
* bug fix: DEFMETHOD forms with CALL-NEXT-METHOD in the method body,
|
||
in EVAL-WHEN forms with both :COMPILE-TOPLEVEL and :LOAD-TOPLEVEL
|
||
situations requested, are once again file-compileable. (reported
|
||
by Sascha Wilde)
|
||
|
||
changes in sbcl-1.0.7 relative to sbcl-1.0.6:
|
||
* MOP improvement: support for user-defined subclasses of
|
||
SB-MOP:SPECIALIZER has been enhanced. The experimental interface
|
||
function SB-PCL:MAKE-METHOD-SPECIALIZERS-FORM, called as part of
|
||
the expansion of DEFMETHOD, is responsible for generating a form
|
||
which creates a list of specializers when evaluated. Additional
|
||
functions SB-PCL:[UN]PARSE-SPECIALIZER-USING-CLASS provide
|
||
debugging and introspective support.
|
||
* minor incompatible change: the (unsupported) spinlock interface
|
||
has changed: free spinlock now has the value NIL, and a held spinlock
|
||
has the owning thread as its value.
|
||
* enhancement: WITHOUT-INTERRUPTS now binds ALLOW-WITH-INTERRUPTS and
|
||
WITH-LOCAL-INTERRUPTS as local macros. Refer to documentation string
|
||
for details.
|
||
* enhancement: name of a socket-stream is now "a socket" instead of
|
||
"a constant string".
|
||
* enhancement: SB-POSIX now supports lockf(). (Thanks to Zach Beane.)
|
||
* enhancement: SB-POSIX now supports getcwd(). (Thanks to Tassilo Horn.)
|
||
* enhancement: SB-INTROSPECT:FUNCTION-ARGLIST shows nicer argument lists
|
||
for generic functions. (Thanks to Tobias C. Rittweiler)
|
||
* optimization: bignum printing speed has been improved by 20-40%
|
||
(depending on the bignum size.)
|
||
* bug fix: WITH-MUTEX and WITH-RECURSIVE-LOCK are now interrupt safe
|
||
on Linux.
|
||
* bug fix: the cache used by the CLOS to store precomputed effective
|
||
methods, slot offsets, and constant return values is now thread and
|
||
interrupt safe.
|
||
* bug fix: generic function dispatch function updating is now thread
|
||
and interrupt safe (in the sense that the known issues have been
|
||
fixed.)
|
||
* bug fix: ADD/REMOVE-METHOD is now thread and interrupt safe.
|
||
* bug fix: interning EQL-specializers is now thread and interrupt safe.
|
||
* bug fix: asdf systems with dependencies to the SB-POSIX or
|
||
SB-BSD-SOCKETS contribs can be loaded with :FORCE T.
|
||
* bug fix: interrupt safety of applicable method computation has been
|
||
improved.
|
||
|
||
changes in sbcl-1.0.6 relative to sbcl-1.0.5:
|
||
* new contrib: sb-cover, an experimental code coverage tool, is included
|
||
as a contrib module.
|
||
* optimization: STRING-TO-OCTETS for unibyte encodings and UTF-8 is
|
||
significantly faster.
|
||
* optimization: calls of the form (AREF FOO (+ INDEX <constant>)) now
|
||
produce more efficient code on x86-64 if the compiler can determine
|
||
that (+ INDEX <constant>) does not require a bounds check and FOO
|
||
has an element type at least 8 bits wide.
|
||
* enhancement: a new, experimental synchronous timeout facility is
|
||
provided. Refer to SB-SYS:WITH-DEADLINE for details.
|
||
* enhancement: when a symbol name conflict error arises, the
|
||
conflicting symbols are always printed with a package prefix.
|
||
(thanks to Kevin Reid)
|
||
* enhancement: stepping is now once again supported on the SPARC and
|
||
MIPS platforms. (It is also now more likely to work on CheneyGC
|
||
builds on the PPC.)
|
||
* enhancement: sb-sprof can now also track and report accurate call
|
||
counts.
|
||
* bug fixes: the treatment of non-standard subclasses of
|
||
SB-MOP:SPECIALIZER is more correct.
|
||
* incompatible change: PURIFY no longer copies the data from the
|
||
dynamic space into the static and read-only spaces on platforms
|
||
that use the generational garbage collector
|
||
* bug fix: GETHASH, (SETF GETHASH), CLRHASH and REMHASH are now
|
||
interrupt safe.
|
||
* bug fix: GC race condition occasionally resulting in crashes with
|
||
the error message "SIG_STOP_FOR_GC blocked at a bad place" has been
|
||
fixed.
|
||
* bug fix: &ENVIRONMENT variables in macro lambda lists can now be
|
||
declared ignored.
|
||
* bug fix: DEFSETF lambda lists without &ENVIRONMENT no longer cause
|
||
a STYLE-WARNING to be signalled (regression from 1.0.4.)
|
||
* bug fix: an asynchronous interrupt could previously leave the
|
||
system running with GC inhibited.
|
||
* bug fix: a DECLARE form evaluated at top-level now causes an error
|
||
rather than silently (or verbosely) returning NIL.
|
||
* bug fix: trying to dissassemble functions compiled at high DEBUG could
|
||
result in a error being signalled due to source form lookup errors.
|
||
(reported by Peter Graves)
|
||
|
||
changes in sbcl-1.0.5 relative to sbcl-1.0.4:
|
||
* incompatible change: removed writer methods for host-ent-name,
|
||
host-ent-addresses -- changing the values did not update the DNS
|
||
information anyway.
|
||
* minor incompatible change: changed experimental JOIN-THREAD interface
|
||
* documentation: the manual now lists reader and writer methods
|
||
in class slot documentation sections. (thanks to Richard M Kreuter)
|
||
* documentation: unwinding from asyncronous events has been
|
||
documented as unsafe.
|
||
* documentation: SB-SYS:WITHOUT-GCING has been documented as unsafe
|
||
in multithreaded application code.
|
||
* optimization: GET-INTERNAL-REAL-TIME has been optimized on POSIX
|
||
platforms. (thanks to James Anderson for the optimization hint)
|
||
* optimization: REPLACE, SUBSEQ, and COPY-SEQ are now optimized in
|
||
more cases.
|
||
* optimization: STRING-{EQUAL,LESSP,GREATER-P} and their NOT-
|
||
variants no longer cons.
|
||
* optimization: Direct calls to CHAR-{EQUAL,LESSP,GREATERP} and
|
||
their NOT- variants no longer cons.
|
||
* optimization: EQUAL hash tables no longer use SXHASH for objects
|
||
of all data types, but instead use an EQL hash for types for which
|
||
EQUAL is the same as EQL.
|
||
* optimization: the non-inlined generic versions of AREF and (SETF AREF)
|
||
are significantly faster.
|
||
* optimization: new STRING-OUTPUT-STREAM implementation is much
|
||
faster for large outputs and conses 30% less on average.
|
||
* enhancement: XREF information is now collected for references made
|
||
to global variables using SYMBOL-VALUE and a constant argument.
|
||
* enhancement: SIGINT now causes a specific condition
|
||
SB-SYS:INTERACTIVE-INTERRUPT to be signalled.
|
||
* bug fix: FILE-POSITION used to signal an error in some cases where
|
||
ANSI requires it to return NIL.
|
||
* bug fix: ADJUST-ARRAY is now interrupt-safe.
|
||
* bug fix: adding and removing fd-handlers is now interrupt-safe.
|
||
* bug fix: inlined calls to C now ensure 16byte stack alignment on
|
||
x86/Darwin.
|
||
* bug fix: bad type declaration in the CLOS implementation has
|
||
been fixed. (reported by James Anderson)
|
||
* bug fix: incorrect ROOM reporting on x86-64 has been fixed.
|
||
(thanks to Lutz Euler)
|
||
* bug fix: DEFSETF now allows &ENVIRONMENT and disallows &AUX as
|
||
required by the CLHS. (reported by Samium Gromoff)
|
||
* bug fix: dead unbound variable references now signal an error.
|
||
(reported by Marco Monteiro)
|
||
* bug fix: / with an unused value was being deleted in safe code.
|
||
(thanks to Marco Monteiro and Kevin Reid)
|
||
* bug fix: number of characters that can be written onto a single
|
||
line in a file is unlimited.
|
||
* bug fix: some GC deadlocks caused by asynchronous interrupts have
|
||
been fixed by inhibiting interrupts for when GC is disabled.
|
||
* bug fix: some interrupt safety issues with GETHASH, (SETF
|
||
GETHASH), CLRHASH and REMHASH have been fixed.
|
||
* bug fix: binding *BREAK-ON-SIGNALS* to a value that is not a type
|
||
specifier no longer causes infinite recursion.
|
||
* bug fix: SB-EXT:MUFFLE-CONDITIONS declarations no longer trigger a
|
||
bogus warning in DEFMETHOD bodies. (reported by Kevin Reid)
|
||
* bug fix: an &environment argument with the correct variable information
|
||
is passed to macros that are expanded during byte compilation.
|
||
(reported by Samium Gromoff)
|
||
* bug fix: a logic error was causing the hash function for bignums to
|
||
have excessive amounts of collisions. (reported by Faré Rideau)
|
||
* bug fix: modifying the contents of an array could change the return
|
||
value of SXHASH on that array, which is only allowed for strings
|
||
and bit vectors. (bug introduced in 0.9.16)
|
||
* improvement: the x86-64/darwin port now passes all tests (except
|
||
for the debugger tests) but should still be considered
|
||
experimental until this is fixed.
|
||
* improvement: a style-warning is signaled for CASE (etc) clauses with
|
||
duplicate keys. (thanks to Kevin Reid)
|
||
* improvement: macos/x86 and macos/x86-64 now use mach exception
|
||
handlers for dealing with illegal instructions (for trapping and
|
||
error handling) and memory protection violations (for GC).
|
||
|
||
changes in sbcl-1.0.4 relative to sbcl-1.0.3:
|
||
* new platform: experimental support for x86-64/darwin (MacOS).
|
||
* incompatible change: the thread-safe (on most platforms) getaddrinfo
|
||
and getnameinfo sockets functions are used instead of gethostbyaddr
|
||
and gethostbyname, on platforms where the newer functions are available.
|
||
As a result, the ALIASES field of HOST-ENT will always be NIL on these
|
||
platforms.
|
||
* change: runtimes with embedded cores (i.e. saved with :EXECUTABLE T)
|
||
don't print the startup banner, but behave as if --noinform was passed
|
||
as a command line argument. (thanks to Kevin Reid)
|
||
* new experimental feature: added JOIN-THREAD (by NIIMI Satoshi)
|
||
* optimization: code using alien values with undeclared types is much faster.
|
||
* optimization: the compiler is now able to open code SEARCH in more cases.
|
||
* optimization: more compact typechecks on x86-64 (thanks to Lutz Euler)
|
||
* bug fix: using standardized COMMON-LISP special variables as loop
|
||
variables no longer signals bogus package lock violations. (reported
|
||
by Eric Marsden)
|
||
* bug fix: declaring local loop variables to be of a range-limited type
|
||
such as (SINGLE-FLOAT 1.0 2.0) no longer causes a compile-time error.
|
||
(reported by Andras Simon)
|
||
* bug fix: >= and <= gave wrong results when used with NaNs. (Some NaN
|
||
bugs remain on x86-64.)
|
||
* bug fix: the #= and ## reader macros now interact reasonably with
|
||
funcallable instances.
|
||
* bug fix: type-checks for function arguments were compiled using the
|
||
compiler policy settings of the wrong lexical environment (in 1.0.2
|
||
and 1.0.3).
|
||
* bug fix: SHADOW accepts characters as string designators, as required
|
||
by the spec (thanks to Eric Marsden)
|
||
* bug fix: fixed GC safety issues when foreign functions are called with
|
||
non-base strings as arguments
|
||
* bug fix: more consistent error output for fatal-compiler-warnings, like
|
||
reader errors
|
||
* bug fix: functions with proper names were showing up as NIL in
|
||
backtraces (reported by Edi Weitz, regression in 1.0.2)
|
||
|
||
changes in sbcl-1.0.3 relative to sbcl-1.0.2:
|
||
* new platform: NetBSD/PPC. (thanks to Aymeric Vincent)
|
||
* optimization: calls of the form (AREF FOO (+ INDEX <constant>)) now
|
||
produce more efficient code on the x86 if the compiler can determine
|
||
that (+ INDEX <constant>) does not require a bounds check and FOO
|
||
has an element type at least 8 bits wide.
|
||
* bug fix: references to undefined variables are handled the same way
|
||
in toplevel forms as in the normal compiler
|
||
* bug fix: the build scripts again work with non-bash /bin/sh (thanks
|
||
to Magnus Henoch)
|
||
* bug fix: use "gtar" as the asdf-install *TAR-PROGRAM* on NetBSD
|
||
(thanks to Jon Buller)
|
||
* improvement: faster compilation times for complex functions
|
||
* improvement: added readlink support to SB-POSIX (thanks to Richard
|
||
M Kreuter)
|
||
|
||
changes in sbcl-1.0.2 relative to sbcl-1.0.1:
|
||
* improvement: experimental support for mach exception handling on
|
||
x86/macos. requires building with :MACH-EXCEPTION-HANDLER feature
|
||
to use.
|
||
* improvement: support for GBK external format.
|
||
(thanks to Chun Tian (binghe))
|
||
* improvement: the debugger now displays variables that have been closed
|
||
over, in code compiled with (DEBUG 2) or higher
|
||
* improvement: support for executable cores on NetBSD (thanks to
|
||
Richard Kreuter)
|
||
* new feature: added a RESTART-FRAME debugger command
|
||
* new feature: new generic function SB-GRAY:STREAM-FILE-POSITION can
|
||
be used to provide an implementation for FILE-POSITION on Gray streams
|
||
(thanks to Eric Marsden)
|
||
* new feature: add syslog, openlog and closelog support to SB-POSIX
|
||
(thanks to Richard Kreuter)
|
||
* optimization: the function call overhead in code compiled with
|
||
a high DEBUG optimization setting is significantly
|
||
* bug fix: an error is signaled for attempts to use READ-SEQUENCE
|
||
for a (SIGNED-BYTE 8) stream and (UNSIGNED-BYTE 8) vector, or vice versa.
|
||
(thanks to Tony Martinez)
|
||
* bug fix: the initforms for DEFMETHOD &AUX parameters are only
|
||
evaluated once (reported by Kevin Reid)
|
||
* bug fix: the :SHOW-PROGRESS keyword parameter to SB-SPROF:WITH-PROFILING
|
||
works again (thanks to Kilian Sprotte)
|
||
* bug fix: an error is signaled for tagbodies with duplicate tags
|
||
(thanks to Stephen Wilson)
|
||
* bug fix: NIL can be used as a tagbody tag (thanks to Stephen Wilson)
|
||
* bug fix: Win32 port can now handle foreign code unwinding Lisp
|
||
stack frames from alien callbacks.
|
||
* bug fix: ATANH returned incorrect results on win32 (thanks to Pierre Mai)
|
||
* bug fix: SBCL works on Linux/ppc systems with a kernel configured to use
|
||
65k pages (thanks to David Woodhouse)
|
||
* bug fix: fix SB-POSIX dirent and socket on NetBSD (thanks to Richard Kreuter)
|
||
|
||
changes in sbcl-1.0.1 relative to sbcl-1.0:
|
||
* new platform: FreeBSD/x86-64, including support for threading.
|
||
* new feature: the compiler stores cross-referencing information
|
||
about function calls (who-calls), macroexpansion (who-macroexpands)
|
||
and special variables (who-binds, who-sets, who-references) for code
|
||
compiled with (< SPACE 3). This information is available through the
|
||
sb-introspect contrib.
|
||
* new feature: users may subclass SEQUENCE, and have instances of
|
||
these classes interoperate with standard Common Lisp functions if
|
||
a number of methods are defined. (This feature is experimental
|
||
and the interface subject to change based on feedback from SBCL
|
||
users and the general community)
|
||
* improvement: sb-sprof traces call stacks to an arbitrary depth on
|
||
x86/x86-64, rather than the previous fixed depth of 8
|
||
* improvement: another pthread back-end of mutex "pthread-futex".
|
||
* bug fix: non-ascii command-line arguments are processed correctly
|
||
(thanks to Yaroslav Kavenchuk)
|
||
* bug fix: non-required arguments were not passed correctly when a method
|
||
defined using DEFMETHOD was called from a mop-generated method using
|
||
CALL-NEXT-METHOD (reported by Pascal Costanza)
|
||
* bug fix: recursion is now permitted in accessors through
|
||
SLOT-UNBOUND. (reported by Pascal Costanza)
|
||
* bug fix: an error was signaled at startup if the HOME environment
|
||
variable was defined, but had an empty value (reported by Peter Van Eynde)
|
||
* bug fix: non ordinary lambda-list keyword in ordinary lambda lists
|
||
signal a PROGRAM-ERROR, not a BUG.
|
||
* bug fix: SB-POSIX:READDIR works when built with large file support.
|
||
* bug fix: ENOUGH-NAMESTRING works relative to #p"/" as well. (thanks
|
||
to Marco Monteiro)
|
||
* enhancement: DESTRUCTURING-BIND lambda-list uses &BODY instead of &REST
|
||
for better automatic indentation support. (thanks to Matt Pillsbury)
|
||
* optimization: loading generic functions no longer takes O(n^2) time,
|
||
proportional to the amount of methods in the generic function
|
||
(reported by Todd Sabin and Jeremy Brown)
|
||
* optimization: the FIND and POSITION family of sequence functions
|
||
are significantly faster on arrays whose element types have been
|
||
declared.
|
||
* improvements to the Windows port:
|
||
** Intermittent heap corruption problems have been fixed. (thanks
|
||
to Alastair Bridgewater)
|
||
** TRACE :ENCAPSULATE NIL (and function end breakpoints)
|
||
work on Windows.
|
||
** Lisp is able to unwind foreign exception frames from alien
|
||
callbacks. (thanks to Alastair Bridgewater)
|
||
|
||
changes in sbcl-1.0 relative to sbcl-0.9.18:
|
||
* improvement: experimental support for threading on FreeBSD/x86.
|
||
(thanks to NIIMI Satoshi)
|
||
* improvement: runtime option --dynamic-space-size can be used
|
||
to set the size of the dynamic space reserved on startup.
|
||
* improvement: floating point modes in effect are now saved in
|
||
core, and restored on startup.
|
||
* improvement: GET-INTERNAL-REAL-TIME now reports the time since
|
||
startup, not time since first call to GET-INTERNAL-REAL-TIME.
|
||
* improvement: SAVE-LISP-AND-DIE explicitly checks that multiple
|
||
threads are not running after *SAVE-HOOKS* have run.
|
||
* improvement: writes to CLOS instance slots are type-checked in code
|
||
compiled with (SAFETY 3)
|
||
* improvement: floating-point exception handling on FreeBSD (thanks to
|
||
NIIMI Satoshi)
|
||
* improvement: SB-POSIX supports time(2), utime(2) and utimes(2)
|
||
(thanks to Zach Beane)
|
||
* improvement: support for files larger than 2GB for CL streams and SB-POSIX
|
||
on Linux/x86
|
||
* improvement: added support for the Shift-JIS external format.
|
||
(contributed by NIIMI Satoshi)
|
||
* improvement: callbacks are supported on Linux/PPC. (thanks to
|
||
Joshua Ross)
|
||
* bug fix: compiler bug triggered by a (non-standard) VALUES
|
||
declaration in a LET* was fixed. (reported by Kaersten Poeck)
|
||
* bug fix: file compiler no longer confuses validated and already
|
||
dumped structurres. (reported by Kaersten Poeck)
|
||
* bug fix: ADJUST-ARRAY :FILL-POINTER T on an array without a
|
||
fill-pointer signals a type-error as required. (thanks to
|
||
Lars Brinkhoff)
|
||
* bug fix: disassemly of funcallable instances works.
|
||
* bug fix: single stepping on PPC.
|
||
* bug fix: fix thread-safety problems in the type system (generally
|
||
manifesting as nonsensical errors like "STRING is a bad type specifier
|
||
for sequences" or "The value 1 is not of type FIXNUM")
|
||
* bug fix: version components are handled correctly in TRANSLATE-PATHNAME
|
||
(reported by Josip Gracin)
|
||
* bug fix: an error is signaled for attempts to displace arrays with
|
||
incompatible element types (thanks to Mario Mommer)
|
||
* bug fix: more correct handling of wide characters in debug info
|
||
(bug reported by Attila Lendvai and fixed by Juho Snellman)
|
||
* optimization: method calls with &OPTIONAL or &KEY arguments are faster
|
||
and don't cause extra consing
|
||
* optimization: MAP and MAP-INTO are significantly faster on vectors
|
||
whose elements types have been declared.
|
||
* Improvements to SB-SPROF:
|
||
** Support for allocation profiling
|
||
** Reduced profiling overhead, especially for long profiling runs
|
||
* Improvements to the Windows port:
|
||
** floating point exceptions are now reported correctly.
|
||
** stack exhaustion detection works partially.
|
||
** more accurate GET-INTERNAL-REAL-TIME.
|
||
** better RUN-PROGRAM behaviour in case of errors in the child
|
||
process.
|
||
** PROBE-FILE now simplifies pathnames correctly.
|
||
** DIRECTORY now works correctly with :WILD-INFERIORS.
|
||
** DECODE-UNIVERSAL-TIME works on times before 00:00:00 January
|
||
1st 1970 (although time timezone data will be unreliable).
|
||
** Hyperbolic functions TANH, ASINH, ACOSH, and ATANH work.
|
||
|
||
changes in sbcl-0.9.18 (1.0.beta?) relative to sbcl-0.9.17:
|
||
* enhancement: SB-POSIX now supports cfsetispeed(3), cfsetospeed(3),
|
||
cfgetispeed(3), cfgetospeed(3), and related constants. (thanks to
|
||
Max-Gerd Retzlaff)
|
||
* bug fix: two potential GC deadlocks affecting threaded builds.
|
||
* bug fix: (TYPEP #\A '(NOT (MEMBER #\" #\{ #\:))) now correctly
|
||
returns T (reported by Anton Kazennikov)
|
||
* bug fix: the STORE-VALUE restart of CHECK-TYPE works correctly
|
||
with non-variable places
|
||
* bug fix: remove a race condition in the setting of
|
||
funcallable-instance functions, this should make threaded CLOS
|
||
code more stable against memory faults.
|
||
* bug fix: corruption of specials when unbinding is interrupted by an
|
||
asynchronous unwind (reported by Hannu Koivisto)
|
||
* improvement: the debugger will now also display local variables that
|
||
are only used once, for code compiled with a DEBUG optimization quality
|
||
of 2 or higher.
|
||
|
||
changes in sbcl-0.9.17 (0.9.99?) relative to sbcl-0.9.16:
|
||
* feature: weak hash tables, see MAKE-HASH-TABLE documentation
|
||
* incompatible change: External-format support for FFI calls. The
|
||
SB-ALIEN:C-STRING no longer implies an ASCII
|
||
external-format. Instead the string is subject to external-format
|
||
conversion. Additionally return values of type SB-ALIEN:C-STRING
|
||
are by default of type (SIMPLE-ARRAY CHARACTER), not
|
||
SIMPLE-BASE-STRING. For an alien type that behaves like the old
|
||
SB-ALIEN:C-STRING type, use (SB-ALIEN:C-STRING :EXTERNAL-FORMAT
|
||
:ASCII :ELEMENT-TYPE BASE-CHAR). (thanks to Yaroslav Kavenchuk)
|
||
* incompatible change: SB-EXT package no longer contains the
|
||
following unused symbols: *GC-NOTIFY-AFTER*, *GC-NOTIFY-BEFORE*,
|
||
*GC-NOTIFY-STREAM*, *ERROR-PRINT-LENGTH*, *ERROR-PRINT-LEVEL*,
|
||
*ERROR-PRINT-LINES*
|
||
* incompatible change: the single-stepper is no longer available
|
||
on Alpha, Mips and Sparc platforms.
|
||
* minor incompatible change: the direct superclasses of
|
||
SB-MOP:FUNCALLABLE-STANDARD-OBJECT are (FUNCTION STANDARD-OBJECT),
|
||
not (STANDARD-OBJECT FUNCTION). This makes the
|
||
class-precedence-lists of GENERIC-FUNCTION and
|
||
STANDARD-GENERIC-FUNCTION comply with the requirement of ANSI
|
||
1.4.4.5.
|
||
* minor incompatible change: the default stream external format on
|
||
non-unicode SBCL is no longer detected from the locale, but is always
|
||
ISO-8859-1
|
||
* new feature: Add a version of evaluator that uses an interpreter instead
|
||
of the compiler. EVAL still uses the compiler by default, to switch it
|
||
to use the interpreter, set the value of the variable
|
||
SB-EXT:*EVALUATOR-MODE* to :INTERPRET.
|
||
* minor incompatible change: the single-stepper REPL has been merged
|
||
with the normal debugger (see the "Stepping" heading of the debugger help
|
||
for more details). The debugger command STEP will no longer switch
|
||
to the single-stepper REPL.
|
||
* bug fix: ENOUGH-NAMESTRING on pathnames with no name and a pattern
|
||
for a type now works.
|
||
* bug fix: loading of default sysinit file works. (thanks to Leonid
|
||
Slobodov)
|
||
* bug fix: better detection of circularities in the file-compiler.
|
||
(reported by Marco Monteiro)
|
||
* bug fix: the CL pathname functions now work with files that have
|
||
non-ASCII characters in their names (thanks to Yaroslav Kavenchuk)
|
||
* bug fix: The :PTY argument for RUN-PROGRAM will now work on
|
||
systems with Unix98 pty semantics.
|
||
* bug fix: ASDF-INSTALL will now work with bsd tar.
|
||
* bug fix: ASDF-INSTALL uses GNU tar on Solaris (thanks to Josip
|
||
Gracin).
|
||
* bug fix: timers expiring in dead threads no longer cause a
|
||
type-error (reported by Paul "Nonny Mouse").
|
||
* bug fix: thanks to more lightweight single-stepper instrumentation,
|
||
code compiled with (DEBUG 3) will compile and execute significantly faster,
|
||
and will have more accurate type-inferencing than before
|
||
* bug fix: SLOT-VALUE optimizations are no longer done on method parameters
|
||
whose bindings are modified
|
||
* improvements to the win32 port (thanks to Yaroslav Kavenchuk):
|
||
** bug fix: arguments to RUN-PROGRAM are escaped correctly
|
||
** replace dummy implementations of CL:MACHINE-INSTANCE and
|
||
CL:SOFTWARE-VERSION with proper version
|
||
|
||
changes in sbcl-0.9.16 relative to sbcl-0.9.15:
|
||
* feature: implemented the READER-METHOD-CLASS and
|
||
WRITER-METHOD-CLASS portion of the Class Initialization Protocol
|
||
as specified by AMOP.
|
||
* incompatible change: variable SB-EXT:*USE-IMPLEMENTATION-TYPES*
|
||
no longer exists.
|
||
* optimization: faster LOGCOUNT implementation on x86 and x86-64
|
||
(thanks to Lutz Euler)
|
||
* optimization: hashing of general arrays and vectors has been
|
||
improved. (reported by Any Fingerhut)
|
||
* enhancement: SB-INTROSPECT is now able to find definitions of
|
||
profiled functions. (thanks to Troels Henriksen)
|
||
* enhancement: compiler-macro expansion applies now to FUNCALL forms
|
||
as well, allowing compiler-macros for SETF-functions to expand.
|
||
* enhancement: step-instrumentation no longer wraps known
|
||
single-value functions with multiple-value context, allowing
|
||
better type inference.
|
||
* fixed bug #337: use of MAKE-METHOD in method combination now works
|
||
even in the presence of user-defined method classes. (reported by
|
||
Bruno Haible and Pascal Costanza)
|
||
* fixed bug #339(c): if there are applicable methods not part of any
|
||
long-form method-combination group, call INVALID-METHOD-ERROR.
|
||
(reported by Bruno Haible)
|
||
* fixed bug #361: the :FUNCTION initarg in the protocol for
|
||
initialization of methods can now be used to override
|
||
internally-produced optimized functions. (reported by Bruno
|
||
Haible)
|
||
* bug fix: extensions of MAKE-METHOD-LAMBDA which wrap the
|
||
system-provided lambda expression no longer cause warnings about
|
||
unbound #:|pv-table| symbols.
|
||
* bug fix: improved the handling of type declarations and the
|
||
detection of violations for keyword arguments with non-constant
|
||
defaults.
|
||
* bug fix: potentially erronous calls to PATHNAME and
|
||
MERGE-PATHNAMES were being flushed in some cases.
|
||
(reported by Richard Kreuter)
|
||
* bug fix: compiled calls to TYPEP were mishandling obsolete
|
||
instances. (reported by James Bielman and Attila Lendvai)
|
||
* bug fix: format strings with ~> without matching ~< no longer
|
||
trigger an AVER, but signal an understandable error instead.
|
||
(reported by Antonio Martinez)
|
||
* bug fix: specifying an output-file without a pathname-type for
|
||
COMPILE-FILE or COMPILE-FILE-PATHNAME resulted in using the type
|
||
of input-file instead of "fasl". (reported by Robert Dodier)
|
||
* bug fix: compiler-macro lambda-list parsing of FUNCALL forms.
|
||
(reported by James Y Knight).
|
||
* bug fix: compiler-macros-function did not consider the environment
|
||
argument for shadowing by local functions.
|
||
* bug fix: compiler-macros expansion was inhibited by local INLINE
|
||
declarations.
|
||
* bug fix: inline expansions of known functions were subject to
|
||
step-instrumentation in high debug policies, leading to problems
|
||
with type-inference.
|
||
* bug fix: compiler failed to differentiate between different CONS
|
||
types in some cases.
|
||
* bug fix: fixed input, output and error redirection in RUN-PROGRAM
|
||
for win32. (thanks to Mike Thomas and Yaroslav Kavenchuk)
|
||
* bug fix: #368: incorrect use of expressed vs. upgraded array
|
||
element type.
|
||
* bug fix: #306a: more precise unions of array types.
|
||
* thread-safety improvements:
|
||
** CONDITION-WAIT could return early on Linux, if the thread was
|
||
interrupted and subsequently continued with SIGCONT.
|
||
** STABLE-SORT and ADJUST-ARRAY were not reentrant.
|
||
|
||
changes in sbcl-0.9.15 relative to sbcl-0.9.14:
|
||
* added support for the ucs-2 external format. (contributed by Ivan
|
||
Boldyrev)
|
||
* minor incompatible change: pretty printing of objects of type
|
||
(cons symbol) is, in the default pprint-dispatch-table, now
|
||
sensitive to whether the symbol satisfies FBOUNDP. (thanks to
|
||
Marcus Pearce)
|
||
* minor incompatible change: SB-MOP:FINALIZE-INHERITANCE is now
|
||
called later in a class's lifetime, possibly as late as when the
|
||
first instance of the class is created. Previously,
|
||
SB-MOP:FINALIZE-INHERITANCE was called by the system as soon as a
|
||
class became finalizeable.
|
||
* fixed bug: FILE-POSITION sometimes returned inconsistent results
|
||
for multibyte external-format streams. (thanks to "vbzoli")
|
||
* fixed bug: CHANGE-CLASS would fail to preserve the values of slots
|
||
with :ALLOCATION :CLASS inherited from superclasses of the
|
||
original class.
|
||
* fixed bug: anonymous classes can now be created using the :NAME
|
||
initarg and MAKE-INSTANCE / REINITIALIZE-INSTANCE, as specified by
|
||
AMOP. (reported by Leonid Slobodov on comp.lang.lisp)
|
||
* fixed bug: core-files saved with :EXECUTABLE T can again be
|
||
executed when SBCL_HOME isn't set. (reported by James Knight)
|
||
* fixed bug: toplevel LOCALLY forms with declarations could
|
||
occasionally get miscompiled. (reported by Yaroslav Kavenchuk)
|
||
* fixed bug: printing from several different threads using different
|
||
values of *print-case* could cause invalid output, due to
|
||
some internal special variables of the printer not being bound
|
||
thread-locally (reported by Max Mikhanosha)
|
||
* fixed bug: SPECIALIZER metaobjects (including anonymous classes
|
||
and EQL-SPECIALIZERs) can be used as specializers to DEFMETHOD.
|
||
(reported by Pascal Costanza)
|
||
* fixed bug: FINALIZE-INHERITANCE is called from
|
||
REINITIALIZE-INSTANCE on classes when the class has previously
|
||
been finalized, as required by AMOP.
|
||
* minor code generation optimizations:
|
||
** better register allocation in CLOS dispatching functions
|
||
** overflow detection when coercing signed bytes to fixnums on x86-64
|
||
** is now implemented with one IMUL instruction instead of three shifts
|
||
** more efficient bit-vector access on x86 and x86-64
|
||
** more efficient access to raw structure slots on x86 and x86-64
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** ENSURE-DIRECTORIES-EXIST.8: ENSURE-DIRECTORIES-EXIST must
|
||
return its argument.
|
||
|
||
changes in sbcl-0.9.14 relative to sbcl-0.9.13:
|
||
* feature: thread support on Solaris/x86, and experimental thread support
|
||
on OS X/x86.
|
||
* feature: SBCL now tries to signal a STORAGE-CONDITION when running out
|
||
of heap.
|
||
* feature: SBCL now provides USE-VALUE and STORE-VALUE restarts in the
|
||
default method for SLOT-UNBOUND.
|
||
* minor incompatible change: prevent the user from specializing the
|
||
new-value argument to SB-MOP:SLOT-VALUE-USING-CLASS. It's
|
||
somewhat counter to the intent of the protocol, I (CSR) think, and
|
||
additionally it just doesn't work in SBCL as currently
|
||
implemented, thanks to optimizations (that are always valid for
|
||
the other three SLOT-VALUEish functions, but not for the setter).
|
||
* minor incompatible change: the :SB-LDB feature is now enabled by
|
||
default, and DISABLE-DEBUGGER and ENABLE-DEBUGGER also affect
|
||
the low-level debugger.
|
||
* enchancement: RUN-PROGRAM is now able to extract the file-descriptor
|
||
from SYNONYM-STREAM and TWO-WAY-STREAM provided they can be decomposed
|
||
down to an SB-SYS:FD-STREAM, allowing direct communication in
|
||
more cases. Temporary files and pipes are still used as a fallback
|
||
strategy.
|
||
* thread-safety: DECODE-UNIVERSAL-TIME & GET-DECODED-TIME depended
|
||
on the non-reentrant C functions localtime(3) and gmtime(3).
|
||
* bug fix: global optimization policy was not visible in LOCALLY and
|
||
MACROLET forms.
|
||
* bug fix: class objects can be used as specializers in methods.
|
||
(reported by Pascal Costanza)
|
||
* bug fix: native unparsing of pathnames with :DIRECTORY NIL failed
|
||
with a type error. (reported by blitz_ on #lisp)
|
||
* bug fix: unparsing logical pathnames with :NAME :WILD :TYPE NIL
|
||
failed with a type error. (reported by Pascal Bourguignon)
|
||
* bug fix: merging pathnames against defaults with :DIRECTORY
|
||
starting with '(:RELATIVE :BACK) should preserve the :BACK.
|
||
(reported by James Y Knight)
|
||
* bug fix: saving large (>2GB) cores on x86-64 now works
|
||
* bug fix: a x86-64 backend bug when compiling (setf aref) with a
|
||
constant index and a (simple-array (signed-byte 32)) array
|
||
* bug fix: NAME-CHAR on an invalid symbol no longer signals an
|
||
error (patch by Robert J. Macomber)
|
||
* feature: TIME now displays the amount of run-time spent in GC
|
||
* bug fix: The debugger now does a better job of respecting
|
||
(PUSH '(*PRINT-CIRCLE* . T) SB-DEBUG:*DEBUG-PRINT-VARIABLE-ALIST*)
|
||
when printing SB-DEBUG:*DEBUG-CONDITION*. (This is a debugger-only
|
||
workaround for bug 403.)
|
||
* bug fix: floating point exception handling now works on FreeBSD
|
||
(thanks to NIIMI Satoshi)
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** MISC.641: LET-conversion were not supposed to work in late
|
||
compilation stages.
|
||
* improvements to the Win32/x86 port:
|
||
** GET-INTERNAL-RUN-TIME implemented, thanks to Frank Buss.
|
||
** improved SB-BSD-SOCKETS support, thanks to Timothy Ritchey.
|
||
|
||
changes in sbcl-0.9.13 relative to sbcl-0.9.12:
|
||
* new feature: source path information is generated for macro-expansion
|
||
errors for use in IDE's like Slime (thanks to Helmut Eller)
|
||
* bug fix: calls to the compiler no longer modify *RANDOM-STATE*
|
||
* bug fix: compiler does not loop forever on an invalid type in
|
||
TYPEP.
|
||
* improvement: compilation of most CLOS applications is significantly
|
||
faster
|
||
* optimization: added a limited bytecode compiler for simple toplevel
|
||
forms, speeding up compilation and FASL loading
|
||
* bug fix: the statistical profiler now properly distinguishes anonymous
|
||
functions
|
||
|
||
changes in sbcl-0.9.12 relative to sbcl-0.9.11:
|
||
* minor incompatible change: in sbcl-0.9.11 (but not earlier
|
||
versions) SB-MOP:FINALIZE-INHERITANCE would recursively descend
|
||
into subclasses of the finalized class. Now user calls to
|
||
FINALIZE-INHERITANCE finalize just the one class, and calls by the
|
||
system return before any subclasses are finalized.
|
||
* minor incompatible change: The reader no longer ignores errors
|
||
regarding non-existent packages in #+ and #- feature tests.
|
||
* new feature: command line options --no-sysinit, --no-userinit to
|
||
inhibit loading the corresponding init files
|
||
* new feature: add a generic function SOCKET-SEND to SB-BSD-SOCKETS,
|
||
for sending data through UDP sockets (thanks to François-René Rideau)
|
||
* minor incompatible change: SIGPIPE is ignored and "Broken pipe"
|
||
error is signalled instead (thanks to François-René Rideau)
|
||
* minor incompatible change: Error signalling behaviour of lexical
|
||
operations violating package locks has changed slightly. Refer to
|
||
documentation on package locks for details.
|
||
* enhancement: EVAL can process IF-expressions without resorting to the
|
||
compiler.
|
||
* bug fix: Some operations involving SIN, COS, or TAN weren't being
|
||
constant-folded properly due to missing out-of-line functions.
|
||
(reported by Mika Pihlajamäki)
|
||
* bug fix: LISTEN sometimes returned T even in cases where no data was
|
||
immediately available from the stream
|
||
* fixed bug: types of the last two arguments to SET-SYNTAX-FROM-CHAR
|
||
were reversed. (reported by Levente Mészáros)
|
||
* fixed bug: Tests for the (VECTOR T) type gave the wrong answer
|
||
when given a vector displaced to an adjustable array. (reported
|
||
by Utz-Uwe Haus)
|
||
* bug fix: derivation of float boundaries from numbers outside the
|
||
appropriate float range (reported by John Wiseman)
|
||
* bug fix: MAKE-LOAD-FORM-SAVING-SLOTS accepts en empty slot name
|
||
list.
|
||
* bug fix: precomputing cache entries for generic functions with
|
||
some subclasses of specializers as yet invalid does not attempt to
|
||
fill a cache line with a negative offset. (reported by Levente
|
||
Mészároz)
|
||
* improvements to DOCUMENTATION for TYPE and STRUCTURE doc-types:
|
||
allow condition class objects as arguments to DOCUMENTATION and
|
||
(SETF DOCUMENTATION); only find and set documentation for
|
||
structure names for the STRUCTURE doc-type. (suggested by Gary
|
||
King)
|
||
* improvements to the Win32/x86 port:
|
||
** (user-homedir-pathname) and default initialization file
|
||
locations now know about the user's "Documents and Settings"
|
||
directory (thanks to Yaroslav Kavenchuk)
|
||
** run-program is implemented (thanks to Mike Thomas)
|
||
** sockets support (thanks to Timothy Ritchey)
|
||
** better backtrace support (thanks to Alastair Bridgewater)
|
||
** sb-grovel supported
|
||
** asdf-install and sb-posix work somewhat
|
||
** capable of running Slime using SWANK:*COMMUNICATION-STYLE* NIL
|
||
* improvements to the Solaris/x86 port:
|
||
** works on Solaris 11/Solaris Express
|
||
** floating-point exception handling support
|
||
** support for the breakpoint-based TRACE :ENCAPSULATE NIL facility
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** REMOVE-METHOD returns its generic function argument even when
|
||
the method is not one of the generic functions' methods.
|
||
** objects declared as MEMBER types can be admissible arguments to
|
||
structure accessors.
|
||
** printing characters should simply be printed by the FORMAT ~:C
|
||
directive.
|
||
** compiler failure when compiling functions with hairy constant
|
||
defaults for optional parameters.
|
||
** compiler produces wrong code when MAYBE-INLINE-expanding a
|
||
function, which is already optimized.
|
||
|
||
changes in sbcl-0.9.11 relative to sbcl-0.9.10:
|
||
* new platform: experimental support for SBCL x86/Darwin, including
|
||
MacOS X 10.4.5 on Intel.
|
||
* new feature: Unicode character names are now known to the system
|
||
(through CHAR-NAME and NAME-CHAR).
|
||
* new feature: the filesystem location of SBCL's core file is
|
||
exposed to lisp through the variable SB-EXT:*CORE-PATHNAME*.
|
||
* minor incompatible change: the contrib modules SB-POSIX and
|
||
SB-BSD-SOCKETS no longer depend on stub C libraries; the intent of
|
||
this change is to make it easier to distribute
|
||
location-independent binaries.
|
||
* bug fix: as implied by AMOP, standardized classes no longer have
|
||
slots named by external symbols of public packages. (reported by
|
||
Pascal Costanza)
|
||
* optimization: calling functions via constant symbols -- as in
|
||
(FUNCALL 'FOO) -- is now roughly as efficient as calling them
|
||
via the function object as in (FUNCALL #'FOO).
|
||
* optimization: on x86 and x86-64, the calling convention for the
|
||
case of dealing with an unknown number of values has been altered
|
||
to be friendlier to the prediction heuristics implemented,
|
||
particularly with reference to CALL and RET pairing. (thanks to
|
||
Alastair Bridgewater)
|
||
* optimization: on x86, the code for access to thread-local symbol
|
||
values and binding/unbinding of thread-local symbols is smaller.
|
||
(thanks to Alastair Bridgewater)
|
||
* enhancement: CONSTANTP is now able to determine constantness of
|
||
more complex forms, including calls to constant-foldable standardized
|
||
functions and some special forms beyond QUOTE.
|
||
* fixed bug: occasional GC crashes on Solaris/x86
|
||
* optimization: x86-64 supports stack allocation of results of simple
|
||
calls of MAKE-ARRAY, bound to variables, declared DYNAMIC-EXTENT
|
||
* enchancement: the PROCESS-INPUT and -OUTPUT streams created by
|
||
SB-EXT:RUN-PROGRAM can be used for both character and byte IO
|
||
(thanks to James Knight)
|
||
* fixed bug: CL:LISTEN always returns NIL at end of file, as required
|
||
by the standard (thanks to Stephen Compall)
|
||
|
||
changes in sbcl-0.9.10 relative to sbcl-0.9.9:
|
||
* new feature: new SAVE-LISP-AND-DIE keyword argument :EXECUTABLE can
|
||
be used for bundling the runtime and the core file into one
|
||
executable binary. This feature is not currently supported on all SBCL
|
||
platforms. (thanks to James Bielman and NIIMI Satoshi)
|
||
* new feature: a generational or ephemeral garbage collector is now
|
||
the default on the PowerPC platform (both Linux and Darwin). The
|
||
old Cheney (stop and copy) collector is a build-time option.
|
||
(thanks to Cyrus Harmon, after Raymond Toy)
|
||
* minor incompatible change: the method by which SBCL finds its
|
||
contributed modules has changed; it no longer relies on symbolic
|
||
links from an $SBCL_HOME/systems directory, but searches directly
|
||
in the subdirectories of $SBCL_HOME.
|
||
* enhancement: the dynamic heap size on the Linux/PPC platform is
|
||
markedly larger, even using the older Cheney garbage collector.
|
||
* fixed bug #399: full call to DATA-VECTOR-REF in accesses to
|
||
certain complicated string types. (reported by Gary King)
|
||
* fixed bug: STRING-TO-OCTETS and OCTETS-TO-STRING did not convert
|
||
character codes. (thanks to Yaroslav Kavenchuk and Ivan Boldyrev)
|
||
* fixed bug: DOCUMENTATION on structures no longer signals an
|
||
error if no structure type of the right name exists. (reported by
|
||
Glenn Ehrlich)
|
||
* fixed bug: compiled calls to MAKE-INSTANCE where there is an
|
||
applicable non-standard primary or :AROUND method on
|
||
INITIALIZE-INSTANCE or SHARED-INITIALIZE and a non-keyword initarg
|
||
no longer cause unbound variable errors. (reported by Kevin Reid)
|
||
* fixed bug: metacircle resolution in cases where methods have slots
|
||
added before the slots from STANDARD-METHOD. (reported by Jean
|
||
Bresson)
|
||
* fixed bug: the Power PC assembly code for calling into lisp
|
||
sometimes computed its return address wrongly (depending on the
|
||
15th bit of the address, fixed at link time). This used to
|
||
manifest itself in a segmentation violation while building PCL.
|
||
(reported by Kevin Rosenberg, Eric Marsden, Lars Brinkhoff and
|
||
many others over the years)
|
||
* fixed bug: ROOM no longer reports silly numbers for stack usage if
|
||
the stack pointer (treated as a signed integer) is negative.
|
||
(thanks to Peter van Eynde)
|
||
|
||
changes in sbcl-0.9.9 relative to sbcl-0.9.8:
|
||
* new platform: experimental support for the Windows operating
|
||
system has been added. (thanks to Alastair Bridgewater)
|
||
* fixed several bugs in and robustified the PPC FFI (including
|
||
callbacks). (thanks to Cyrus Harmon and Heiner Schwarte)
|
||
* bug fix: allow non-simple string symbol names (reported by Paul
|
||
Dietz)
|
||
* bug fix: interrupt handling on NetBSD (thanks to Richard M
|
||
Kreuter)
|
||
* bug fix: saving a core corrupted callbacks on x86/x86-64
|
||
* bug fix: closed a loophole in metacircularity detection and
|
||
grounding in the PCL implementation of CLOS.
|
||
* bug fix: TRUENAME on "/" no longer returns a relative pathname.
|
||
(reported by tomppa on #lisp)
|
||
* bug fix: clear the direction flag on Lisp -> C transitions, as
|
||
required by the x86-64 ABI. Fixes mysterious GC crashes on SuSE.
|
||
(reported by Andrej Grozin and Hendrik Maryns)
|
||
* optimization: major improvements to GC efficiency on GENCGC platforms
|
||
* optimization: faster implementation of EQUAL
|
||
* optimization: emit more efficient opcodes for some common
|
||
immediate->register MOV instructions on x86-64. (thanks to Lutz Euler)
|
||
* optimization: several other minor code-generation improvements on x86-64
|
||
* fixed segfaults on x86 FreeBSD 7-current. (thanks to NIIMI Satoshi)
|
||
|
||
changes in sbcl-0.9.8 relative to sbcl-0.9.7:
|
||
* minor incompatible change: (SETF CLASS-NAME) and (SETF
|
||
GENERIC-FUNCTION-NAME) are generic functions once more (reverting
|
||
the change in the 0.9.7 release). (SETF CLASS-NAME) is specified
|
||
by ANSI as a generic function, and for consistency (SETF
|
||
GENERIC-FUNCTION-NAME) is treated likewise.
|
||
* fixed bug #233.b: make constraint propagation notice when a variable
|
||
value is changed after it is referenced but before it is used
|
||
* fixed bug #296: no more arbitrary behaviour from filenames with
|
||
odd characters as --load arguments. (reported by Adam Warner)
|
||
* fixed bug #390: :CHARACTER-SET pathname components now work as
|
||
expected. (reported by Tim Daly Jr)
|
||
* fixed bug #391: complicated :TYPE intersections in slot
|
||
definitions no longer cause an error in PCL internals.
|
||
* fixed bug #392: plugged a hole in the obsolete-instance protocol.
|
||
* bug fix: FILE-STRING-LENGTH is now external-format sensitive,
|
||
returning the number of octets which would be written to the
|
||
file-stream. (thanks to Robert J. Macomber)
|
||
* bug fix: the SB-SIMPLE-STREAMS contrib passes external-format
|
||
arguments to the internal stream functions. (thanks to David
|
||
Lichteblau)
|
||
* bug fix: stack exhaustion is now handled on the x86/SunOS
|
||
platform. (thanks to Daisuke Homma)
|
||
* bug fix: more accurate ROOM results on GENCGC platforms
|
||
* optimization: improved type inference for arithmetic-for
|
||
index variables in LOOP
|
||
* optimization: faster floating-point SQRT on x86-64
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** DOCUMENTATION returns NIL instead of "" for method combinations
|
||
that don't have a docstring
|
||
|
||
changes in sbcl-0.9.7 relative to sbcl-0.9.6:
|
||
* minor incompatible change: (SETF CLASS-NAME) and (SETF
|
||
GENERIC-FUNCTION-NAME) are no longer generic functions, and
|
||
therefore are not customizeable by user code (as seems to be at
|
||
least permitted and maybe required by AMOP). As a consolation,
|
||
however, the SBCL implementation of these functions now calls
|
||
REINITIALIZE-INSTANCE as specified by AMOP.
|
||
* bug fix: slot-definition documentation is propagated as per ANSI
|
||
7.6.2 to EFFECTIVE-SLOT-DEFINITIONS.
|
||
COMPUTE-EFFECTIVE-SLOT-DEFINITION now receives a :DOCUMENTATION
|
||
argument, as do eslotd initialization methods. (from Pascal
|
||
Costanza's "Closer" project)
|
||
* bug fix: REINITIALIZE-INSTANCE on generic functions calls
|
||
COMPUTE-DISCRIMINATING-FUNCTION (almost) unconditionally, as
|
||
specified by AMOP.
|
||
* bug fix: it is now possible to have more than one subclass of
|
||
STANDARD-GENERIC-FUNCTION without causing stack overflow.
|
||
(reported by Bruno Haible, Pascal Costanza and others)
|
||
* bug fix: the dependent update protocol now works for generic
|
||
functions. (thanks to Gerd Moellmann; reported by Bruno Haible
|
||
and Pascal Costanza)
|
||
* bug fix: condition-class instances corresponding to
|
||
DEFINE-CONDITION forms are now created eagerly. (reported by
|
||
Kalle Olavi Niemitalo on comp.lang.lisp)
|
||
* bug fix: floating point printing is more accurate in some
|
||
circumstances. (thanks to Simon Alexander)
|
||
* bug fix: *COMPILE-FILE-PATHNAME* now contains the user's pathname
|
||
merged with *DEFAULT-PATHNAME-DEFAULTS*.
|
||
* bug fix: callbacks on OS X now preserve stack-alignment.
|
||
(thanks to Cyrus Harmon)
|
||
* enhancement: the x86-64 disassembler is much better at
|
||
disassembling SSE instructions. (thanks to Lutz Euler)
|
||
* enhancement: CHECK-TYPE on a variable now allows type-inference
|
||
(thanks to Vincent Arkesteijn)
|
||
* optimization: improved performance of EUC-JP external format.
|
||
(thanks to NIIMI Satoshi)
|
||
* optimization: performance improvements to IO on file streams of
|
||
:ELEMENT-TYPE CHARACTER
|
||
* optimization: much faster memory allocation on x86-64
|
||
* optimization: faster garbage collections (latency and throughput)
|
||
on gencgc
|
||
* optimization: faster bignum subtraction and division on x86 and x86-64
|
||
(thanks to Lutz Euler)
|
||
* optimization: more accurate type-inference for loops that use a
|
||
floating point index variable or a negative step.
|
||
|
||
changes in sbcl-0.9.6 relative to sbcl-0.9.5:
|
||
* bug fix: add a workaround to SBCL looping infinitely at startup on
|
||
Linux kernels with apparently buggy implementations of personality().
|
||
(thanks to Svein Ove Aas)
|
||
* bug fix: Unicode symbols are correctly printed in LDB backtraces
|
||
(thanks to David Lichteblau)
|
||
* bug fix: local bindings shadow global symbol macros for
|
||
macroexpansion. (reported by Matthew D Swank on comp.lang.lisp)
|
||
* optimization: non-open coded uses of numeric comparison operators
|
||
(e.g. >) no longer cons when called with more than one parameter
|
||
on platforms supporting dynamic-extent allocation.
|
||
* enhancement: saving cores with foreign code loaded is now supported
|
||
on MIPS/Linux in addition to the previously supported platforms.
|
||
* bug fix: FIND-RESTART now tests for activity, not applicability when given
|
||
a restart object as identifier. (reported by Helmut Eller for CMUCL)
|
||
* bug fix: division by zero in sb-sprof when no samples were collected
|
||
* bug fix: a race when a slow to arrive sigprof signal killed sbcl
|
||
* bug fix: asdf-install uses CRLF as required by the HTTP spec.
|
||
(thanks to Alexander Kjeldaas)
|
||
* new feature: ignoring the return values of destructive functions
|
||
like NREVERSE signals a compile-time style-warning.
|
||
(thanks to Kevin Reid)
|
||
* new feature: the alignment of alien structure fields can be
|
||
explicitly specified. (thanks to Cyrus Harmon)
|
||
* bug fix: run cleanup forms (in all threads) when receiving a SIGTERM
|
||
and dump core on SIGQUIT
|
||
* threads
|
||
** incompatible change: threads do not inherit values of specials
|
||
from their parents (see manual)
|
||
** bug fix: threads stacks belonging to dead threads are freed by the
|
||
next exiting thread, no need to gc to collect thread stacks anymore
|
||
** minor incompatible change: INTERRUPT-THREAD-ERROR-ERRNO removed
|
||
** WITH-RECURSIVE-LOCK can be nested in a WITH-MUTEX for the same lock
|
||
** bug fix: dynamic variable and thread start related gc lossage
|
||
** bug fix: job control (SIGSTOP/SIGCONT) no longer confuses threads
|
||
suspended for gc
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** SUBTYPEP is slightly more accurate on heinously complicated
|
||
CONS types where some of the members have uncertain (in the
|
||
NIL, NIL sense) type relationships to each other.
|
||
* GENCGC
|
||
** Cores produced by SAVE-LISP-AND-DIE on GENCGC platforms are
|
||
no longer purified unless :PURIFY T is explicitly specified.
|
||
** Non-purified cores are significantly smaller than before
|
||
|
||
changes in sbcl-0.9.5 relative to sbcl-0.9.4:
|
||
* new feature: timers based on Zach Beane's excellent timer package
|
||
* added support for the following external formats: koi8-u,
|
||
x-mac-cyrillic, cp437, cp850, cp852, cp855, cp857, cp860, cp861,
|
||
cp862, cp863, cp864, cp865, cp866, cp869, cp874, iso-8859-2,
|
||
iso-8859-3, iso-8859-4, iso-8859-5, iso-8859-6, iso-8859-7,
|
||
iso-8859-8, iso-8859-9, iso-8859-10, iso-8859-11, iso-8859-13,
|
||
iso-8859-14, cp1250, cp1251, cp1252, cp1253, cp1254,
|
||
cp1255,cp1256, cp1257, cp1258 (contributed by Ivan Boldyrev)
|
||
* incompatible change: a threaded SBCL will no longer revert to
|
||
non-threaded mode on non-NPTL systems, but refuse to start entirely.
|
||
* bug fix: interrupts are disabled until startup is complete; no
|
||
more sigsegvs when receiving a signal to soon
|
||
* optimization: faster 32-bit SB-ROTATE-BYTE:ROTATE-BYTE on non-x86/ppc
|
||
platforms
|
||
* bug fix: add a workaround for the memory randomization features in
|
||
Linux kernels >= 2.6.12 that interfere with SBCL's memory maps. This
|
||
workaround will only be in effect on systems with the proc filesystem
|
||
mounted.
|
||
* bug fix: printing objects of type HASH-TABLE signals a
|
||
PRINT-NOT-READABLE error when *READ-EVAL* is NIL. (reported by
|
||
Faré Rideau)
|
||
* bug fix: GET-INTERNAL-REAL-TIME now works even for processes that
|
||
have been running for over 50 days. (reported by Gilbert Baumann)
|
||
* bug fix: the logic for getting names of functions gets less
|
||
confused when confronded with alternate-metaclass
|
||
funcallable-instances. (reported by Cyrus Harmon)
|
||
* bug fix: FUNCTIONP and (LAMBDA (X) (TYPEP X 'FUNCTION)) are now
|
||
consistent, even on internal alternate-metaclass objects.
|
||
* bug fix: flush closure information collected by physical
|
||
environment analysis prepass before the main pass. (bug reported
|
||
by Vasile Rotaru)
|
||
* bug fix: compiler pack phase does not modify a hashtable, which is
|
||
iterated. (reported by Bryan O'Connor, fixed by Rob MacLachlan)
|
||
* bug fix: backquote does not optimize (LIST* x y) to CONS when x
|
||
may be expanded. (reported by Alexander <malishev> on c.l.l)
|
||
* bug fix: no more style-warnings when compiling code using LAST
|
||
under high-SPEED low-SPACE settings. (reported by David Wallin
|
||
aka froog on #lisp)
|
||
* fixed some incompatibilities between SBCL's MOP and the MOP
|
||
specified by AMOP:
|
||
** the METAOBJECT class is now implemented;
|
||
** FUNCALLABLE-STANDARD-OBJECT is now a subclass of
|
||
STANDARD-OBJECT, as required;
|
||
** the classes STANDARD-CLASS and FUNCALLABLE-STANDARD-CLASS are
|
||
now compatible (as required by VALIDATE-SUPERCLASS); there
|
||
remains a consistency requirement over the presence or absence
|
||
of the FUNCTION class in the superclass list of finalized
|
||
classes; see the manual for more details;
|
||
** the :AROUND method for COMPUTE-SLOTS on
|
||
FUNCALLABLE-STANDARD-CLASS now honours the primary method's
|
||
requested slot ordering.
|
||
* threads
|
||
** bug fix: parent thread now can be gc'ed even with a live
|
||
child thread
|
||
** bug fix: binding a special with PROGV to no value is not
|
||
the same as that symbol not having been bound (thanks to
|
||
Hannu Koivisto)
|
||
** bug fix: binding specials is thread safe (thanks to
|
||
Hannu Koivisto)
|
||
** bug fix: interrupt handlers are now per-process, RUN-PROGRAM
|
||
and SB-SPROF do not die with 'no handler for signal XX in
|
||
interrupt_handle_now(..)' anymore
|
||
** bug fix: WITH-TIMEOUT works with multiple running threads
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** ENSURE-GENERIC-FUNCTION should take a method class object for
|
||
the :method-class keyword argument.
|
||
|
||
changes in sbcl-0.9.4 relative to sbcl-0.9.3:
|
||
* new port: the Solaris operating system on x86 processors is now
|
||
mostly supported, though some rough edges in the environment
|
||
remain. (thanks to Daisuke Homma)
|
||
* enhancement: SBCL on MIPS platforms now has a much larger dynamic
|
||
space for its heap. (thanks to Thiemo Seufer)
|
||
* optimization: SBCL on MIPS platforms now supports dynamic-extent
|
||
closures. (thanks to Thiemo Seufer)
|
||
* minor incompatible change: eof selects abort in the debugger.
|
||
* minor incompatible change: *INVOKE-DEBUGGER-HOOK* is run before
|
||
*DEBUGGER-HOOK* => *DEBUGGER-HOOK* is not run when the debugger
|
||
is disabled.
|
||
* minor incompatible change: SB-KERNEL:INSTANCE-LAMBDA is
|
||
deprecated, and will go away in a future revision of SBCL.
|
||
* minor incompatible change: GC-ON and GC-OFF are no longer
|
||
implemented with a counter, it does not matter how many times gc
|
||
is switched on or off
|
||
* bug fix: discriminating functions for generic function classes
|
||
with non-standard methods for COMPUTE-APPLICABLE-METHODS no longer
|
||
make invalid assumptions about method precedence order. (reported
|
||
by Bruno Haible)
|
||
* bug fix: TRUNCATE now correctly signals division by zero on MIPS
|
||
platforms. (thanks to Thiemo Seufer)
|
||
* bug fix: degree sign (<U00B0>) could not be encoded in KOI8-R.
|
||
* bug fix: correct pathname printing with printer escaping is on.
|
||
(thanks to Kevin Reid)
|
||
* bug fix: complex VOP definitions in "user-space" no longer trigger
|
||
package locks. (reported by Zach Beane)
|
||
* fixed bug 343: SB-KERNEL:INSTANCE-LAMBDA is no longer necessary
|
||
for funcallable-instance functions, and is no different from
|
||
regular LAMBDA.
|
||
* bug fix: PARSE-INTEGER no longer depends on the whitespaceness of
|
||
characters in the current readtable. (reported by Nicholas Neuss)
|
||
* bug fix: SUBTYPEP on various CONS types returns more a more
|
||
accurate acknowledgment of its certainty.
|
||
* optimizations: REMOVE-DUPLICATES now runs in linear time on
|
||
lists in some cases. This partially fixes bug 384.
|
||
* flush all standard streams before prompting in the REPL and the
|
||
debugger.
|
||
* bug fix: signal handling and triggering gc do not conflict
|
||
directly anymore, in particular a high frequency sb-sprof does
|
||
not prevent gc from running
|
||
* bug fix: DECODE-UNIVERSAL-TIME now uses a more reasonable
|
||
approximation for timezone and DST information between the
|
||
universal time epoch and the smallest negative 32-bit time_t.
|
||
* bug fix: ENCODE-UNIVERSAL-TIME no longer errors when passed the
|
||
year 1899 so long as the encoded time is non-negative.
|
||
* bug fix: on the x86 platform, SB-ROTATE-BYTE:ROTATE-BYTE returns
|
||
the correct answer for non-constant rotate amounts when performing
|
||
an inline 32-bit rotation.
|
||
* threads
|
||
** bug fix: RELEASE-FOREGROUND doesn't choke on session lock if
|
||
there is only one thread in the session
|
||
** bug fix: memory leak for streams created in one thread and
|
||
written to in another
|
||
** bug fix: lockup when compiled with gcc4
|
||
** bug fix: race that allows the gc to be triggered when gc is
|
||
inhibited
|
||
** bug fix: one less memory fault in INTERRUPT-THREAD, again
|
||
** bug fix: gc and INTERRUPT-THREAD don't hang when the RT signal
|
||
queue is full
|
||
** bug fix: finished threads are gc'ed properly
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** CALL-NEXT-METHOD signals an error (in safe code) when the call
|
||
has arguments with a different set of applicable methods from
|
||
the orignal arguments.
|
||
** The type error thrown by MAP now has a correct expected-type
|
||
cell.
|
||
** DISASSEMBLE now throws a TYPE-ERROR when its argument does not
|
||
name a compiled function.
|
||
** Three MISC tests where a large bignum was improperly coerced to
|
||
a float that couldn't represent that bignum during type
|
||
derivation were fixed.
|
||
** SUBTYPEP can now handle types involving the negation of a
|
||
list-form FUNCTION type.
|
||
** SUBTYPEP also now handles certain COMPLEX type specifiers such
|
||
as (COMPLEX (AND RATIO (NOT FIXNUM))).
|
||
** READ-BYTE and WRITE-BYTE no longer take stream designators.
|
||
|
||
changes in sbcl-0.9.3 relative to sbcl-0.9.2:
|
||
* New feature: Experimental support for bivalent streams: streams
|
||
opened with :element-type :default now allow character and binary
|
||
(unsigned-byte 8) I/O
|
||
* Support for the koi8-r external format. (thanks to Ivan Boldyrev)
|
||
* Bug fix: OPEN no longer fails when *PRINT-READABLY* is T. (thanks
|
||
to Zach Beane)
|
||
* bug fix: no more highly sporadic "couldn't check whether ~S is
|
||
readable" when reading a stream and an interrupt hits in the middle
|
||
of a select system call
|
||
* compiler better recognizes complex arrays (reported by Eduardo
|
||
Muñoz)
|
||
* bug fix: out-of-line SB-SYS:FOREIGN-SYMBOL-ADDRESS did not work
|
||
for variables on SBCL built with linkage-tables. (reported by Luis
|
||
Oliveira)
|
||
* various error reporting improvements.
|
||
* optimizations: LOGNOR on fixnums is improved in the MIPS backend.
|
||
(Thanks to Thiemo Seufer)
|
||
* bug fix: nested reader invokations work correctly
|
||
* bug fix: it is possible to have simultaneous references to foreign
|
||
code and foreign data with the same name.
|
||
* threads
|
||
** added x86-64 support
|
||
** incompatible change: the threading api now works with thread
|
||
objects instead of thread ids
|
||
** bug fix: threads are protected from signals and interruption when
|
||
starting up or going down
|
||
** bug fix: a race where an exiting thread could lose its stack to gc
|
||
** bug fix: don't halt on infinite error in threads if possible
|
||
** fixed numerous gc deadlocks introduced in the pthread merge
|
||
** bug fix: fixed thread safety issues in read and print
|
||
** bug fix: debugger doesn't hang on session lock if interrupted at
|
||
an inappropriate moment
|
||
** bug fix: run-program is now thread safe(r)
|
||
** bug fix: inner with-recursive-lock no longer releases the mutex
|
||
* fixed a bug in (DECODE-UNIVERSAL-TIME 0) (reported by Paul Dietz)
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** TYPE-ERRORs from signalled by COERCE now have DATUM and
|
||
EXPECTED-TYPE slots filled.
|
||
** MULTIPLE-VALUE-SETQ always returns the primary value of the
|
||
values form.
|
||
** MAKE-CONDITION accepts classes as type-designators.
|
||
** COMPILE may never return NIL.
|
||
** ENCODE-UNIVERSAL-TIME now guards against times out of Unix's
|
||
range before calling Unix time functions
|
||
|
||
changes in sbcl-0.9.2 relative to sbcl-0.9.1:
|
||
* numerous signal handling fixes to increase stability
|
||
* Support for EUC-JP external format. (thanks to NIIMI Satoshi)
|
||
* minor incompatible change: we now correctly canonize default
|
||
initargs, making them be a list of (INITARG INITFORM INITFUNCTION)
|
||
as per the MOP, rather than the historical (INITARG INITFUNCTION
|
||
INITFORM). (reported by Bruno Haible)
|
||
* new feature: WITH-COMPILATION-UNIT now accepts a non-standard
|
||
:SOURCE-PLIST option. See (DOCUMENTATION #'WITH-COMPILATION-UNIT T)
|
||
for more information.
|
||
* TRUENAME and PROBE-FILE now correctly resolve symlinks even if the
|
||
pathname is a directory pathname.
|
||
* SB-SPROF now works (more) reliably on non-GENCGC platforms.
|
||
* dynamic space size on PPC has been increased to 768Mb. (thanks to
|
||
Cyrus Harmon)
|
||
* SB-MOP:ENSURE-CLASS-USING-CLASS now accepts a class as the
|
||
:METACLASS argument in addition to a class name. (reported by
|
||
Bruno Haible for CMUCL, patch for CMUCL by Gerd Moellmann)
|
||
* RESTART-CASE can now be wrapped around CALL-METHOD forms.
|
||
(reported by Bruno Haible; patch from Gerd Moellmann)
|
||
* bug fix: sbcl runtime can now be compiled with gcc4 (thanks to
|
||
Sascha Wilde)
|
||
* bug fix: more cleanups to the floating point exception handling on
|
||
x86-64 (thanks to James Knight)
|
||
* bug fix: the compiler does not try to constant fold calls of
|
||
COERCE and BIT-* functions when they return freshly constructed
|
||
objects. (reported by Nikodemus Siivola and Paul Dietz)
|
||
* optimization: improved the MIPS versions of generic (in the
|
||
generic sense) arithmetic routines. (thanks to Thiemo Seufer)
|
||
* optimization: direct conversion of (unsigned-byte 32) to floats on
|
||
the PowerPC platform.
|
||
* optimization: structure instances with raw slots now use less
|
||
memory, and probably show better memory locality. (thanks to
|
||
David Lichteblau)
|
||
* optimization: DYNAMIC-EXTENT declarations for lists and closures
|
||
are treated as requests for stack allocation on the x86-64,
|
||
Alpha-32, PPC and SPARC platforms.
|
||
* contrib improvement: it's harder to cause SOCKET-CLOSE to close()
|
||
the wrong file descriptor; implementation of SOCKET-OPEN-P.
|
||
(thanks to Tony Martinez)
|
||
* threads
|
||
** gcing a dead thread can no longer lead to lockups
|
||
** threads block signals until they are set up properly
|
||
** errno is no longer shared by threads
|
||
** interrupt-thread restores the eflags register on x86
|
||
** fixed some lockups due to gc/thread interaction
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** invalid dotted lists no longer raise a read error when
|
||
*READ-SUPPRESS* is T
|
||
** signal an error if a symbol that names a declaration is used
|
||
as the name of a type, or vice versa
|
||
** allow using the (declare (typespec var*)) abbreviation for
|
||
(declare (type typespec var*)) with all type specifiers
|
||
** circularity detection works properly with PPRINT-LOGICAL-BLOCK
|
||
** always return NIL from PPRINT-POP when OBJECT is NIL
|
||
** don't signal errors when pretty-printing malformed LABELS,
|
||
FLET or MACROLET forms
|
||
** declarations in a DOLIST body are also in scope for the
|
||
DOLIST return-form
|
||
** COMPILE-FILE accepts all pathname designators as INPUT-FILE
|
||
and OUTPUT-FILE
|
||
** the ELEMENT-TYPE keyword argument to WITH-OUTPUT-STREAM is
|
||
always evaluated
|
||
|
||
changes in sbcl-0.9.1 relative to sbcl-0.9.0:
|
||
* fixed cross-compiler leakages that prevented building a 32-bit
|
||
target with a 64-bit host compiler.
|
||
* fixed a bug in CLOSE :ABORT T: no longer attempts to remove files
|
||
opened with :IF-EXISTS :OVERWRITE.
|
||
* fixed bug 281: error for an invalid qualifier in a short-form method
|
||
combination method is not signalled until the faulty method is called.
|
||
* bug fix: iteration variable type inferrer failed to deal with open
|
||
intervals. (reported by Alan Shields)
|
||
* bug fix: dynamically loading (via LOAD-SHARED-OBJECT or similar)
|
||
"frameworks" on Mac OS X no longer causes an EXC_BAD_ACCESS if two
|
||
or more runtime options were provided to the sbcl binary.
|
||
* compiled code is not steppable if COMPILATION-SPEED >= DEBUG.
|
||
* contrib improvement: implement SB-POSIX:MKSTEMP (Yannick Gingras)
|
||
* optimization: there's now a fast-path for fixnum arguments in the
|
||
generic subtraction routines on x86/x86-64. (Thanks to Lutz Euler)
|
||
* optimization: the code generated on x86-64 is more compact thanks
|
||
to not outputting unnecessary prefix bytes. (Thanks to Lutz Euler)
|
||
* bug fix: floating-point exception handling now partly works on
|
||
x86-64. (Thanks to James Knight)
|
||
* improvement to the MIPS backend from Thiemo Seufer: C-style
|
||
64-bit long long arguments and return values to alien functions
|
||
are now supported.
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** the type-error signalled from WARN has a filled-in DATUM slot.
|
||
** the type-error required when a stream is not associated with
|
||
a file has the stream as its datum.
|
||
** type-errors on single-floats on x86-64 no longer have
|
||
:INVALID-OBJECT as the datum
|
||
** the type-errors signalled for invalid function names now have
|
||
a correct expected type
|
||
** (SETF (DOCUMENTATION ... 'STRUCTURE)) no longer signals an error
|
||
for structures defined with a :TYPE. Documentation strings for
|
||
typed structures are no longer immediately discarded
|
||
** FILE-STRING-LENGTH and STREAM-EXTERNAL-FORMAT now work on
|
||
broadcast streams and synonym streams. FILE-LENGTH now also works
|
||
on broadcast streams.
|
||
|
||
changes in sbcl-0.9.0 relative to sbcl-0.8.21:
|
||
* incompatible change: the --noprogrammer option, deprecated since
|
||
version 0.7.5, has been removed. Please use the equivalent
|
||
--disable-debugger option instead.
|
||
* incompatible change: finalizers and *AFTER-GC-HOOKS* are now run with
|
||
interrupts enabled.
|
||
* incompatible change: support for *BEFORE-GC-HOOKS* (that have been
|
||
inoperational for a while now) has been completely removed.
|
||
* null lexical environments are now printed as #<NULL-LEXENV>,
|
||
significantly reducing the amount of clutter in typical backtraces.
|
||
* documentation on weak pointers, finalization, and after GC hooks
|
||
has been added to the manual.
|
||
* optimization: REPLACE on declared (UNSIGNED-BYTE 8) vectors, as well
|
||
as other specialized array types, is much faster. SUBSEQ and
|
||
COPY-SEQ on such arrays have also been sped up.
|
||
* optimization: EQL is now more efficient when at least other argument
|
||
is known to be of type (OR FIXNUM (NOT NUMBER)).
|
||
* fixed bug: the runtime is now less vulnerable to changes in the
|
||
size of the SBCL object on OS X, and virtual memory is reserved for
|
||
all spaces that need to be at a fixed address.
|
||
* fixed bug: finalizers are now thread-safe. (thanks to Gabor Mellis)
|
||
* fixed bug: finalizers and after GC hooks that cause consing are now
|
||
safe.
|
||
* fixed bug: compiler error messages and summaries are now printed to
|
||
*ERROR-OUTPUT*, not *STANDARD-OUTPUT*.
|
||
* fixed inference of the upper bound of an iteration variable.
|
||
(reported by Rajat Datta).
|
||
* fixed bug 211e: calling local functions with duplicated constant
|
||
keyword argument no longer causes a bogus style warning about an
|
||
unused variable.
|
||
* fixed bug 305: INLINE/NOTINLINE declaration no longer causes local
|
||
ftype declaration to be disregarded. (reported by Dave Roberts)
|
||
* fixed bug 373: caused by erronous compilation of references to alien
|
||
variables in the runtime on ppc/darwin.
|
||
* fixed bug 376: CONJUGATE type deriver.
|
||
* fixed infinite looping of ALIEN-FUNCALL, compiled with high DEBUG.
|
||
(reported by Baughn on #lisp)
|
||
* a cross-compiler bug on non-x86 platforms has been identified and
|
||
fixed. (thanks to Bruno Haible)
|
||
* improvements to the MIPS runtime code for increased stability.
|
||
(thanks to Thiemo Seufer)
|
||
* increased the maximimum compact environment size to allow
|
||
purify on images with large amounts of functions. (thanks to Cyrus Harmon)
|
||
* partial workaround for bug 135: don't name the function we're
|
||
calling for hairy cases of EVAL, so as not to accumulate one environment
|
||
entry per call to EVAL. (reported by Kevin Reid)
|
||
* improvements to the x86-64 disassembler. (thanks to Lutz Euler)
|
||
* optimization: type testing for non-vector arrays should be faster.
|
||
* fixed TRACE :ENCAPSULATE NIL, added support for :ENCAPSULATE NIL
|
||
on x86-64
|
||
* bug fix: setting 31st element of a bit vector to zero did not work
|
||
on Alpha-32.
|
||
* bug fix: redefining a class definition which failed due to a
|
||
previous accessor / function clash now works (but see BUGS entry
|
||
#380 for more problems in this area). (thanks to Zach Beane)
|
||
* the long form of DEFINE-METHOD-COMBINATION disables method group
|
||
checking when given a single method group with pattern *. (thanks
|
||
to Wendall Marvel)
|
||
* on x86 compiler supports stack allocation of results of simple
|
||
calls of MAKE-ARRAY, bound to variables, declared DYNAMIC-EXTENT.
|
||
* support for building and running on Mac OS X 10.4 "Tiger" has been added
|
||
** Binaries built on Tiger will not run on 10.2 "Jaguar" currently
|
||
* fixed some bugs related to Unicode integration:
|
||
** the restarts for recovering from input and output encoding
|
||
errors only appear when there is in fact such an error to
|
||
handle.
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** MISC.549 and similar: late transformation of unsafe type
|
||
assertions into derived types caused unexpected code
|
||
transformations.
|
||
** SCALE-FLOAT type deriver is less wrong.
|
||
** type derivers for EXP, LOG and similar functions compute result
|
||
types for complex arguments better.
|
||
** (MISC.563) CONJUGATE type deriver works for very restricted
|
||
complex types.
|
||
** out-of-line type testers for character strings are available.
|
||
** EQUAL compiler transform understands specialness of objects
|
||
of type BIT-VECTOR.
|
||
** accessing double-floats stored on the stack now works on x86-64.
|
||
** debugger internals could sometimes create invalid lispobjs,
|
||
resulting in GC crashes.
|
||
** MISC.548: type check weakening can convert required type into
|
||
optional.
|
||
** initialization forms for bindings are not in scope of free special
|
||
declarations.
|
||
|
||
changes in sbcl-0.8.21 (0.9alpha.1?) relative to sbcl-0.8.20:
|
||
* incompatible change: thread support for non-NPTL systems has
|
||
been removed - locking is buggy and unreliable. A threaded
|
||
SBCL build will now warn at startup and refuse to create
|
||
new threads, unless futex support is detected in the kernel
|
||
* incompatible change: the top level REPL now has only an ABORT
|
||
restart associated with it, not TOPLEVEL and ABORT as it used to.
|
||
TOP and TOPLEVEL are now available as debugger commands for
|
||
returning to the top level.
|
||
* incompatible change: forms evaluated in the REPL now use the
|
||
global optimization policy.
|
||
* incompatible change: user- and system-initialization files are
|
||
no longer processed with LOAD, but by READ and EVAL; hence the
|
||
global optimization policy, startup package, readtable, etc,
|
||
can be set by them.
|
||
* The .fasl file format number has been incremented because of
|
||
various incompatible changes.
|
||
* internal entry point details and argument counts no longer appear
|
||
in backtraces unless explicitly requested by setting
|
||
SB-DEBUG:*SHOW-ENTRY-POINT-DETAILS*.
|
||
* built-in and standard functions no longer have names like "top
|
||
level local call to FOO".
|
||
* fixed bug 32: functions defined in non-null lexical environments
|
||
now have more legible printed representation
|
||
* fixed bug 33: functions defined in non-null lexical environemnts
|
||
are now more amenable to inspection by INSPECT.
|
||
* workaround for bug 354: XEPs no longer appear in backtraces unless
|
||
explicitly requested.
|
||
* fixed bug: receiving the signal which results from attempting to
|
||
write to mprotect()ed memory (SIGSEGV on Linux and some *BSDs,
|
||
SIGBUS on other *BSDs) on architectures where the C stack is also
|
||
the Lisp stack (x86 and x86-64) from foreign code no longer leads
|
||
to debugger confusion or wild instability. (reported by Cheuksan
|
||
Wang)
|
||
* fixed bug: COUNT and EQUAL no longer issue compiler efficiency
|
||
notes when operating on objects known to be SIMPLE-BIT-VECTORs.
|
||
(reported by Lutz Euler)
|
||
* fixed bug: (TYPEP X '(MEMBER ...)) no longer returns a list in
|
||
compiled code. (reported by Paul Dietz)
|
||
* fixed bug 276b: mutating with MULTIPLE-VALUE-SETQ a binding of a
|
||
specialized parameter to a method to something that is not TYPEP
|
||
the specializer is now possible.
|
||
* fixed bug: the MAKE-INSTANCE optimization is now correct in the
|
||
face of package deletion.
|
||
* fixed bug: LOAD should bind *LOAD-PATHNAME* to the merged
|
||
pathname. (reported by David Tolpin on c.l.l)
|
||
* contrib improvement: the SB-SIMPLE-STREAMS contrib now defines
|
||
STRING-SIMPLE-STREAM and FILE-SIMPLE-STREAM as subclasses of
|
||
STRING-STREAM and FILE-STREAM, respectively.
|
||
* contrib improvement: SB-INTROSPECT handles more of SLIME's needs
|
||
than previously; in addition, its test suite is now run on build.
|
||
(thanks to Luke Gorrie)
|
||
* a more robust x86-64 disassembler. (thanks to Lutz Euler)
|
||
* optimization: added a immediate representation for single-floats
|
||
on x86-64
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** MISC.564: defined out-of-line version of %ATAN2 on x86.
|
||
** attempting to create a package with a colliding nickname causes
|
||
correctable errors to be signalled.
|
||
** MISC.572-574: :START1 and :START2 broken for simple-base-strings.
|
||
** several x86-64 backend bugs related to sign-extension of immediate
|
||
operands.
|
||
|
||
changes in sbcl-0.8.20 (0.9alpha.0?) relative to sbcl-0.8.19:
|
||
* fixed inspection of specialized arrays. (thanks to Simon Alexander)
|
||
* fixed disassembly of SHLD and SHRD on x86. (thanks to David
|
||
Lichteblau)
|
||
* fixed loading of multiply forward-referenced layouts.
|
||
(thanks to Cheuksan Wang)
|
||
* fixed bug 7: less verbose COMPILE-FILE output. Additionally, the
|
||
output is now directed to *STANDARD-OUTPUT* as specified by ANSI.
|
||
(see COMPILE-FILE documentation for details of :PRINT option)
|
||
* fixed bugs 19 and 317: fixed-format floating point printing is
|
||
more accurate. This also fixes a bug reported by Adam Warner
|
||
related to the ~@F format directive.
|
||
* fixed bug 371: bignum print/read inconsistency. (thanks to Harald
|
||
Hanche-Olsen)
|
||
* fixed bug: SET-SYNTAX-FROM-CHAR correctly shallow-copies a
|
||
dispatch table if the from-char is a dispatch macro character.
|
||
* fixed bug: COUNT and EQUAL on bit vectors with lengths divisible
|
||
by the wordsize no longer ignore the last word. (reported by Lutz
|
||
Euler)
|
||
* fixed bug in type checking of dynamic-extent variables. (reported
|
||
by Svein Ove Aas)
|
||
* optimization: sequence traversal functions use their freedom to
|
||
coerce function designators to functions.
|
||
* optimization: code with many calls to CLOS methods specialized on
|
||
CLOS classes has had redundant type checks removed.
|
||
* optimization: added declarations to speed up operations that access
|
||
the internal character database (for example STRING-UPCASE)
|
||
* optimization: comparison operations between floats and sufficiently small
|
||
fixnums no longer create extra rationals
|
||
* fixed some bugs related to Unicode integration:
|
||
** portions of multibyte characters at the end of buffers for
|
||
character-based file input are correctly transferred to the
|
||
start of the buffer at the next read.
|
||
** COMPILE-FILE now respects any EXTERNAL-FORMAT argument given,
|
||
passing it through to OPEN.
|
||
** LOAD on source files likewise passes any EXTERNAL-FORMAT
|
||
argument given to internal calls to OPEN.
|
||
** the built-in comment readers (introduced by character sequences
|
||
";" and "#|") are more forgiving to encoding errors; they will
|
||
STYLE-WARN and then attempt to resync the stream at a character
|
||
boundary. (thanks to Teemu Kalvas)
|
||
* fixed some bugs in the x86-64 port:
|
||
** Negative short int return values from c-calls are sign-extended
|
||
correctly.
|
||
** The stack is aligned to 16-bytes for c-calls, as required by
|
||
the ABI. (thanks to Cheuksan Wang)
|
||
** The disassembler understands more x86-64. (thanks to Cheuksan Wang)
|
||
** The regression tests use SB-ALIEN:INT instead of SB-ALIEN:INTEGER
|
||
for enums. (thanks to Vincent Arkesteijn)
|
||
** Multiple small optimizations and bugfixes for floating point
|
||
operations.
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** Space, Tab, Linefeed, Return and Page have the invalid
|
||
secondary constituent character trait.
|
||
** SET-SYNTAX-FROM-CHAR correctly copies multiple-escape character
|
||
syntax.
|
||
** WITH-INPUT-FROM-STRING should only update the index place on
|
||
normal termination.
|
||
** Pretty-printing backquoted forms when *PRINT-CIRCLE* is true
|
||
works more reliably.
|
||
** Bit-array operations (BIT-AND and similar) worked incorrectly
|
||
with one-dimensional arrays with fill pointers.
|
||
** TYPE-OF failed on a complex with an integer realpart and a
|
||
RATIO imagpart.
|
||
** compiler failure during type inference for the code of form
|
||
(IF (EQL X (THE ...)) ...) (MISC.535).
|
||
|
||
changes in sbcl-0.8.19 relative to sbcl-0.8.18:
|
||
* new port: SBCL now works in native 64-bit mode on x86-64/Linux
|
||
platform. The port supports 61-bit fixnums, large memory spaces
|
||
and reloading shared object files.
|
||
* enhancement: saving cores with foreign code loaded is now
|
||
supported on ppc/Darwin in addition to the previously supported
|
||
platforms.
|
||
* enhancement: the statistical profiler now walks deeper into the
|
||
call stack for more meaningful call-graphs and accrued time
|
||
reports (x86/x86-64 only). It also now reports time spent in
|
||
foreign functions.
|
||
* enhancement: it is now possible to trace most individual methods
|
||
of a generic function in addition to tracing the generic function
|
||
itself.
|
||
* bug fix: invalid :DEFAULT-INITARGS are detected in compiled calls
|
||
to MAKE-INSTANCE.
|
||
* bug fix: defaulted initargs are passed to INITIALIZE-INSTANCE and
|
||
SHARED-INITIALIZE methods from compiled calls to MAKE-INSTANCE.
|
||
* bug fix: COERCE to (COMPLEX FLOAT) of a complex number no longer
|
||
produces an error. (thanks to Vincent Arkesteijn)
|
||
* bug fix: NAMESTRING on pathnames with :WILD components in their
|
||
directories works correctly. (thanks to Artem V. Andreev)
|
||
* fixed bug 125: compiler preserves identity of closures. (reported
|
||
by Gabe Garza)
|
||
* bug fixed: functions with &REST arguments sometimes failed with
|
||
"Undefined function" when compiled with (DEBUG 3). (reported by
|
||
Robert J. Macomber)
|
||
* bug fix: overflow during compiling of setting element of a bit
|
||
vector with constant index and value. (reported by Timmy Douglas)
|
||
* build fix: fixed the dependence on *LOAD-PATHNAME* and
|
||
*COMPILE-FILE-PATHNAME* being absolute pathnames.
|
||
* on x86 compiler partially supports stack allocation of dynamic-extent
|
||
closures.
|
||
* GO and RETURN-FROM do not check the extent of their exit points
|
||
when compiled with SAFETY 0.
|
||
* fixed some bugs related to Unicode integration:
|
||
** encoding and decoding errors are now much more robustly
|
||
handled; it should now be possible to recover even from invalid
|
||
input or output to the terminal. (thanks to Teemu Kalvas)
|
||
** provided a first cut at implementing STRING-TO-OCTETS and
|
||
OCTETS-TO-STRING. (thanks to Robert J. Macomber)
|
||
** altered the SB-MD5 contributed module slightly, changing the
|
||
interface just enough for it to be supportable for builds where
|
||
lisp characters are not eight bits.
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** the FORMATTER-generated functions for ~V[ conditionals require
|
||
the correct number of arguments.
|
||
** READ-FROM-STRING returns the mandated second value when applied
|
||
to displaced strings.
|
||
** the #\Rubout and #\Backspace characters are treated as invalid
|
||
constituent characters by the tokenizer.
|
||
|
||
changes in sbcl-0.8.18 relative to sbcl-0.8.17:
|
||
* new feature: reloading changed shared object files with
|
||
LOAD-SHARED-OBJECT now causes the new definitions to take effect.
|
||
* new feature: references to foreign variables and functions
|
||
can now be compiled and loaded before the corresponding shared
|
||
object file is loaded, as long as the foreign definitions are
|
||
available at runtime.
|
||
* Solaris 10 (aka SunOS 5.10) on the SPARC platform is now
|
||
supported. (thanks to Dan Debertin)
|
||
* SB-ALIEN enums can now be represented in Lisp by any symbols, not
|
||
just keywords. (thanks to Vincent Arkesteijn)
|
||
* fixed bug #331: structure-class instances corresponding to
|
||
DEFSTRUCT forms are now created eagerly.
|
||
* fixed bug #345: backtraces from calls to undefined functions work
|
||
on x86 as well. Related bug #61 is now also partially fixed on x86
|
||
(backtraces from throws to unknown catch tags.)
|
||
* bug fix: lambda-list parsing is now stricter vrt. order and number
|
||
of lambda-list keywords.
|
||
* bug fix: as specified by AMOP, an error is signalled if a
|
||
class-option appears multiple times in a DEFCLASS form. (reported
|
||
by Bruno Haible)
|
||
* bug fix: RANDOM can be compiled when the compiler derives the type
|
||
of its numeric argument as a disjoint set of small integers.
|
||
(reported by Paul Dietz)
|
||
* bug fix: starting a core saved with shared objects loaded when
|
||
those objects are not available no longer causes threaded SBCL to
|
||
hang. (reported by Sean Ross)
|
||
* bug fix: evaluated FUNCTION no longer bypasses encapsulation (eg.
|
||
TRACE).
|
||
* bug fix: (SETF MACRO-FUNCTION) now accepts an optional environment
|
||
argument, which must always be NIL. (reported by Kalle Niemitalo)
|
||
* bug fix: printing 1.0d+23 no longer results in an error.
|
||
(reported by Rolf Wester for CMUCL; bug fix from Raymond Toy)
|
||
* bug fix: structure slot setters preserve evaluation order. (thanks
|
||
to Gabor Melis)
|
||
* fixed some bugs related to Unicode integration:
|
||
** RUN-PROGRAM can allow its child to take input from a Lisp
|
||
stream. (reported by Stefan Scholl)
|
||
** ASDF-INSTALL successfully downloads .tar.gz files in all
|
||
locales. (reported by Ken Causey)
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** INCF, DECF and REMF evaluate their place form as specified in
|
||
CLtS 5.1.3.
|
||
** FORMATTER expands ~{ ~} iteration directives with V or #
|
||
parameters correctly.
|
||
** FORMATTER deals with the ~@[ ~] conditional directive where the
|
||
consequent uses no arguments correctly.
|
||
** the system has a partial understanding of the (COMPLEX RATIO)
|
||
type specifier.
|
||
** UPGRADED-COMPLEX-PART-TYPE obeys the lattice upgrading rules
|
||
required.
|
||
|
||
changes in sbcl-0.8.17 relative to sbcl-0.8.16:
|
||
* new feature: a build-time option (controlled by the :SB-UNICODE
|
||
keyword feature, enabled by default) for building the system with
|
||
support for the entire 21-bit character space defined by the
|
||
Unicode consortium.
|
||
* new feature: the system now has rudimentary external-format
|
||
support; the primary user-visible change at this time is that
|
||
characters with the high bit set (such as lower-case-e-acute) will
|
||
print correctly to a terminal in a UTF-8 environment.
|
||
* minor incompatible change: BASE-CHAR no longer names a class;
|
||
however, CHARACTER continues to do so, as required by ANSI.
|
||
* minor incompatible change: SB-DEBUG:*DEBUG-PRINT-FOO* variables
|
||
are no longer supported, and SB-DEBUG:*DEBUG-PRINT-VARIABLE-ALIST*
|
||
has been moved to the SB-EXT package (temporarily re-exported from
|
||
SB-DEBUG).
|
||
* minor incompatible change: SB-C::*COMPILER-ERROR-PRINT-FOO* variables
|
||
are no longer supported: use SB-EXT:*COMPILER-PRINT-VARIABLE-ALIST*
|
||
instead.
|
||
* fixed bug #351: better error-handlind and reporting for malformed
|
||
LET and LET* forms.
|
||
* fixed bug #350: bignum-printing is now more memory-efficient,
|
||
allowing printing of very large bignums, eg. (expt 2 10000000).
|
||
(reported by Bruno Haible)
|
||
* fixed bug #302: better primitive-type selection for intersection
|
||
types.
|
||
* fixed bug #308: non-graphic characters now all have names, as
|
||
required. (reported by Bruno Haible)
|
||
* bug fix: redefining a class with different superclasses now correctly
|
||
removes it from the direct-subclasses of its previous superclasses.
|
||
(reported by David Morse)
|
||
* bug fix: (SETF FIND-CLASS) using a FORWARD-REFERENCED-CLASS as the
|
||
new value now works. (reported by Bruno Haible)
|
||
* bug fix: correct canonicalization of multiple non-standard slot
|
||
options in DEFCLASS as per AMOP 5.4.2. (reported by Bruno Haible)
|
||
* bug fix: SB-MOP:CLASS-PROTOTYPE now signals an error if the class
|
||
is not yet finalized, as required by AMOP. (reported by Bruno Haible)
|
||
* bug fix: SB-MOP:ALLOCATE-INSTANCE method for instances of BUILT-IN-CLASS
|
||
now exists, an signals an error.
|
||
* bug fix: duplicate LOOP variable bindings now signal PROGRAM-ERROR
|
||
during macroexpansion for non-iteration variables as well. (reported
|
||
by Bruno Haible for CMUCL)
|
||
* bug fix: Cyclic structures and unprintable objects in compiler
|
||
messages no longer cause errors. (reported by Bruno Haible)
|
||
* bug fix: READ, READ-PRESERVING-WHITESPACE, READ-DELIMITED-LIST,
|
||
and READ-FROM-STRING all now return a primary value of NIL if
|
||
*READ-SUPPRESS* is true. (reported by Bruno Haible for CMUCL)
|
||
* bug fix: Default value of EOF-ERROR-P in READ-FROM-STRING is true.
|
||
(reported by Bruno Haible for CMUCL)
|
||
* bug fix: ERROR now signals a TYPE-ERROR if the arguments to ERROR
|
||
do not designate a condition. (reported by Bruno Haible for
|
||
CMUCL)
|
||
* bug fix: UNINTERN, USE-PACKAGE, IMPORT and EXPORT all signal an
|
||
SB-EXT:NAME-CONFLICT condition (subtype of PACKAGE-ERROR) in the
|
||
name conflict situations in CLHS 11.1.1.2.5, and provide a restart
|
||
permitting resolution in favour of any of the conflicting symbols.
|
||
(reported by Bruno Haible for CMUCL)
|
||
* bug fix: EQUAL compiler optimizations is less aggressive on
|
||
strings which can potentially compare true despite having distinct
|
||
specialized array element types.
|
||
* bug fix: unit enumerations can be defined without dividing by
|
||
zero. (thanks to Vincent Arkesteijn)
|
||
* FORMAT compile-time argument count checking has been enhanced.
|
||
(report from Bruno Haible for CMUCL)
|
||
* a partial workaround for the bug 262: the compiler does not try to
|
||
inline-expand a local function doing RETURN-FROM from a deleted
|
||
BLOCK. (thanks to Peter Denno for the bug report and to David
|
||
Wragg for the simple test case)
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** RENAME-PACKAGE allows all package designators as new package
|
||
names.
|
||
** constraint propagation and lambda variable substitution are
|
||
more cautious in dealing with partially deleted code.
|
||
** compiler sometimes lost reoptimization passes.
|
||
** CERROR, given a condition as condition designator, passes its
|
||
remaining arguments to the continue format control without
|
||
complaint.
|
||
** Case-altering FORMAT directives work correctly on non-ASCII
|
||
characters.
|
||
** The REAL type specifier handles bounds outside the floating
|
||
point ranges without signalling FLOATING-POINT-OVERFLOW.
|
||
** Functions with IR1-transformations can create intercomponent
|
||
references to global functions.
|
||
** NIL parameter to the FORMAT directive ~^ means `unsupplied
|
||
parameter'.
|
||
** FORMAT ~R treats a nil value for its first parameter correctly.
|
||
|
||
changes in sbcl-0.8.16 relative to sbcl-0.8.15:
|
||
* enhancement: saving cores with foreign code loaded is now
|
||
supported on x86/NetBSD and sparc/Linux in addition to the previously
|
||
supported platforms.
|
||
* bug fix: on some platforms repeated installations caused multiple
|
||
copies of HTML documentation to be installed -- should not happen
|
||
any more. (reported by Stefan Scholl)
|
||
* bug fix: parsing self-recursive alien record types multiple times
|
||
no longer causes infinite recursion. (reported by Thomas F. Burdick,
|
||
original patch by Helmut Eller for CMUCL)
|
||
* bug fix: stack-exhaustion detection works now on NetBSD as well.
|
||
(thanks to Richard Kreuter)
|
||
* bug fix: defining classes whose accessors are methods on existing
|
||
generic functions in other (locked) packages no longer signals
|
||
bogus package lock violations. (reported by François-René Rideau)
|
||
* bug fix: special variables as DEFMETHOD parameters no longer have
|
||
associated bogus type declarations. (reported by David Wragg and
|
||
Bruno Haible)
|
||
* bug fix: read-write consistency on streams of element-type
|
||
(SIGNED-BYTE N) for N > 32. (reported by Bruno Haible for CMUCL)
|
||
* bug fix: redefiniton of the only method of a generic function with
|
||
no DEFGENERIC no longer emits a full WARNING. In addition,
|
||
redefinition of generic functions with no DEFGENERIC to an
|
||
incompatible lambda list now signals an error. (thanks to Zach
|
||
Beane)
|
||
* bug fix: DEFGENERIC now works even when there's a function of the
|
||
same name in an enclosing lexical environment. (thanks to Zach
|
||
Beane)
|
||
* fixed compiler failure, caused by instrumenting code during
|
||
IR1-optimization. (Debian bug report #273606 by Gabor Melis)
|
||
* optimization: added loop analysis and improved register allocation
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** POSITION on displaced vectors with non-zero displacement
|
||
returns the right answer.
|
||
** (SIMPLE-STRING) is a valid type specifier for sequence
|
||
creators.
|
||
** *PRINT-LEVEL* handling for slotless structures is pedantically
|
||
correct.
|
||
** PPRINT-INDENT accepts a request for an indentation of any REAL.
|
||
** PPRINT-TAB (and the FORMAT ~T directive) now indent by the
|
||
correct amounts.
|
||
** The justification version of the FORMAT ~< directive treats
|
||
non-zero minpad parameter correctly.
|
||
|
||
changes in sbcl-0.8.15 relative to sbcl-0.8.14:
|
||
* incompatible change: SB-INT:*BEFORE-SAVE-INITIALIZATIONS* and
|
||
SB-INT:*AFTER-SAVE-INITIALIZATIONS* have been renamed
|
||
SB-EXT:*SAVE-HOOKS* and SB-EXT:*INIT-HOOKS*, and are now part of
|
||
the supported interface.
|
||
* new feature: Single-stepping of code compiled with DEBUG 2 or
|
||
higher and (> DEBUG (MAX SPACE SPEED)) is now possible.
|
||
* new feature: saving cores with foreign code loaded is now
|
||
supported on x86/FreeBSD, x86/Linux, and sparc/SunOS. (based on
|
||
Timothy Moore's work for CMUCL)
|
||
* bug fix: DEFTYPE lambda-list parsing now binds unsupplied keyword
|
||
parameters to * instead of NIL if no initform is supplied.
|
||
(reported by Johan Bockgaard)
|
||
* bug fix: DEFINE-COMPILER-MACRO lambda-list parsing now binds
|
||
correctly when FUNCALL appears as the car of the form. Note:
|
||
despite this FUNCALL forms are not currently subject to
|
||
compiler-macro expansion. (port of Raymond Toy's fix for the
|
||
same from CMUCL, reported by Johan Bockgaard)
|
||
* bug fix: FOR ... ON ... -clauses in LOOP now work on dotted lists
|
||
(thanks for Teemu Kalvas)
|
||
* bug fix: in FORMAT ~^ inside ~:{ now correctly steps to the next
|
||
case instead of terminating the iteration (thanks for Julian
|
||
Squires, Sean Champ and Raymond Toy)
|
||
* bug fix: incorrect expansion of defgeneric that caused a style
|
||
warning. (thanks for Zach Beane)
|
||
* bug fix: slot accessor effective method computation works properly
|
||
for classes with multiple non-standard applicable methods on
|
||
SB-MOP:SLOT-VALUE-USING-CLASS. (reported by Ralf Mattes)
|
||
* on x86 compiler supports stack allocation of results of LIST and
|
||
LIST*, bound to variables, declared DYNAMIC-EXTENT. (based on
|
||
CMUCL implementation by Gerd Moellmann)
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** FORMAT strings with both the ~<~:;~> form of the justification
|
||
directive and pretty-printing directives cause an error.
|
||
|
||
changes in sbcl-0.8.14 relative to sbcl-0.8.13:
|
||
* incompatible change: the internal functions
|
||
SB-KERNEL:32BIT-LOGICAL-FOO, intended for providing efficient
|
||
logical operations on (UNSIGNED-BYTE 32) values, have been renamed
|
||
to SB-KERNEL:WORD-LOGICAL-FOO. Modular arithmetic should be used
|
||
instead of the old functions.
|
||
* new feature: on platforms where "dladdr" is available foreign
|
||
function names now appear in backtraces. (based on Helmut Eller's
|
||
work for CMUCL)
|
||
* documentation: documentation for SB-BSD-SOCKETS, SB-GRAY,
|
||
SB-SIMPLE-STREAMS, and SB-PROFILE have been integrated into the user
|
||
manual.
|
||
* documentation: ASDF manual is now distributed with SBCL.
|
||
* bug fix: SBCL can now load its contributed modules with REQUIRE
|
||
even if the system-provided entries have been removed from
|
||
ASDF:*CENTRAL-REGISTRY*. Infinite recursion in REQUIRE is also
|
||
detected.
|
||
* bug fix: backtraces involving undefined functions or assembly
|
||
routines are more informative. (thanks to Brian Downing)
|
||
* bug fix: mutually referent alien structures now work correctly.
|
||
(reported by Rick Taube)
|
||
* bug fix: structures defined by WITH-ALIEN can be referred to
|
||
within other definitions in the same WITH-ALIEN.
|
||
* bug fix: division operators (MOD, TRUNCATE and the like) with
|
||
constant zero divisors and integer dividends no longer generate
|
||
left shifts.
|
||
* bug fix: provide default methods for INPUT-STREAM-P and
|
||
OUTPUT-STREAM-P specialized on SB-GRAY:FUNDAMENTAL-STREAM.
|
||
* bug fix: improve the detection and resolution of MOP metacycles
|
||
(where effective method computation depends on the generic function
|
||
having its effective method computed). (reported by Bruno Haible)
|
||
* bug fix: pass the right initargs to :BEFORE or :AFTER methods on
|
||
SHARED-INITIALIZE or INITIALIZE-INSTANCE in optimized
|
||
MAKE-INSTANCE constructors. (reported by Axel Schairer for cmucl)
|
||
* bug fix: pathnames with relative directory components can be
|
||
represented relative to default pathnames.
|
||
* optimization: in taking the GCD of bignums, reduce the two bignums
|
||
to approximately the same size (using Euclid's algorithm) before
|
||
applying the more sophisticated binary GCD. (thanks to Juho
|
||
Snellman)
|
||
* optimization: COUNT on bitvectors now operates word-at-a-time.
|
||
* optimization: ASH with a positive, but not necessarily constant,
|
||
(leftwards) shift, when in a modular context, is compiled to a
|
||
hardware shift.
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** FORMAT variable parameters ("~V<char>") are defaulted properly
|
||
if the corresponding argument is NIL.
|
||
** FORMAT directives accepting a minpad parameter treat negative
|
||
values as 0.
|
||
** literal commas as character parameters to FORMAT directives are
|
||
parsed correctly.
|
||
** literal spaces directly after ~<Newline> directives within a
|
||
format-logical-block (~:< ~@:>) do not induce :FILL-style
|
||
conditional newlines.
|
||
** PRINT-UNREADABLE-OBJECT inserts spaces as specified (and only
|
||
as specified: it no longer includes conditional newlines).
|
||
** PRINC-TO-STRING binds *PRINT-READABLY* to NIL (as well as
|
||
*PRINT-ESCAPE*).
|
||
** PPRINT-LOGICAL-BLOCK signals a TYPE-ERROR if its :PREFIX or
|
||
:PER-LINE-PREFIX argument does not evaluate to a string.
|
||
|
||
changes in sbcl-0.8.13 relative to sbcl-0.8.12:
|
||
* new feature: SB-PACKAGE-LOCKS. See the "Package Locks" section of
|
||
the manual for details; for now, package locks can be disabled by
|
||
removing :SB-PACKAGE-LOCKS in customize-target-features.lisp, but
|
||
if no major problems are found then it is likely that they will be
|
||
compiled in unconditionally.
|
||
* major incompatible change: LOAD-FOREIGN and LOAD-1-FOREIGN are now
|
||
unsupported operators on all platforms. To load a shared library
|
||
into SBCL, use SB-ALIEN:LOAD-SHARED-OBJECT. To load a non-shared
|
||
object file, link it into a shared library outside of SBCL and
|
||
load it using SB-ALIEN:LOAD-SHARED-OBJECT. (incidentally fixes
|
||
bug #79)
|
||
* bug workaround: ROOM T and the GC were not working together
|
||
reliably, because invariants expected by the SB!VM:INSTANCE-USAGE
|
||
reporting facility aren't preserved. That reporting has been
|
||
disabled, so now until and unless someone figures out how to make it
|
||
work reliably with the current GC, (ROOM T) is equivalent to (ROOM).
|
||
* minor incompatible change: as threatened around sbcl-0.8.0, the
|
||
home package of MOP-related symbols is now SB-MOP, not SB-PCL.
|
||
The symbols are also exported from SB-PCL for backwards
|
||
compatibility, but more so than before SB-PCL should be treated as
|
||
an implementation-internal package.
|
||
* fasl format changed: SBCL 0.8.13 fasls are incompatible with those
|
||
of earlier versions
|
||
* the SB-SPROF contrib now works on (most) non-x86 architectures.
|
||
It is known as of this release not to work on the Alpha, however.
|
||
* fixed bug #167: errors signalled due to illegal syntax in method
|
||
bodies are now more legible.
|
||
* fixed bug #338: instances of EQL-SPECIFIER are now valid type
|
||
designators and can hence be used with TYPEP.
|
||
* fixed bug #333: CHECK-TYPE now ensures that the type error
|
||
signalled, if any, has the right object to be accessed by
|
||
TYPE-ERROR-DATUM. (reported by Tony Martinez)
|
||
* fixed bug #340: SETF of VALUES obeys the specification in ANSI
|
||
5.1.2.3 for multiple-value place subforms. (reported by Kalle
|
||
Olavi Niemetalo)
|
||
* fixed bug #334: programmatic addition of slots using specialized
|
||
methods on SB-MOP:COMPUTE-SLOTS works for :ALLOCATION :INSTANCE
|
||
and :ALLOCATION :CLASS slots.
|
||
* fixed bug #269: SCALE-FLOAT scales floats by any integer, not just
|
||
float exponents. (rereported by Peter Seibel)
|
||
* fixed a bug: #\Space (and other whitespace characters) are no
|
||
longer considered to be macro characters in standard syntax by
|
||
GET-MACRO-CHARACTER.
|
||
* fixed bug: initialization of condition class metaobjects no longer
|
||
causes an instance of the condition to be created. (reported by
|
||
Marco Baringer)
|
||
* fixed bug: it is now possible to have slots such that
|
||
SB-MOP:SLOT-DEFINITION-ALLOCATION of the effective slot
|
||
description is neither :INSTANCE nor :CLASS.
|
||
* fixed bug: the ctor optimization of MAKE-INSTANCE now respects
|
||
user-defined methods on SLOT-BOUNDP-USING-CLASS and (SETF
|
||
SLOT-VALUE-USING-CLASS), and no longer causes errors with
|
||
non-standard SLOT-DEFINITION-ALLOCATION values.
|
||
* fixed bugs: various race conditions handling exiting threads.
|
||
CL-PPCRE's thread torture test now passes.
|
||
* fixed arguably-a-bug: GC time proportional to number of threads in
|
||
system even when most of them are idle
|
||
* optimization: improved performance of BIT and SBIT on bit-vectors.
|
||
* .fasl file incompatibility: The fasl file version number has
|
||
been incremented because of changes associated with package locks.
|
||
|
||
changes in sbcl-0.8.12 relative to sbcl-0.8.11:
|
||
* minor incompatible change: the system no longer provides
|
||
optimization hints (conditions which are TYPEP
|
||
SB-EXT:COMPILER-NOTE) for conforming code in default compilation
|
||
mode; these hints are still emitted when higher SPEED optimization
|
||
is requested.
|
||
* new contrib module: a sampling profiler (profiling by statistical
|
||
sampling, rather than by instrumenting functions) is available as
|
||
the SB-SPROF contrib. (thanks to Gerd Moellmann and Juho Snellman)
|
||
* the behaviour of the standard function ED is now customizeable by
|
||
third parties through a hook variable: see ED's documentation
|
||
string for information on the protocol.
|
||
* the compiler no longer emits efficiency notes for (FUNCALL X)
|
||
when the type of X is uncertain under default optimization
|
||
settings.
|
||
* fixed bug 276: mutating a binding of a specialized parameter to a
|
||
method to something that is not TYPEP the specializer is now
|
||
possible.
|
||
* fixed bugs 45d and 118: DOUBLE-FLOAT[-NEGATIVE]-EPSILON now
|
||
exhibit the required behaviour on the x86 platform. (thanks to
|
||
Peter van Eynde, Eric Marsden and Bruno Haible)
|
||
* fixed bug 335: ATANH now computes the inverse hyperbolic tangent
|
||
even for difficult arguments. (reported by Peter Graves)
|
||
* fixed bug 141a: the backquote printer now descends quoted
|
||
structure.
|
||
* fixed another bug in backquote printing: no more destructive
|
||
modification of the form's list structure. (reported by Brian
|
||
Downing)
|
||
* fixed bug in INTERRUPT-THREAD: pin the function, so that it cannot
|
||
move between its address being taken and the call to
|
||
interrupt_thread, fixing a crashing race condition.
|
||
* the SB-POSIX contrib implementation has been adjusted so that it
|
||
no longer exhibits ridiculously poor performance when constructing
|
||
instances corresponding to C structs.
|
||
|
||
changes in sbcl-0.8.11 relative to sbcl-0.8.10:
|
||
* minor incompatible change: the sb-grovel contrib now treats C
|
||
structures as alien (in the sense of SB-ALIEN) objects rather than
|
||
as undistinguished (simple-array (unsigned-byte 8) (*))s. This
|
||
has implications for memory management of client code
|
||
(sb-grovel-returned objects must now be manually managed) and for
|
||
type safety (alien objects now have full types).
|
||
* new feature: the SB-EXT:MUFFLE-CONDITIONS declaration should be
|
||
used to control emission of compiler diagnostics, rather than the
|
||
SB-EXT:INHIBIT-WARNINGS OPTIMIZE quality. See the manual for
|
||
documentation on this feature. The SB-EXT:INHIBIT-WARNINGS
|
||
quality should be considered deprecated.
|
||
* install.sh now installs the user manual as well
|
||
* (not quite a new documentable feature, but worth considering in
|
||
the light of the new SB-EXT:MUFFLE-CONDITIONS declaration): the
|
||
beginnings of a semantically meaningful condition hierarchy is
|
||
under development, for use in SB-EXT:MUFFLE-CONDITIONS and by
|
||
IDEs.
|
||
* fixed bug: PARSE-NAMESTRING now accepts any valid pathaname
|
||
designator as the defaults argument.
|
||
* fixed bug: Displaced arrays whose displaced-to array has become
|
||
too small now cause ARRAY-DIMENSION to signal an error, providing
|
||
for safer bounds-checking. (reported by Bruno Haible)
|
||
* fixed bug: DEFCLASS slot definitions with identical :READER and
|
||
:WRITER names now signal a reasonable error. (reported by Thomas
|
||
Burdick)
|
||
* fixed bug: CLOSE :ABORT T on appending stream no longer causes
|
||
file deletion.
|
||
* fixed bug: Invalid slot specification errors now print correctly.
|
||
(thanks to Zach Beane)
|
||
* fixed bug 320: Shared to local slot value transfers in class
|
||
redefinitions now happen corrently from superclasses as
|
||
well. (reported by Bruno Haible)
|
||
* fixed bug 316: SHIFTF now accepts VALUES forms. (reported by Bruno
|
||
Haible)
|
||
* fixed bug 322: DEFSTRUCT :TYPE LIST type predicates now handle
|
||
improper lists correctly. (reported by Bruno Haible)
|
||
* fixed bug 313: source-transform for <fun-name> was erroneously
|
||
applied to a call of a value of a variable with name <fun-name>.
|
||
(reported by Antonio Menezes Leitao)
|
||
* fixed bug 307: The obsolete instance protocol ensures that
|
||
subclasses are properly obsoleted. (thanks to Nikodemus Siivola)
|
||
* fixed bug 298, revealed by Paul F. Dietz' test suite: SBCL can
|
||
remove dead unknown-values globs from the middle of the stack.
|
||
* added a new restart to *BREAK-ON-SIGNALS* handling to make it
|
||
easier to resume long computations after using *BREAK-ON-SIGNALS*
|
||
to diagnose and fix failures. (thanks to Nikodemus Siivola)
|
||
* fixed bug reported by PFD in lisppaste #747 (and Bruno Haible from
|
||
CLISP test suite): WRITE-TO-STRING is not constant-foldable.
|
||
* fixed bugs in COMPLEX type specifier: UPGRADED-COMPLEX-PART-TYPE
|
||
is now consistent with (COMPLEX <x>); bugs in treatment of COMPLEX
|
||
MEMBER and UNION types have likewise been fixed. (thanks to Bruno
|
||
Haible)
|
||
* fixed a (fairly theoretical) bug in string printing: if
|
||
*PRINT-READABLY* is true, signal PRINT-NOT-READABLE if the string
|
||
does not have array-element-type equal to the most general string
|
||
type.
|
||
* fixed bug: SET-PPRINT-DISPATCH does not immediately resolve
|
||
function name. (thanks to Nikodemus Siivola)
|
||
* fixed bug: compile-time format string checker failed on
|
||
non-closed ~{. (reported by Thomas F Burdick)
|
||
* fixed bug: as reported by Kalle Olavi Niemitalo on #lisp IRC,
|
||
don't warn on legal loop code involving more than one aggregate
|
||
boolean. (thanks to Nikodemus Siivola)
|
||
* fixed bug: as reported by Peter Graves on #lisp IRC, passing a NIL
|
||
in keyword position to MAKE-PACKAGE was not being reported as
|
||
invalid.
|
||
* fixed bug: as reported by Juan Ripoll on cmucl-imp,
|
||
MULTIPLE-VALUE-BIND should be able to lexically bind lambda list
|
||
keywords.
|
||
* fixed bugs 280 and 312: the checking for multiple definitions in a
|
||
file is less likely to become confused by uses of inline
|
||
functions.
|
||
* fixed bug: the #S reader macro performs the keyword coercion
|
||
specified for slot names. (reported by Kalle Niemitalo)
|
||
* fixed bug: lambda lists may contain symbols whose names start with
|
||
& but are not lambda-list-keywords; their occurrence triggers a
|
||
STYLE-WARNING.
|
||
* fixed bug 321: define-method-combination argument lambda lists do
|
||
not cause invalid code to be generated when &optional or &aux
|
||
variables have default values. (reported by Bruno Haible)
|
||
* fixed bug 327: system subclasses of STRUCTURE-OBJECT or CONDITION
|
||
have CLOS classes; this appears also to have fixed reported
|
||
instability in stack exhaustion detection.
|
||
* fixed bug: the CONTROL-ERROR from ABORT, CONTINUE and
|
||
MUFFLE-WARNING when no associated restart is present is now
|
||
printable.
|
||
* optimization: rearranged the expansion of various defining macros
|
||
so that each expands into only one top-level form in a
|
||
:LOAD-TOPLEVEL context; this appears to decrease fasl sizes by
|
||
approximately 10%.
|
||
* optimization: used a previously little-used slot in symbols to
|
||
cache SXHASH values, yielding a 5-10% compiler speedup. (thanks
|
||
to Juho Snellman)
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** MAKE-INSTANCES-OBSOLETE returns the class name when called with
|
||
a symbol.
|
||
** Fixed an optimization bug related to inheritance of initforms
|
||
from local to shared slots.
|
||
** FILE-POSITION works as specified on BROADCAST-STREAMs.
|
||
** CAST optimizer forgot to flush argument derived type.
|
||
** print/read consistency on floats is now orders of magnitude
|
||
more likely. (thanks also to Bruno Haible for a similar report
|
||
and discussions)
|
||
** removed stack cleaning in the cleanup part of UNWIND-PROTECT.
|
||
** IMAGPART is specified (infelicitously) to return (* 0 <thing>)
|
||
for objects of type REAL. Make it so.
|
||
** SXHASH is specified (infelicitously) to respect similarity,
|
||
which means that (SXHASH 0.0) must equal (SXHASH -0.0). Make
|
||
it so. (thanks to Markus Ziegler)
|
||
** on the Alpha, the compiler succeeds in compiling functions
|
||
returning a known number of arguments greater than 63.
|
||
** fixed handling of invalid NIL arguments in keyword position
|
||
in local calls.
|
||
** fixed non-pretty printing of arrays with *PRINT-RADIX* being
|
||
true.
|
||
** provided a readably-printable representation for RANDOM-STATE
|
||
objects.
|
||
** ensured that pathnames, where they have a namestring, always
|
||
print using #P"..." syntax.
|
||
|
||
changes in sbcl-0.8.10 relative to sbcl-0.8.9:
|
||
* Support for the forthcoming 2.0 version of the NetBSD kernel
|
||
running on x86 hardware has been added. (thanks to Perry
|
||
E. Metzger most immediately, and others for their past work)
|
||
* SBCL now runs on OpenBSD 3.4. (Thanks to Scott Parish; 3.4 is the
|
||
current release version; SBCL's OpenBSD support had been broken
|
||
since about the time of OpenBSD's switch to ELF binary format.)
|
||
* [placeholder for DX summary]
|
||
** user code with &REST lists declared dynamic-extent, under high
|
||
speed or space and low safety and debug optimization policy.
|
||
* The manual has been converted to Texinfo format and the debugger
|
||
chapter from the cmucl manual has been added.
|
||
* A facility has been added to extract documentation strings from
|
||
sbcl and store them as Texinfo-formatted snippets for inclusion in
|
||
the manual (via Texinfo's @include directive)
|
||
* bug fix: compiler emitted division in optimized DEREF. (thanks for
|
||
the test case to Dave Roberts)
|
||
* bug fix: multidimensional simple arrays loaded from FASLs had fill
|
||
pointers. (reported by Sean Ross)
|
||
* bug fix: PROFILE output is printed nicely even for large numerical
|
||
values. (thanks to Zach Beane)
|
||
* bug fix: streams with element-type (SIGNED-BYTE <N>) for <N>
|
||
greater than 32 handle EOF correctly.
|
||
* bug fix: on X86 an immediate argument of the IMUL instruction is
|
||
correctly printed in disassembly. (thanks to Lutz Euler)
|
||
* bug fix: class slots in redefined classes preserve their old
|
||
values. (thanks to Bruno Haible and Nikodemus Siivola)
|
||
* bug fix: compilation of funcalls of CXX+R (e.g. CDDR) now
|
||
succeeds. (reported by Marco Baringer)
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** READ-SEQUENCE now works on ECHO-STREAMs.
|
||
** RATIONALIZE works more according to its specification. (thanks
|
||
to Bruno Haible)
|
||
|
||
changes in sbcl-0.8.9 relative to sbcl-0.8.8:
|
||
* deprecation of old extension: *DEBUG-PRINT-LEVEL* and
|
||
*DEBUG-PRINT-LENGTH* are now deprecated in favor of the new, more
|
||
general SB-DEBUG:*DEBUG-PRINT-VARIABLE-ALIST* mechanism. (This
|
||
should matter to you only if you rebind the printer control
|
||
variables and then find you want different bindings in the
|
||
debugger than in the ordinary execution of your program.)
|
||
* The runtime build system has been tweaked to support building
|
||
(on SPARC/SunOS) using a C compiler which invokes Sun's own
|
||
assembler and linker. (thanks to Nikodemus Siivola)
|
||
* Unbound, undefined, undeclared variables now trigger full
|
||
WARNINGs, not just STYLE-WARNINGs, on the assumption that this is
|
||
more often programmer error than deliberate exploitation of undefined
|
||
behaviour.
|
||
* optimization: the hash algorithm for strings has changed to one
|
||
that is less vulnerable to spurious collisions. (thanks to Juho
|
||
Snellman)
|
||
* optimization: VECTOR-POP, VECTOR-PUSH-EXTEND and REPLACE do less
|
||
needless bounds checking. (thanks to Juho Snellman)
|
||
* optimization: implemented multiplication as a modular
|
||
(UNSIGNED-BYTE 32) operation on the PPC backend.
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** ADJUST-ARRAY now copies the datum in a zero rank array if
|
||
required.
|
||
** ADJUST-ARRAY no longer adjusts non-adjustable arrays.
|
||
** MAKE-STRING-INPUT-STREAM accepts NIL as a value for :END.
|
||
** MAKE-STRING-INPUT-STREAM functions correctly for strings with
|
||
element-type NIL.
|
||
** CLEAR-INPUT accepts NIL and T for its (optional) stream
|
||
argument.
|
||
** Ratios can now be printed correctly with *PRINT-BASE* bound to
|
||
2, 8 or 16.
|
||
** ECHO-STREAMs no longer attempt to echo the end of file value to
|
||
their output stream on EOF from read.
|
||
** CONCATENATED-STREAM-STREAMS discards constituent streams which
|
||
have been read to end-of-file.
|
||
** CLOSE works as expected on the null CONCATENATED-STREAM, and on
|
||
STRING-STREAMS.
|
||
** Printing symbols with *PRINT-CASE* :CAPITALIZE respects the
|
||
description of determination of which consecutive characters
|
||
constitute a word.
|
||
** Printing the "Space" character with escaping on now yields "#\\ ",
|
||
rather than "#\\Space", as mandated by ANSI 22.1.3.2.
|
||
** Reading floating-point numbers with *READ-BASE* set to a number
|
||
less than 10 works correctly.
|
||
** Reading floating-point numbers with *READ-BASE* set to a number
|
||
more than 10 works correctly.
|
||
** Printing with *PRINT-READABLY* targets the standard readtable, not
|
||
the readtable currently in effect.
|
||
|
||
changes in sbcl-0.8.8 relative to sbcl-0.8.7:
|
||
* minor incompatible change: parsing of namestrings on a physical
|
||
(Unix) host has changed; numbers after the final #\. in a
|
||
namestring are no longer interpreted as a version field. This is
|
||
intented to be largely invisible to the user, except that the
|
||
meaning of the namestring "*.*.*" has changed: it now refers to a
|
||
pathname with :TYPE :WILD :NAME #<pattern "*.*">. This namestring
|
||
should usually be replaced by
|
||
(make-pathname :name :wild :type :wild :version :wild)
|
||
with the added benefit that this is more likely to be portable.
|
||
As a consequence of this change, the :IF-EXISTS :NEW-VERSION
|
||
option to OPEN now signals an error if the file being opened
|
||
exists; this may have an impact on existing code.
|
||
* fixed bug 190: RUN-PROGRAM should now work properly, respecting
|
||
signals received, on the PowerPC platforms (both Linux and
|
||
Darwin). (thanks to Pierre Mai for pointing out the location of
|
||
the error)
|
||
* several fixes on OS X: The system now builds and runs cleanly on
|
||
Panther (10.3), and works around sigreturn bug (no more SIGFPEs).
|
||
(thanks to Brian Mastenbrook)
|
||
* bug fix: DECODE-UNIVERSAL-TIME now accepts timezone arguments with
|
||
second-resolution: integer multiples of 1/3600 between -24 and 24.
|
||
(thanks to Vincent Arkesteijn)
|
||
* bug fix: functions =, /=, <, <=, >, >= did not check the argument
|
||
type when called with 1 argument; PEEK-CHAR checked type of
|
||
PEEK-TYPE only after having read first character from a
|
||
stream. (reported by Peter Graves)
|
||
* bug fix: the garbage collector now has much better locality
|
||
behaviour, and in particular no longer treats all memory as being
|
||
exhausted when many small objects point to each other in a deeply
|
||
recursive manner.
|
||
* bug fix: arrays specialized on (UNSIGNED-BYTE 15) are now
|
||
recognized as being TYPEP their class.
|
||
* bug fix: the PUSHNEW documentation string has been corrected.
|
||
(thanks to Vincent Arkesteijn)
|
||
* bug fix: defaulting of the value for the last of an atypically
|
||
large number of multiple values being bound was not being
|
||
performed correctly on the Alpha or PPC platforms
|
||
* optimization: implemented multiplication as a modular
|
||
(UNSIGNED-BYTE 32) operation on the x86 backend.
|
||
* optimization: SEARCH on simple-base-strings can now be open-coded.
|
||
(see also contrib/compiler-extras.lisp for inspiration for
|
||
teaching the compiler about the Boyer-Moore algorithm).
|
||
* value, returned by MAX (and MIN) called with several EQUALP, but
|
||
not EQL, arguments now does not depend on compiler settings.
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** in stack analysis liveness information is propagated from
|
||
non-local entry points.
|
||
** pathwise CAST removing failed when the CAST node did not start
|
||
a block.
|
||
** INPUT-STREAM-P, OUTPUT-STREAM-P, STREAM-ELEMENT-TYPE and
|
||
OPEN-STREAM-P signal a TYPE-ERROR if their argument is not a
|
||
stream.
|
||
** LOAD-LOGICAL-PATHNAME-TRANSLATIONS returns NIL if the logical
|
||
host is already defined.
|
||
** RENAME-FILE works on streams instead of signalling an internal
|
||
type error.
|
||
** PEEK-CHAR uses the current readtable when determining whether
|
||
or not a character is whitespace.
|
||
** MERGE-PATHNAMES handles the case when the pathname does not
|
||
specify a name while the default-pathname specifies a version.
|
||
** Pathnames now stand a better chance of respecting print/read
|
||
consistency.
|
||
** Attempting to use standardized file system operators with a
|
||
pathname with invalid :DIRECTORY components signals a
|
||
FILE-ERROR.
|
||
** OPEN :DIRECTION :IO no longer fails to work on non-existent
|
||
files.
|
||
** DIRECTORY on logical pathnames is more correct.
|
||
** CLEAR-INPUT, CLEAR-OUTPUT, FINISH-OUTPUT and FORCE-OUTPUT
|
||
signal a TYPE-ERROR if their argument is not a stream.
|
||
** READ-BYTE and WRITE-BYTE signal a TYPE-ERROR if their stream
|
||
designator argument does not designate a stream.
|
||
** OPEN-STREAM-P and INPUT-STREAM-P on synonym streams work by
|
||
examining the synonym.
|
||
** STREAM-ELEMENT-TYPE and FRESH-LINE on broadcast-streams now
|
||
work as specified.
|
||
** OPEN and WITH-OPEN-STREAM allow opening streams with
|
||
element-type larger than ([UN]SIGNED-BYTE 32).
|
||
|
||
changes in sbcl-0.8.7 relative to sbcl-0.8.6:
|
||
* When built with the :SB-FUTEX feature, threaded builds now take
|
||
advantage of the "fast userspace mutex" facility in Linux kernel 2.6
|
||
for faster/more reliable mutex and condition variable support.
|
||
* Incompatible change (but one you probably shouldn't have been using
|
||
anyway): the interface and code for arbitrating between multiple
|
||
threads in the same user session has been redesigned.
|
||
* bug fix: GET-SETF-EXPANSION no longer throws an internal type
|
||
error when called without an explicit environment argument.
|
||
(thanks to Nikodemus Siivola)
|
||
* bug fix: buffered :DIRECTION :IO streams are less likely to become
|
||
confused about their position. (thanks to Adam Warner and Gerd
|
||
Moellmann)
|
||
* bug fix: Pretty printing backquoted forms with unquotations in the
|
||
argument list position of various code constructs such as LAMBDA
|
||
now works correctly. (reported by Paul Dietz)
|
||
* bug fix: Pretty printing unquotations no longer loses all
|
||
stream position information.
|
||
* optimization: performance of string output streams is now less
|
||
poor for multiple small sequence writes.
|
||
* optimization: performance of CSUBTYPEP in the presence of complex
|
||
expressions involving CONS and NOT many times has been improved.
|
||
(reported by Paul Dietz)
|
||
* ASDF-INSTALL bug fix: now parses *PROXY* properly. (thanks to
|
||
Sean Ross)
|
||
* SB-SIMPLE-STREAMS enhancement: simple-streams can now be used as
|
||
streams for the REPL, for the debugger, and so on. (thanks to
|
||
David Licteblau)
|
||
* DEFINE-CODITION is more efficient. (thanks to Brian Mastenbrook)
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** the value of the :REHASH-THRESHOLD argument to MAKE-HASH-TABLE
|
||
is ignored if it is too small, rather than propagating through
|
||
to cause DIVIDE-BY-ZERO or FLOATING-POINT-OVERFLOW errors.
|
||
** extremely complex negations of CONS types were not being
|
||
sufficiently canonicalized, leading to inconsistencies in
|
||
SUBTYPEP.
|
||
** VALUES tranformer lost derived type.
|
||
|
||
changes in sbcl-0.8.6 relative to sbcl-0.8.5:
|
||
* fixed a bootstrapping bug: the build process no longer assumes
|
||
that the various BOOLE-related constants have the same value in
|
||
host and target lisps. (noted by Paul Dietz' test suite on an
|
||
SBCL binary built from CLISP)
|
||
* The system can now be dynamically linked on the MIPS platform,
|
||
which enables dynamic loading of foreign code from Lisp. (thanks
|
||
to Ralf Baechle for discussions on the MIPS ABI)
|
||
* The system now records debugging information for its own source
|
||
files in a filesystem-position-independent manner, relative to
|
||
the "SYS" logical host.
|
||
* fixed a compiler bug: MV-LET convertion did not check references
|
||
to the "max args" entry point. (reported by Brian Downing)
|
||
* tweaked disassembly notes to be less confident about proclaiming
|
||
some instruction as an LRA. (thanks to Brian Downing)
|
||
* contrib update: SB-ACLREPL is now threadsafe; multiple listeners
|
||
now each have their own history, command character, and other
|
||
characteristics. (thanks to David Lichteblau)
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** compiler failure in compiling LOGAND expressions including a
|
||
constant 0
|
||
** Implementation of ASH-MOD32 on X86 and PPC did not work for the
|
||
shift greater than 32.
|
||
** FLUSH-DEST did not mark blocks for type check regeneration.
|
||
** HANDLER-CASE failed to accept declarations in handler clauses
|
||
in some circumstances.
|
||
|
||
changes in sbcl-0.8.5 relative to sbcl-0.8.4:
|
||
* New code in contrib/sb-introspect (still probably not entirely
|
||
stable yet) provides some support for smart Lisp development
|
||
environments like SLIME.
|
||
* The conditions signalled for errors occurring when loading .fasl
|
||
files have been systematized (inheriting from SB-EXT:INVALID-FASL)
|
||
in a way which should help ASDF recover gracefully.
|
||
* The REQUIRE/PROVIDE behavior of *MODULE-PROVIDER-FUNCTIONS*
|
||
stuff has been cleaned up. If you code contrib/ stuff, this might
|
||
affect you, and you can look at contrib/README, contrib/STANDARDS,
|
||
and/or the 0.8.4.27 diff to check.
|
||
* In full calls the compiler now does not generate checks for declared
|
||
argument types for all arguments.
|
||
* various threading fixes
|
||
** and some experimental patches which didn't make it into
|
||
the main tree for this release, but which are shipped in
|
||
contrib/experimental-thread.patch as a possible fix for some
|
||
failures (deadlock, spinning...) in GC-intensive multithreaded
|
||
applications.
|
||
* fixed PPC build problem (source code incompatibility of different
|
||
library versions): added offsetof() hackery which attempts to divine
|
||
where glibc maintainers put uc_mcontext today
|
||
* fixed bug 282: compiler does not trust type assertions while passing
|
||
arguments to a full call.
|
||
* fixed bug 261: compiler allows NIL or "no value" to be accepted for
|
||
&OPTIONAL VALUES type parameter.
|
||
* fix bug 214: algorithm for noting rejected templates is now more
|
||
similar to that of template seletion. (also reported by rydis on
|
||
#lisp)
|
||
* fixed bug 141b: printing backquoted information readably and prettily
|
||
inserts a space where necessary.
|
||
* bug fix: obviously wrong type specifiers such as (FIXNUM 1) or
|
||
(CHARACTER 10) are now reported as errors, rather than propagated
|
||
as unknown types. (reported by piso on #lisp)
|
||
* bug fix: the :IF-EXISTS argument to OPEN now behaves correctly
|
||
with values NIL and :ERROR. (thanks to Milan Zamazal)
|
||
* fixed bug 191c: CLOS now does proper keyword argument checking as
|
||
described in CLHS 7.6.5 and 7.6.5.1.
|
||
* bug fix: LOOP forms using NIL as a for-as-arithmetic counter no
|
||
longer raise an error; further, using a list as a for-as-arithmetic
|
||
counter now raises a meaningful error.
|
||
* fixed bug 213a: even fairly unreasonable CONS type specifiers are
|
||
now understood by sequence creation functions such as MAKE-SEQUENCE
|
||
and COERCE.
|
||
* fixed bug 46k: READ-BYTE now signals an error when asked to read from
|
||
a STRING-INPUT-STREAM.
|
||
* compiler enhancement: SIGNUM is now better able to derive the type
|
||
of its result.
|
||
* type declarations inside WITH-SLOTS are checked. (reported by
|
||
salex on #lisp)
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** incorrect optimization of TRUNCATE for a positive first
|
||
argument and negative second.
|
||
** compiler failure in let-convertion during flushing dead code.
|
||
** compiler failure while deriving type of TRUNCATE on an
|
||
interval, containing 0.
|
||
** ASH of a negative bignum by a negative bignum count now returns
|
||
-1, not 0.
|
||
** intersection of CONS types now canonicalizes properly, fixing
|
||
inconsistencies in SUBTYPEP.
|
||
|
||
changes in sbcl-0.8.4 relative to sbcl-0.8.3:
|
||
* incompatible change: The --disable-debugger command line
|
||
option now clobbers the debugger at a more fundamental
|
||
level, by redefining #'INVOKE-DEBUGGER instead of by
|
||
rebinding *DEBUGGER-HOOK*. The main difference is that BREAK
|
||
is specified by ANSI to ignore *DEBUGGER-HOOK* and
|
||
INVOKE-DEBUGGER regardless. Under the old system, BREAK would
|
||
enter the debugger REPL and then suffer recursive errors
|
||
because *DEBUG-IO* is also messed up in --disable-debugger mode;
|
||
while under the new system, BREAK in --disable-debugger mode
|
||
terminates the system just as an unhandled error would.
|
||
* fixed compiler performance when processing loops with a step >1;
|
||
* bug fix: DOCUMENTATION now retrieves generic function
|
||
documentation. Also, DOCUMENTATION and (SETF DOCUMENTATION)
|
||
support has been systematized, and now supports the methods
|
||
specified by ANSI, along with a default method and a method for
|
||
slot documentation. (reported by Nathan Froyd)
|
||
* bug fix: effective methods associated with a generic function are
|
||
no longer cached over a change of that generic function's method
|
||
combination. (reported by Andreas Fuchs)
|
||
* bug fix: RUN-PROGRAM now does not fail if some element in $PATH
|
||
names a non-existent directory. (thanks to Andreas Fuchs)
|
||
* bug fix: ROUND and TRUNCATE could, under certain circumstances on
|
||
the PPC platform, lead to stack corruption; this has been fixed.
|
||
(reported by Rainer Joswig)
|
||
* bug fix: ASH on an (UNSIGNED-BYTE 32) with a shift of -32 or lower
|
||
no longer ever returns 1 instead of 0. (thanks to Lars Brinkhoff)
|
||
* fixed bug 285: TRUNCATE on bignum arguments, and indeed bignum
|
||
arithmetic in general, is now much more reliable on the PPC
|
||
platform.
|
||
* bug fix: LOGCOUNT on (UNSIGNED-BYTE 64) objects on the Alpha
|
||
platform now returns the right answer.
|
||
* optimization: restored some effective method precomputation in
|
||
CLOS (turned off by an ANSI fix in sbcl-0.8.3); the amount of
|
||
precomputation is now tunable.
|
||
* optimization: compiler-internal data structure use has been
|
||
reviewed, and changes have been made that should improve the
|
||
performance of the compiler by about 20%.
|
||
* optimization: performance of FILL (and :INITIAL-ELEMENT) on
|
||
simple-base-strings and simple-bit-vectors is improved.
|
||
* optimization: the optimization of 32-bit logical and arithmetic
|
||
functions introduced in version 0.8.3 on the x86 has been
|
||
implemented on the mips, ppc and sparc platforms; an
|
||
implementation of the same facility, but for 64-bit arithmetic,
|
||
has been added for the alpha.
|
||
* microoptimization: the compiler is better able to make use of the
|
||
x86 LEA instruction for multiplication by constants.
|
||
* bug fix: in some situations compiler did not report usage of
|
||
generic arithmetic in (SPEED 3) policy.
|
||
* bug 145b fix: compiler used wrong type specifier while converting
|
||
MEMBER-types to numeric.
|
||
* bug fix: COMPILE-FILE must bind *READTABLE*. (reported by Doug
|
||
McNaught)
|
||
* bug fix: (SETF AREF) on byte-sized-element arrays with constant
|
||
index argument now works properly on the Alpha platform.
|
||
* bug fix: floating point exception treatment on the Alpha platform
|
||
is improved.
|
||
* bug fix: FILE-POSITION works much better on string input and
|
||
output streams. (thanks to Nikodemus Siivola)
|
||
* bug fix: many threading/garbage collection symptoms sorted.
|
||
SB-THREAD:INTERRUPT-THREAD now safe to call on a thread that
|
||
might be pseudo-atomic.
|
||
* internal change: Stopping for GC is now done with signals not
|
||
ptrace. GC is now done in whichever thread wanted it, instead of
|
||
in the parent.
|
||
* bug fix: GC hooks (missing since 0.8) reinstated, so finalizers
|
||
work again.
|
||
* bug fix: result form in DO is not contained in the implicit
|
||
TAGBODY.
|
||
* incompatible change: ICR structure is changed; the value part of
|
||
CONTINUATION is now called LVAR; corresponding functions are
|
||
renamed (e.g. SB-C::CONTINUATION-TYPE has become SB-C::LVAR-TYPE).
|
||
* added type deriver for ISQRT (thanks to Robert E. Brown).
|
||
* bug fix: better support for loading from the command line when an
|
||
initialization file sets (READTABLE-CASE *READTABLE*). (thanks
|
||
to Adam Warner)
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** the RETURN clause in LOOP is now equivalent to DO (RETURN ...).
|
||
** ROUND and FROUND now give the right answer when given very
|
||
small float arguments.
|
||
** (FLOAT X) for X of type DOUBLE-FLOAT now returns X in all
|
||
circumstances.
|
||
** optimizer for (EXPT X 0) did not work for X not of type FLOAT.
|
||
** (GCD 0 <negative-integer>) returned <negative-integer>.
|
||
** LCM should return a non-negative integer.
|
||
** PARSE-INTEGER returned the index of a terminator instead of the
|
||
upper bounding index of a substring in case :JUNK-ALLOWED NIL.
|
||
** PARSE-INTEGER returned an incorrect index being applied to a
|
||
displaced string.
|
||
** LCM with two arguments of 0 returns 0 rather than signalling
|
||
DIVISION-BY-ZERO.
|
||
** unsigned addition of a 32-bit constant with the high bit set no
|
||
longer causes an internal compiler error on the x86.
|
||
** LOGBITP accepts a non-negative bignum as its INDEX argument.
|
||
** compiler incorrectly derived types of DPB and DEPOSIT-FIELD
|
||
with negative last argument.
|
||
** byte specifiers with zero size and position no longer cause
|
||
an error during type derivation.
|
||
** bignum multiplication on the Alpha platform now returns the
|
||
right answer.
|
||
* porting: The system now builds on SuSE AMD64, although it still
|
||
generates a 32-bit binary.
|
||
* .fasl file incompatibility: The fasl file version number has
|
||
been incremented (because of the changes to internal compiler
|
||
data structures referred to above).
|
||
|
||
changes in sbcl-0.8.3 relative to sbcl-0.8.2:
|
||
* SBCL now builds and runs on MacOS X (version 10.2), or perhaps
|
||
more accurately, on the Darwin kernel running on PowerPC hardware.
|
||
(thanks to Brian Mastenbrook, Pierre Mai and Patrik Nordebo)
|
||
* Compiler code deletion notes now signal a condition of type
|
||
SB-EXT:CODE-DELETION-NOTE (a subtype of SB-EXT:COMPILER-NOTE) with
|
||
an associated MUFFLE-WARNING restart.
|
||
* The compiler now performs limited argument count validation of
|
||
constant format strings in FORMAT, and where appropriate in ERROR,
|
||
CERROR and WARN. (thanks to Gerd Moellmann)
|
||
* New ASDF-INSTALL contrib can be used for automatic download and
|
||
installation of third-party Lisp code from CCLAN or other sites
|
||
via CLiki.
|
||
* Threaded builds (:SB-THREAD) now support SB-THREAD:INTERRUPT-THREAD,
|
||
which forces another thread to execute a function supplied by the
|
||
caller.
|
||
* bug 75 fix: WITH-OUTPUT-TO-STRING (and MAKE-STRING-OUTPUT-STREAM)
|
||
now accept and act upon their :ELEMENT-TYPE keyword argument.
|
||
(reported by Martin Atzmueller, Edi Weitz)
|
||
* bug fix: FILE-POSITION now accepts position designators up to
|
||
ARRAY-DIMENSION-LIMIT or the extreme of the off_t range, whichever
|
||
is the greater. (thanks to Patrik Nordebo)
|
||
* bug fix: MAKE-ARRAY ignored :INITIAL-CONTENTS NIL. (reported by
|
||
Kalle Olavi Niemitalo)
|
||
* bug fix: the CLASS-PROTOTYPE of the GENERIC-FUNCTION class is now
|
||
printable. (reported by Eric Marsden)
|
||
* bug fix in sb-posix: mmap() now works on systems with a 64-bit
|
||
off_t, including Darwin and FreeBSD. (thanks to Andreas Fuchs)
|
||
* x86 bug fix in control stack exhaustion checking: now shows backtrace
|
||
* bug fix in WITH-TIMEOUT: now the body can have more than one form.
|
||
(thanks to Stig Sandoe)
|
||
* bug fix in READ-SEQUENCE: READ-SEQUENCE following PEEK-CHAR or
|
||
UNREAD-CHAR now correctly includes the unread character in the
|
||
target sequence. (thanks to Gerd Moellmann)
|
||
* bug fix in threaded builds: the system can now be suspended and
|
||
resumed by shell job control with minimal disruption.
|
||
* bug fixes in times and timezones >2038AD
|
||
* better handling of "where is GNU make?" problem in build scripts
|
||
(thanks to Nikodemus Siivola)
|
||
* new optimization: inside a named function any reference to a
|
||
function with the same name is considered to be a self-reference;
|
||
this behaviour is controlled with SB-C::RECOGNIZE-SELF-CALLS
|
||
optimization quality.
|
||
* new optimization on x86: logical functions and + now have
|
||
optimized (UNSIGNED-BYTE 32) versions, which are automatically
|
||
used when the result is truncated to 32 bits.
|
||
* VALUES declaration is partially enabled.
|
||
* fixes in SB-GROVEL (thanks to Andreas Fuchs)
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** The system now obeys the constraint imposed by
|
||
UPGRADED-ARRAY-ELEMENT-TYPE that the upgraded array element
|
||
types form a lattice under type intersection.
|
||
** FFLOOR, FTRUNCATE, FCEILING and FROUND work with integers.
|
||
** ASSOC now ignores NIL elements in an alist.
|
||
** CEILING now gives the right answer with MOST-NEGATIVE-FIXNUM
|
||
and (1+ MOST-POSITIVE-FIXNUM) answers.
|
||
** The addition of a method with invalid qualifiers to a generic
|
||
function does not cause an error to be signalled immediately;
|
||
a warning is signalled, and the error is generated only on
|
||
calling the generic function.
|
||
* changed .fasl file version number, in part to add type codes for
|
||
new array subtypes UNSIGNED-BYTE 7, 15, 29, and 31 mandated by
|
||
obscure ANSI requirements
|
||
|
||
changes in sbcl-0.8.2 relative to sbcl-0.8.1:
|
||
* fixed bug 148: failure to inline-expand a local function left
|
||
garbage, confusing the compiler.
|
||
* fixed bugs 3cd: structure slot readers perform type check if the
|
||
slot can have an invalid value (i.e. it is either not initialized
|
||
or can be written with a less specific slot writer).
|
||
* bug fix: the compiler now traps array references to elements off
|
||
the end of an array; previously, the bounds checking in some
|
||
circumstances could go off-by-one.
|
||
* improved MACHINE-VERSION, especially on Linux (thanks to Lars
|
||
Brinkhoff)
|
||
* type declarations for array element types now obey the description
|
||
on the CLHS page "Declaration TYPE", as per discussions on
|
||
sbcl-help around 2003-05-08. This means that a declaration
|
||
(TYPE (ARRAY FOO) BAR) means that, within the scope of the
|
||
declaration, all references to BAR will be asserted or assumed
|
||
(with THE, so dependent on compiler policy) to involve objects of
|
||
type FOO. Note that no such declaration is implied in
|
||
(MAKE-ARRAY .. :ELEMENT-TYPE 'FOO).
|
||
* declared types of functions from the "Conditions"
|
||
chapter. (reported by Paul Dietz)
|
||
* bug fix: CERROR accepts a function as its first argument.
|
||
* bug fix: NTH an NTHCDR accept a bignum as index
|
||
arguments. (reported by Adam Warner)
|
||
* optimization: character compare routines now optimize comparing
|
||
against a constant character. (reported by Gilbert Baumann)
|
||
* bug fix: (SETF AREF) on byte-sized-element arrays with constant index
|
||
argument now works properly on the MIPS platform.
|
||
* fixed compiler failure on (TYPEP x '(NOT (MEMBER 0d0))).
|
||
* repeated evaluation of the same DEFSTRUCT, a slot of which is
|
||
declared to have a functional type, does not cause an error
|
||
anymore.
|
||
* fixed bug: sometimes MAKE-INSTANCE did not work with classes with
|
||
many :DEFAULT-INITARGS. (reported by Istvan Marko)
|
||
* fixed bug: if last continuation of a deleted block has a
|
||
destination, this destination should be deleted too. (reported by
|
||
ohler on #lisp)
|
||
* fixed a bug in the bootstrap process: the host compiler's values
|
||
of ARRAY-DIMENSION-LIMIT and ARRAY-TOTAL-SIZE-LIMIT no longer leak
|
||
into the newly-built SBCL. (reported by Eric Marsden on #lisp,
|
||
test case from Patrik Nordebo)
|
||
* improved the ability of the disassembler on the PPC platform to
|
||
provide helpful disassembly notes.
|
||
* SB-MOP:CLASS-PROTOTYPE on built-in-classes returns an instance of
|
||
the class in more cases than previously.
|
||
* bug fix: FILE-POSITION now understands :START and :END for
|
||
STRING-INPUT-STREAMs. (thanks to Nikodemus Siivola)
|
||
* bug fix: (SIGNED-BYTE 8) streams no longer return (UNSIGNED-BYTE
|
||
8) data. (thanks to David Lichteblau)
|
||
* bug fix: it is possible to add a method to a generic function
|
||
without lambda list.
|
||
* bug fix: reader failed to signal END-OF-FILE inside an
|
||
object representation. (reported by Nikodemus Siivola)
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** LAST and [N]BUTLAST should accept a bignum.
|
||
** condition slot accessors are methods.
|
||
** (VECTOR NIL) is a subtype of STRING.
|
||
|
||
changes in sbcl-0.8.1 relative to sbcl-0.8.0:
|
||
* minor incompatible change: some nonsensical specialized lambda
|
||
lists (used in DEFMETHOD) which were previously ignored now signal
|
||
errors.
|
||
* minor incompatible change: the system is now aware of the types of
|
||
variables in the COMMON-LISP package, and will signal errors for
|
||
most violations of these type constraints (where previously they
|
||
were silently accepted).
|
||
* minor incompatible change: COMPILE-FILE now uses the freedom
|
||
afforded (ANSI 3.2.2.3) to use derived function types for
|
||
functions defined in the same file. This also permits the system
|
||
to warn on static type mismatches and function
|
||
redefinition. (Currently it does not work with high DEBUG level.)
|
||
* minor incompatible change: VALUES declaration is disabled.
|
||
* When issuing notes, the compiler now signals a condition of type
|
||
SB-EXT:COMPILER-NOTE, and provides an associated MUFFLE-WARNING
|
||
restart for use in user handlers. It is expected that the
|
||
COMPILER-NOTE condition will eventually become a condition
|
||
supertype to a hierarchy of note types, which will then be
|
||
handleable in a similar fashion. However, at the moment, no such
|
||
note subtypes yet exist. (SB-INT:SIMPLE-COMPILER-NOTE exists,
|
||
but it's an implementation detail, not a classification for the
|
||
purpose above.)
|
||
* Changes in type checking closed the following bugs:
|
||
** type checking of unused values (192b, 194d, 203);
|
||
** template selection based on unsafe type assertions (192c, 236);
|
||
** type checking in branches (194bc).
|
||
* A short form of VALUES type specifier has ANSI meaning (it has
|
||
increased the number of situations when SBCL cannot perform type
|
||
checking).
|
||
* fixed bug in DEFSTRUCT: once again, naming structure slots with
|
||
keywords or constants is permissible.
|
||
* STREAM-READ-SEQUENCE and STREAM-WRITE-SEQUENCE now have methods
|
||
defined on the relevant FUNDAMENTAL-BINARY-{INPUT,OUTPUT}-STREAM
|
||
classes. (thanks to Antonio Martinez)
|
||
* improved ANSIness in DESCRIBE: The DESCRIBE function no longer
|
||
outputs FRESH-LINE or TERPRI, and no longer converts its stream
|
||
argument to a pretty-print stream. Instead, it leaves any such
|
||
operations to DESCRIBE-OBJECT methods.
|
||
* bug fix: APROPOS now respects the EXTERNAL-ONLY flag. (reported
|
||
by Teemu Kalvas)
|
||
* bug fix: NIL is now a valid destructuring argument in DEFMACRO
|
||
lambda lists. (thanks to David Lichteblau)
|
||
* bug fix: Defining a generic function with a :METHOD-CLASS being a
|
||
subclass of STANDARD-METHOD no longer causes stack exhaustion.
|
||
(thanks to Gerd Moellmann)
|
||
* fixed bug 246: increased compilation speed of long
|
||
MULTIPLE-VALUE-BIND (and likewise of NTH-VALUE with a constant
|
||
integer argument)
|
||
* a contributed module implementing COMPILER-LET and MACROEXPAND-ALL
|
||
has been included.
|
||
* DEFCONSTANT now throws a condition of type
|
||
SB-EXT:DEFCONSTANT-UNEQL if it is being asked to redefine a
|
||
constant to a non-EQL value; CONTINUE and ABORT restarts
|
||
respectively change and preserve the value.
|
||
* fixed bug 63: The code walker, part of the implementation of CLOS,
|
||
is now better at handling symbol macros.
|
||
* bug fix: There is no longer an internal implementation type named
|
||
CL:LENGTH. (reported by Raymond Toy)
|
||
* bug fix: In macro-like defining macros/special operators the
|
||
implicit block does not enclose the lambda list.
|
||
* fixed bugs 10 and 43: Bare VALUES, AND, OR and MEMBER symbols (not
|
||
enclosed in parentheses) are not suitable as type specifiers, and
|
||
their use properly signals an error now.
|
||
* bug fix: An argument count mismatch for a type specifier in code
|
||
being compiled no longer causes an unhandled error at compile
|
||
time, but signals a compile-time warning.
|
||
* fixed simple vector readable printing
|
||
* bug fix: DESCRIBE takes more care over whether the class
|
||
precedence list slot of a class is bound before accessing it.
|
||
(reported by Markus Krummenacker)
|
||
* bug fix: FORMATTER can successfully compile pretty-printer format
|
||
strings which use variants of the ~* directive inside.
|
||
* bug fix: SEARCH now applies its TEST predicate to the elements of
|
||
the arguments in the correct order. (thanks to Wolfhard Buss)
|
||
* fixed bug 235b: The compiler uses return types of MAPCAR and friends
|
||
in type inference. (thanks to Robert E. Brown)
|
||
* bug fix: Reading in symbols with an explicit package name of ""
|
||
(e.g. '||::FOO) now works correctly. (reported by Henrik Motakef)
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** NIL is now allowed as a structure slot name.
|
||
** Arbitrary numbers, not just REALs, are allowed in certain
|
||
circumstances in LOOP for-as-arithmetic clauses.
|
||
** Multiple class redefinitions before slot access no longer
|
||
causes a type error.
|
||
** (SETF FIND-CLASS) now accepts NIL as an argument to remove the
|
||
association between the name and a class.
|
||
** Generic functions with non-standard method-combination and over
|
||
five methods all of which return constants no longer return NIL
|
||
after the first few invocations. (thanks to Gerd Moellmann)
|
||
** CALL-NEXT-METHOD with no arguments now passes the original
|
||
values of the arguments, even in the presence of assignment.
|
||
** Functions [N]SUBST*, LAST, NRECONC, [N]SUBLIS may return any
|
||
object.
|
||
** DISASSEMBLE works with closures and funcallable instances.
|
||
** ADD-METHOD now returns the generic function, not the new method.
|
||
** FIND-METHOD signals an error if the lengths of the specializers
|
||
is incompatible with the generic function, even if the ERRORP
|
||
argument is true.
|
||
** TYPE-OF returns recognizeable subtypes of all built-in-types of
|
||
which its argument is a member.
|
||
** DEFCLASS only redefines the class named by its class-name
|
||
argument if that name is the proper name of the class;
|
||
otherwise, it creates a new class.
|
||
** SLOT-UNBOUND now correctly initalizes the CELL-ERROR-NAME slot
|
||
of the UNBOUND-SLOT condition to the name of the slot.
|
||
** (SETF (AREF bv 0) ...) did not work for bit vectors.
|
||
** SLOT-UNBOUND and SLOT-MISSING now have their return values
|
||
treated by SLOT-BOUNDP, SLOT-VALUE, (SETF SLOT-VALUE) and
|
||
SLOT-MAKUNBOUND in the specified fashion.
|
||
|
||
changes in sbcl-0.8.0 relative to sbcl-0.8alpha.0
|
||
* SBCL now builds using CLISP (version of late April 2003 from CVS) as
|
||
cross-compilation host. As a consequence, we can now bootstrap our
|
||
way up to SBCL starting with a bare gcc toolchain and human-readable
|
||
source code (first the source to CLISP, then the source to SBCL).
|
||
* A contributed module containing a partial implementation of the
|
||
simple-streams interface has been included. (thanks to Rudi
|
||
Schlatte)
|
||
* A contributed module implementing the RFC1321 Message Digest
|
||
Algorithm, known as MD5, has been included.
|
||
* minor incompatible change: The :NEGATIVE-ZERO-IS-NOT-ZERO feature
|
||
no longer has any effect, as the code controlled by this feature
|
||
has been deleted. (As far as we know, no-one has ever built using
|
||
this feature, and its semantics were confused in any case).
|
||
* minor incompatible change: As a consequence of making SLOT-EXISTS-P
|
||
work on conditions (as required by the ANSI specification),
|
||
SLOT-VALUE, (SETF SLOT-VALUE) and SLOT-BOUNDP likewise have the
|
||
expected behaviour on conditions. Users should note, however,
|
||
that such behaviour is not required by the ANSI specification,
|
||
and so use of this behaviour may render their code unportable.
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** the GENERIC-FUNCTION type is no longer disjoint from FUNCTION
|
||
types.
|
||
** &ENVIRONMENT parameter in macro lambda list is bound first.
|
||
** SXHASH on condition objects no longer returns NIL.
|
||
** :ALLOCATION :CLASS slots are better treated; their values are
|
||
updated on class redefinition, and initforms inherited from
|
||
superclasses are applied.
|
||
** REMOVE-METHOD returns its generic function argument even when
|
||
no method was removed.
|
||
** SHARED-INITIALIZE now initializes the values of the requested
|
||
slots, including those with :ALLOCATION :CLASS.
|
||
** ALLOCATE-INSTANCE now works on structure classes defined via
|
||
DEFSTRUCT (and not just by those from DEFCLASS :METACLASS
|
||
STRUCTURE-CLASS).
|
||
** SLOT-EXISTS-P now works on conditions, as well as structures
|
||
and CLOS instances.
|
||
** MAKE-LOAD-FORM now has the required methods on
|
||
STRUCTURE-OBJECT, CONDITION and STANDARD-OBJECT.
|
||
** MAKE-LOAD-FORM-SAVING-SLOTS no longer returns a special
|
||
keyword, and now implements the SLOT-NAMES argument.
|
||
** methods with &OPTIONAL arguments no longer allow too many
|
||
arguments to be passed in the call without error.
|
||
** DEFGENERIC now checks that the :ARGUMENT-PRECEDENCE-ORDER
|
||
option is consistent with the required arguments of the generic
|
||
function lambda list.
|
||
* bug fix: REQUIRE accepts a string designator. (Thanks to
|
||
Antonio Martinez.)
|
||
* bug fix: SB-MOP:DIRECT-SLOT-DEFINITION-CLASS and
|
||
SB-MOP:EFFECTIVE-SLOT-DEFINITION-CLASS now have the
|
||
specified-by-AMOP lambda list of (CLASS &REST INITARGS).
|
||
* bug fix: The compiler now checks for duplicated variables in macro
|
||
lambda lists.
|
||
* bug fix: SETQ on globals returns the correct value.
|
||
* fixed bug 47.d: (DEFGENERIC IF (X)) now signals a PROGRAM-ERROR,
|
||
not a COMPILER-ERROR (followed by some other strange error on
|
||
choosing the CONTINUE restart).
|
||
* bug fix: make.sh and friends are now more consistent in the way that
|
||
they look for GNU "make".
|
||
|
||
changes in sbcl-0.8alpha.0 relative to sbcl-0.7.14
|
||
* experimental native threads support (on x86 Linux >=2.4 only).
|
||
This is not compiled in by default: you need to add :SB-THREAD to
|
||
the target features. See the "Beyond ANSI" chapter of the manual
|
||
for details.
|
||
* fix for longstanding nonANSIism: The old distinction between
|
||
CL:CLASS objects and SB-PCL:CLASS objects has been eliminated.
|
||
The return value from CL:FIND-CLASS is now a CLOS class, and
|
||
likewise that of CL:CLASS-OF; CL:BUILT-IN-CLASS,
|
||
CL:STRUCTURE-CLASS and CL:STANDARD-CLASS name CLOS classes.
|
||
* An interface to the MetaObject Protocol, as described in Kiczales,
|
||
des Rivieres and Bobrow's "The Art of the Metaobject Protocol",
|
||
MIT Press, 1991, is available from the SB-MOP package.
|
||
* incompatible change: the SB-PCL package should now be considered
|
||
a private implementation detail, and no longer a semi-private MOP
|
||
interface.
|
||
* minor incompatible change: due to rearrangement for threads, the
|
||
control stack and binding stack are now allocated at arbitrary
|
||
addresses instead of being hardcoded per-port. Users affected by
|
||
this probably have to be doing advanced things with shared
|
||
libraries, and will know who they are.
|
||
* minor incompatible change: Previously, all --eval forms used were
|
||
processed with READ before any of them were processed with EVAL.
|
||
Now each --eval form is processed with both READ and EVAL before
|
||
the next --eval form is processed. (Thus package operations like
|
||
sbcl --eval "(defpackage :foo)" --eval "(print 'foo::bar)" now
|
||
work as the user might reasonably expect.)
|
||
* minor incompatible change: *STANDARD-INPUT* is now only an
|
||
INPUT-STREAM, not a BIDIRECTIONAL-STREAM. (thanks to Antonio
|
||
Martinez)
|
||
* minor incompatible change: Y-OR-N-P is now character-oriented,
|
||
not line oriented. Also, YES-OR-NO-P now works without errors.
|
||
(thanks to Antonio Martinez)
|
||
* sb-aclrepl module improvements: an integrated inspector, added
|
||
repl features, and a bug fix to :trace command.
|
||
* Known functions, which cannot be open coded by the backend, are
|
||
considered to be able to check types of their arguments. (fixing
|
||
a bug report by Nathan J. Froyd)
|
||
* fixed a bug in computing method discriminating functions: It is
|
||
now possible to define methods specialized on classes which have
|
||
forward-referenced superclasses. (thanks to Gerd Moellmann)
|
||
* fixed evaluation order in optional entries (reported by Gilbert
|
||
Baumann)
|
||
* SB-MOP:ENSURE-CLASS-USING-CLASS now takes its arguments in the
|
||
specified-by-AMOP order of (CLASS NAME &REST ARGS &KEY).
|
||
* SB-MOP:COMPUTE-EFFECTIVE-SLOT-DEFINITION now takes the
|
||
required-by-AMOP NAME argument, as well as CLASS and
|
||
DIRECT-SLOT-DEFINITIONS. (thanks to Kevin Rosenberg)
|
||
* fixed bug 20: DEFMETHOD can define methods using names that are
|
||
not the proper names of classes to designate class specializers.
|
||
* bug fix: INTERACTIVE-STREAM-P now works on streams associated with
|
||
Unix file descriptors, instead of blowing up. (thanks to Antonio
|
||
Martinez)
|
||
* Garbage collection refactoring: user-visible change is that a
|
||
call to the GC function during WITHOUT-GCING will not do garbage
|
||
collection until the end of the WITHOUT-GCING. If you were doing
|
||
this you were probably losing anyway.
|
||
* fixed bug in MEMBER type: (MEMBER 0.0) is not the same as
|
||
(SINGLE-FLOAT 0.0 0.0), because of the existence of -0.0 which is
|
||
TYPEP the latter but not the former.
|
||
* The compiler issues a full WARNING for calls to undefined functions
|
||
with names from the CL package.
|
||
* MAP-INTO for a vector destination is open coded. (reported by
|
||
Brian Downing on c.l.l)
|
||
* bug fix: the long form of DEFINE-METHOD-COMBINATION now accepts a
|
||
documentation string.
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** COPY-ALIST now signals an error if its argument is a dotted
|
||
list.
|
||
** Condition slots are now accessed more correctly in the presence
|
||
of multiple initargs for a given slot.
|
||
** The USE-VALUE, CONTINUE and STORE-VALUE functions now correctly
|
||
exclude restarts of the same name associated with a different
|
||
condition.
|
||
** DEFCLASS of forward-referenced classes with another
|
||
forward-referenced class in the superclasses list no longer
|
||
causes an error.
|
||
** Condition slots are now initialized once each, not multiple
|
||
times. (thanks to Gerd Moellmann)
|
||
** CONVERT-MORE-CALL failed on a lambda list (&KEY). (thanks to
|
||
Gerd Moellmann)
|
||
** &WHOLE and &REST arguments in macro lambda lists are patterns.
|
||
** NSET-EXCLUSIVE-OR does not return extra elements when its
|
||
arguments contain duplicated elements.
|
||
** RESTART-CASE understands local macros.
|
||
** RESTART-CASE associates exactly its own restarts with a condition.
|
||
** ENDP in safe mode checks its argument to be of type LIST.
|
||
** COPY-SYMBOL in a threaded build no longer fails when the symbol
|
||
in question is unbound.
|
||
** Optimized MAKE-INSTANCE functions no longer cause internal
|
||
assertion failures in the presence of duplicate initargs.
|
||
** SLOT-MAKUNBOUND returns the instance acted upon, not NIL.
|
||
** Side-effectful :DEFAULT-INITARGS have their side-effects
|
||
propagated even in the ctor optimized implementation of
|
||
MAKE-INSTANCE.
|
||
** :ALLOW-OTHER-KEYS NIL is now accepted in an initarg list.
|
||
|
||
changes in sbcl-0.7.14 relative to sbcl-0.7.13:
|
||
* a better implementation of SXHASH on (simple) bit vectors,
|
||
measured both in execution speed and in distribution of results
|
||
over the positive fixnums, has been installed. Likewise, a better
|
||
implementation of EQUAL for simple bit vectors is now available.
|
||
* fixed CEILING optimization for a divisor of form 2^k.
|
||
* fixed bug 240 (emitting extra style warnings "using the lexical
|
||
binding of the symbol *XXX*" for &OPTIONAL arguments). (reported
|
||
by Antonio Martinez)
|
||
* fixed SXHASH, giving different results for NIL depending on type
|
||
declarations (SYMBOL or LIST). (thanks to Gerd Moellmann)
|
||
* fixed bug in DEFPARAMETER and DEFVAR: they could assign a lexical
|
||
variable. (found by Rolf Wester)
|
||
* SBCL does not ignore type declarations for special
|
||
variables. (reported by rif on c.l.l 2003-03-05)
|
||
* some bug fixes in contrib/sb-aclrepl/
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** a bug in the CONS type specifier, whereby the CAR and CDR
|
||
types got intertwined, has been fixed;
|
||
** the type system is now able to reason about the interaction
|
||
between INTEGER and RATIO types more completely;
|
||
** APPEND, [N]REVERSE and NRECONC check that those their
|
||
arguments, which must be proper lists, are really so;
|
||
** An array specialized to be unable to hold elements has been
|
||
implemented, as required -- yes, really -- by ANSI;
|
||
** GETF and GET-PROPERTIES throw a TYPE-ERROR, not a SIMPLE-ERROR,
|
||
on malformed property lists;
|
||
|
||
changes in sbcl-0.7.13 relative to sbcl-0.7.12:
|
||
* incompatible packaging change: in line with Unix convention,
|
||
SBCL now looks for its core file in /usr/{local/,}lib/sbcl/sbcl.core
|
||
if it's not in $SBCL_HOME. It also sets SBCL_HOME to match.
|
||
* REQUIRE and PROVIDE are now optionally capable of doing something
|
||
useful. See the documentation string for REQUIRE.
|
||
* infrastructure for a managed SBCL contrib system: contributed
|
||
modules in this release include:
|
||
** the ASDF system definition facility;
|
||
** an interface to the BSD Sockets API;
|
||
** an ACL-like convenience interface to the repl;
|
||
(thanks to Kevin Rosenberg)
|
||
** an implementation of ROTATE-BYTE, with efficient implementation
|
||
on x86 hardware;
|
||
* fixed a bug in LOG, so that LOG of a rational argument near 1 now
|
||
gives a closer approximation to the right answer than previously.
|
||
(thanks to Raymond Toy)
|
||
* fixed bug 157: TYPEP, SUBTYPEP, UPGRADED-ARRAY-ELEMENT-TYPE and
|
||
UPGRADED-COMPLEX-PART-TYPE now take (ignored, in all situations)
|
||
optional environment arguments, as required by ANSI.
|
||
* fixed bugs in other functions taking environment objects, allowing
|
||
calls with an explicit NIL environment argument to be compiled
|
||
without error.
|
||
* fixed bug 228: primary return values from
|
||
FUNCTION-LAMBDA-EXPRESSION are either NIL or suitable for input to
|
||
COMPILE or FUNCTION.
|
||
* fixed a bug in DEFSTRUCT: predicates for :NAMED structures with
|
||
:TYPE will no longer signal errors on innocuous objects.
|
||
* fixed bug 231b: SETQ is better at respecting type declarations in
|
||
the lexical environment.
|
||
* fixed a bug in DEFCLASS: classes named by symbols with no or
|
||
unprintable packages can now be defined.
|
||
* fixed a bug in RESTART-BIND: The :TEST-FUNCTION option had been
|
||
carelessly renamed to :TEST-FUN. (thanks to Robert E. Brown)
|
||
* fixed compiler failure related to checking types of functions.
|
||
(reported by Robert E. Brown)
|
||
* the compiler is now much more consistent in its error-checking
|
||
treatment of bounding index arguments to sequence functions: in
|
||
(SAFETY 3) code, errors will be signalled in almost all cases if
|
||
invalid sequence bounding indices are passed to functions defined
|
||
by ANSI to operate on sequences.
|
||
* fixed a bug in the build procedure: documentation of SBCL-specific
|
||
packages is now preserved and available in the final Lisp image.
|
||
* lifted FDEFINITION lookup out of loops in the implementation of
|
||
many list operations. (thanks to Robert E. Brown)
|
||
* fixed a bug in the reader: the #n# reader macro now works for
|
||
objects of type STANDARD-OBJECT. (reported by Tony Martinez)
|
||
* the compiler is now aware that SYMBOL-FUNCTION returns a FUNCTION
|
||
and that READ-DELIMITED-LIST returns a LIST. (thanks to Robert
|
||
E. Brown and Tony Martinez respectively)
|
||
* PCL is now smarter about SLOT-VALUE, (SETF SLOT-VALUE) and
|
||
SLOT-BOUNDP: in particular, it is now able to optimize them much
|
||
better, and is now not vulnerable to having packages renamed.
|
||
Furthermore, a compliance bug has been fixed: SLOT-MISSING is now
|
||
always called when a slot is not present in an instance. (thanks
|
||
to Gerd Moellmann)
|
||
* fixed a bug related to CONCATENATED-STREAMs: PEEK-CHAR will no
|
||
longer signal an error on unreading a character following EOF on
|
||
the previous constituent stream. (thanks to Tony Martinez)
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** ARRAY-IN-BOUNDS-P now allows arbitrary integers as arguments,
|
||
not just nonnegative fixnums;
|
||
** the logical bit-array operators such as BIT-AND now accept an
|
||
explicit NIL for their "opt-arg" argument (to indicate a
|
||
freshly-consed result bit-array);
|
||
** ELT now signals an error on an invalid sequence index in safe
|
||
code;
|
||
** the type system is now cleverer about negations of numeric
|
||
types, and consequently understands the BIGNUM and RATIO types
|
||
better;
|
||
** the type system is now cleverer about the interaction between
|
||
INTEGER and RATIO types: while bugs still remain, many more
|
||
cases are accurately computed;
|
||
** in TYPECASE, OTHERWISE now only introduces an otherwise-clause
|
||
if it is in the last clause;
|
||
** CONSTANTLY now correctly returns a side-effect-free function in
|
||
all cases;
|
||
** DECLARE is no longer treated as a special-operator; in
|
||
particular, SPECIAL-OPERATOR-P no longer returns T for DECLARE;
|
||
* incremented fasl file version number due to the change in the
|
||
DEFSTRUCT-SLOT-DESCRIPTION structure.
|
||
|
||
changes in sbcl-0.7.12 relative to sbcl-0.7.11:
|
||
* minor incompatible change: code processed by the "interpreter" or
|
||
EVAL now has a compilation optimization policy of (DEBUG 2)
|
||
(changed from (DEBUG 1)) to improve debuggability of interactive
|
||
development, and to allow the use of the debug RETURN command in
|
||
such code.
|
||
* an experimental implementation of the RETURN command for the
|
||
debugger has been included. (thanks to Frederik Kuivinen)
|
||
* fixed bug 62: constraints were not propagated into a loop.
|
||
* fixed bug in embedded calls of SORT (reported and investigated by
|
||
Wolfgang Jenkner).
|
||
* fixed some bugs revealed by Paul Dietz' test suite:
|
||
** printing and reading of arrays with some dimensions having
|
||
length 0 (thanks to Gerd Moellmann);
|
||
** BOA constructor with &AUX argument without a default value does
|
||
not cause a type error;
|
||
** CONSTANTP now returns true for all self-evaluating objects.
|
||
|
||
changes in sbcl-0.7.11 relative to sbcl-0.7.10:
|
||
* fixed bug 127: DEFSTRUCT now does not clobber old structure
|
||
accessors that are related by inheritance, as specified in the
|
||
:CONC-NAME section of the specification of DEFSTRUCT. (thanks to
|
||
Valtteri Vuorikoski)
|
||
* The compiler is now able to inline functions that were defined in
|
||
a complex lexical environment (e.g. inside a MACROLET).
|
||
* fixed bug in DESCRIBE, which now works on rank-0 arrays. (thanks
|
||
to Lutz Euler)
|
||
* Support for the upcoming FreeBSD-5.0 release has been included.
|
||
(thanks to Dag-Erling Smorgrav)
|
||
* fixed bug 219: DEFINE-COMPILER-MACRO no longer has compile-time
|
||
effect when it is not in a toplevel context.
|
||
* fixed bug 222: DEFMETHOD and SYMBOL-MACROLET interactions now
|
||
stand a better chance of being correct. (thanks to Gerd
|
||
Moellmann)
|
||
* fixed bug in COERCE, which now signals an error on coercing a
|
||
rational to a bounded real type which excludes the expected
|
||
answer.
|
||
* The compiler is now able to derive types more accurately from the
|
||
COERCE and COMPILE functions.
|
||
* fixed bug 223: functional binding is considered to be constant
|
||
only for symbols in the CL package.
|
||
* fixed bug 231: SETQ did not check the type of a variable being set
|
||
(reported by Robert E. Brown)
|
||
* A new optimization for MAKE-INSTANCE has been included, fixing
|
||
various bugs (including relating to :ALLOCATION :CLASS slots and
|
||
:DEFAULT-INITARGS over-eager evalueation). (thanks to Gerd
|
||
Moellmann)
|
||
* fixed some LOOP bugs revealed by Paul Dietz' test suite:
|
||
** As required by ANSI, LOOP now disallows anonymous collection
|
||
clauses such as COLLECT I in conjunction with aggregate boolean
|
||
clauses such as THEREIS (= I 1);
|
||
** LOOP now signals an error when any variable is reused in the
|
||
same loop (including the potentially useful construct analogous
|
||
to WITH A = 1 WITH A = (1+ A);
|
||
** IT is only a special loop symbol within the first clause of a
|
||
conditional loop clause;
|
||
** LOOP with a typed iteration variable over a hashtable now
|
||
signals a type error iff it should.
|
||
* fixed some other bugs revealed by Paul Dietz' test suite:
|
||
** FILE-STREAM now names the class previously known as FD-STREAM;
|
||
** in DEFSTRUCT, a bare :CONC-NAME (or a :CONC-NAME with no
|
||
argument) no longer signals an error;
|
||
** likewise in DEFSTRUCT, :CONC-NAME NIL now respects the package
|
||
of the slot symbol, rather than using the current package
|
||
((:CONC-NAME "") continues to intern the slot's name in the
|
||
current package);
|
||
* incremented fasl file version number, because of the incompatible
|
||
change to the DEFSTRUCT-DESCRIPTION structure, and again because
|
||
of the new implementation of DEFINE-COMPILER-MACRO.
|
||
|
||
changes in sbcl-0.7.10 relative to sbcl-0.7.9:
|
||
* Support for building SBCL for MIPS platforms running in
|
||
little-endian mode has now been checked in, and basic
|
||
functionality on said platforms verified.
|
||
* minor incompatible change: PCL now records the pathname of a file
|
||
in which methods and the like are defined, rather than its
|
||
truename.
|
||
* minor incompatible change: TRUENAME now considers the truename of
|
||
a file naming a directory to be the pathname with :DIRECTORY
|
||
component indicating that directory.
|
||
* minor incompatible change: a NAMED clause in the extended form of
|
||
LOOP no longer causes a BLOCK named NIL to surround the LOOP. The
|
||
reason for the previous behaviour is unclear.
|
||
* more systematization and improvement of CLOS and MOP conformance
|
||
in PCL (thanks to Gerd Moellman and Pierre Mai):
|
||
** the standard ANSI CL generic function NO-NEXT-METHOD is now
|
||
implemented;
|
||
** DEFINE-METHOD-COMBINATION no longer signals an error for
|
||
primary methods with no specializers;
|
||
** the MOP generic function GENERIC-FUNCTION-DECLARATIONS is now
|
||
implemented;
|
||
** the Readers for Class Metaobjects methods CLASS-DIRECT-SLOTS
|
||
and CLASS-DIRECT-DEFAULT-INITARGS have been implemented for
|
||
FORWARD-REFERENCED-CLASSes; error reporting on
|
||
CLASS-DEFAULT-INITARGS, CLASS-PRECEDENCE-LIST and CLASS-SLOTS
|
||
has been improved;
|
||
** SXHASH on CLOS instances now uses a slot internal to the
|
||
instance to return different numbers on distinct instances,
|
||
while preserving the same return value through invocations of
|
||
CHANGE-CLASS;
|
||
** DEFMETHOD signals errors when methods with longer incongruent
|
||
lambda lists are added to generic functions;
|
||
** COMPUTE-CLASS-PRECEDENCE-LIST now has a method specialized on
|
||
CLASS, as specified in AMOP;
|
||
** COMPUTE-SLOTS :AROUND now assigns locations sequentially based
|
||
on the order returned by the primary method for classes of
|
||
class STANDARD-CLASS;
|
||
** DEFINE-METHOD-COMBINATION now works with the :ARGUMENTS option.
|
||
* fixed some bugs shown by Paul Dietz' test suite:
|
||
** DOLIST puts its body in TAGBODY;
|
||
** SET-EXCLUSIVE-OR sends arguments to :TEST function in the
|
||
correct order;
|
||
** MULTIPLE-VALUE-SETQ evaluates side-effectful places before
|
||
value producing form;
|
||
** if more variables are given to PROGV than values, extra
|
||
variables are bound and made to have no value;
|
||
** NSUBSTITUTE on list arguments gets the right answer with
|
||
:FROM-END;
|
||
** ELT signals an error of type TYPE-ERROR when the index argument
|
||
is not a valid sequence index;
|
||
** LOOP signals (at macroexpansion time) an error of type
|
||
PROGRAM-ERROR when duplicate variable names are found;
|
||
** LOOP supports DOWNTO and ABOVE properly; (thanks to Matthew Danish)
|
||
** FUNCALL of special-operators now cause an error of type
|
||
UNDEFINED-FUNCTION;
|
||
** PSETQ now works as required in the presence of side-effecting
|
||
symbol-macro places;
|
||
** NCONC accepts any object as its last argument;
|
||
** :COUNT argument to sequence functions may be BIGNUM; (thanks to
|
||
Gerd Moellman)
|
||
** loop-for-as-package does not require a package to be explicitely
|
||
specified;
|
||
** LOOP WITH now treats NIL in the d-var-spec correctly as an
|
||
ignored binding.
|
||
* fixed bug 166: compiler preserves "there is a way to go"
|
||
invariant when deleting code.
|
||
* fixed bug 172: macro lambda lists with required arguments after
|
||
&REST arguments now cause an error to be signalled. (thanks to
|
||
Matthew Danish)
|
||
* fixed Entomotomy PEEK-CHAR-WRONGLY-ECHOS-TO-ECHO-STREAM
|
||
bug. (thanks to Matthew Danish)
|
||
* fixed bug 225: STRING-STREAM is now a class. (reported by Gilbert
|
||
Baumann)
|
||
* fixed bug 136: CALL-NEXT-METHOD no longer gets confused when
|
||
arguments are lexically rebound. (thanks to Gerd Moellmann and
|
||
Pierre Mai)
|
||
* fixed bug 194: error messages are now more informative when there
|
||
is no primary method applicable in a call to a generic
|
||
function. (thanks to Gerd Moellmann)
|
||
* fixed bug in command line argument checking (thanks to Julian
|
||
Fondren)
|
||
* fixed bug in COUNT-IF, making it handle :FROM-END correctly
|
||
(thanks to Matthew Danish)
|
||
* incremented fasl file version number, because of the
|
||
SXHASH-related changes in the layout of CLOS data structures
|
||
|
||
changes in sbcl-0.7.9 relative to sbcl-0.7.8:
|
||
* minor incompatible change: The runtime (the Unix executable named
|
||
"sbcl") is now much pickier about the .core files it will load.
|
||
Essentially it now requires .core files to descend from the same
|
||
build (not just the same sources or LISP-IMPLEMENTATION-VERSION)
|
||
as the runtime does. (The intent is to prevent the crashes which
|
||
can occur, and which can even be reported as mysterious failures,
|
||
when people patch the sources or change the build parameters
|
||
without changing LISP-IMPLEMENTATION-VERSION, then mix and match
|
||
sbcl and .core files.)
|
||
* fixed bug: VALUES-LIST is no longer optimized away.
|
||
* fixed bug 142: The FFI conversion of C string values to Lisp
|
||
string values no longer conses excessively. (thanks to Nathan
|
||
Froyd porting Raymond Toy's fix to CMU CL)
|
||
* began to systematize and improve MOP conformance in PCL (thanks to
|
||
Nathan Froyd, Gerd Moellman and Pierre Mai):
|
||
** SLOT-DEFINITION-ALLOCATION now returns :CLASS, not the class
|
||
itself;
|
||
** GENERIC-FUNCTION-ARGUMENT-PRECEDENCE-ORDER is now implemented;
|
||
** FINALIZE-INHERITANCE is now called on class finalization;
|
||
** DOCUMENTATION and (SETF DOCUMENTATION) now have the correct
|
||
argument precedence order.
|
||
* fixed bug 202: The compiler no longer fails on functions whose
|
||
derived types contradict their declared type.
|
||
* DEFMACRO is implemented via EVAL-WHEN instead of IR1 translation,
|
||
so it can be non-toplevel.
|
||
* The fasl file version number has changed (because of the new
|
||
implementation of DEFMACRO).
|
||
* (mostly) fixed bugs 46b and 46c: sequence functions now check, in
|
||
safe code, that any length requirement by their type-specifier
|
||
argument is valid. The exceptions to this are described in bug
|
||
213.
|
||
* fixed bugs 46h and 46i: TWO-WAY- and CONCATENATED-STREAM creation
|
||
functions now check the types of their inputs as required by ANSI.
|
||
* fixed bug 48c: SYMBOL-MACROLET signals PROGRAM-ERROR when an
|
||
introduced symbol is DECLAREd to be SPECIAL.
|
||
* fixed reading of (COMPLEX DOUBLE-FLOAT) literals from fasl files
|
||
* fixed bug: :COUNT argument to sequence functions may be negative
|
||
* fixed bug: body of DO-SYMBOLS may contain declarations
|
||
* fixed bug: PUSHNEW now evaluates its arguments from left to right
|
||
(reported by Paul F. Dietz, fixed by Gerd Moellman)
|
||
* fixed bug: PUSH, PUSHNEW and POP now evaluate a place given by a
|
||
symbol macro only once
|
||
* fixed printing of call frame when argument list is unavailable
|
||
* fixed bug: :ALLOW-OTHER-KEYS is an allowed keyword name
|
||
* compiler no longer signals WARNING on unknown keyword
|
||
:ALLOW-OTHER-KEYS
|
||
|
||
changes in sbcl-0.7.8 relative to sbcl-0.7.7:
|
||
* A beta-quality port to the mips architecture running Linux,
|
||
based on the old CMUCL backend, has been made. It has been tested
|
||
on a big-endian kernel, and works sufficiently well to be able to
|
||
rebuild itself; it has not been tested in little-endian mode.
|
||
* fixed an inconsistency between gencgc.c and purify.c which made
|
||
dumping/loading .core files unreliable
|
||
* fixed bug 120a: The compiler now deals correctly with IFs where
|
||
the consequent is the same as the alternative, instead of
|
||
misderiving the return type. (thanks to Alexey Dejneka)
|
||
* fixed bug 113: Logical pathnames are now dumpable (the logical
|
||
host is resolved at load-time, throwing an error if it is not
|
||
found).
|
||
* fixed bug 174: FORMAT's error message is slightly clearer when a
|
||
non-printing character is used in a format directive.
|
||
* fixed several bugs in compiler checking of type declarations, i.e.
|
||
violations of the Python "declarations are assertions" principle
|
||
(thanks to Alexey Dejneka)
|
||
* fixed several bugs in PCL's error checking (thanks to Gerd
|
||
Moellmann)
|
||
* fixed bug: printing of FILE-ERROR (thanks to Antonio
|
||
Martinez-Shotton)
|
||
* fixed bug in compilation of functions as first class values
|
||
(thanks to Antonio Martinez-Shotton)
|
||
* The compiler's handling TYPE-ERRORs which it can prove will
|
||
inevitably happen at runtime has been cleaned up and corrected
|
||
in several ways. (thanks to Alexey Dejneka)
|
||
* improved argument type checking for various basic arithmetic
|
||
operations (MAX, +, LOGXOR, etc.) which have had so much TLC
|
||
lavished on them in the past that they can be compiled in many
|
||
ways in different special cases
|
||
* fixed bug 181: compiler checks validity of user supplied type
|
||
specifiers
|
||
* cleaned up code flushing in optimization: Function calls which
|
||
should signal errors for safety purposes (e.g. which ANSI says
|
||
should signal errors when their arguments are of incorrect type)
|
||
are no longer optimized away.
|
||
* added new extension: SB-DEBUG:BACKTRACE-AS-LIST
|
||
* incremented fasl file version number, because changes in the
|
||
implementation of sequence functions like COERCE caused
|
||
internal utility functions like COERCE-TO-SIMPLE-VECTOR (used
|
||
in old inline expansions) to become undefined. (Actually these
|
||
changes were later undone, so we might very well be binary
|
||
compatible with 0.7.7 after all, but leaving the version number
|
||
incremented seemed like the simplest and most conservative
|
||
thing to do.)
|
||
|
||
changes in sbcl-0.7.7 relative to sbcl-0.7.6:
|
||
* An alpha-quality port to the parisc architecture running Linux,
|
||
based on the old CMUCL backend, has been made. This, even more so
|
||
than the other backends, should be considered still a work in
|
||
progress; known problems include that the Linux kernel in 64-bit
|
||
mode does not propagate the correct sigcontext structure to
|
||
userspace, and consequently SBCL on a parisc64 kernel will not
|
||
work yet.
|
||
* fixed bug 189: The compiler now respects NOTINLINE declarations for
|
||
functions declared in FLET and LABELS. (I.e. "LET conversion" is
|
||
suppressed.) Also now that the compiler is looking at declarations
|
||
in the environment, it checks optimization declarations as well,
|
||
and suppresses inlining when (> DEBUG SPEED).
|
||
* More fixes have been made to treatment of floating point exception
|
||
treatment and other Unix signals. In particular, floating point
|
||
exceptions no longer cause Bus errors on the SPARC/Linux platform.
|
||
* The detection and handling of control stack exhaustion (infinite
|
||
or very deeply nested recursion) has changed. Stack exhaustion
|
||
detection is now done by write-protecting pages at the OS level
|
||
and applies at all optimization settings; when found, a
|
||
SB-KERNEL:CONTROL-STACK-EXHAUSTED condition (subclass of
|
||
STORAGE-CONDITION) is signalled, so stack exhaustion can no longer
|
||
be caught using IGNORE-ERRORS.
|
||
* Bugs 65, 70, and 109 fixed: The compiler now preserves invariants
|
||
correctly when transforming recursive LABELS functions to LETs.
|
||
(thanks to Alexey Dejneka)
|
||
* Bug 48a./b. fixed: SYMBOL-MACROLET now refuses to bind symbols
|
||
that are names of constants or global variables.
|
||
* Bug fix: DEFINE-ALIEN-ROUTINE now declaims the correct FTYPE for
|
||
alien routines with docstrings.
|
||
* Bug 184 fixed: Division of ratios by the integer 0 now signals an
|
||
error of type DIVISION-BY-ZERO. (thanks to Wolfhard Buss and
|
||
Raymond Toy)
|
||
* Bug fix: Errors in PARSE-INTEGER are now of type PARSE-ERROR.
|
||
(thanks to Eric Marsden)
|
||
* Bug fix: COERCE to (COMPLEX FLOAT) of rationals now returns an
|
||
object of type (COMPLEX FLOAT). (thanks to Wolfhard Buss)
|
||
* Bug fix: The SPARC backend can now compile functions involving
|
||
LOGAND and stack-allocated arguments. (thanks to Raymond Toy)
|
||
* Bug fix: We no longer segfault on passing a non-FILE-STREAM stream
|
||
to a functions expecting a PATHNAME-DESIGNATOR.
|
||
* Bug fix: DEFGENERIC now enforces the ANSI restrictions on its
|
||
lambda lists. (thanks to Alexey Dejneka)
|
||
* Bug fix: changed encoding of PCL's internal MAKE-INSTANCE
|
||
functions so that EXPORTing the name of the class doesn't cause
|
||
MAKE-INSTANCE functions from earlier DEFCLASSes to get lost (thanks
|
||
to Antonio Martinez for reporting this)
|
||
* Bug 192 fixed: The internal primitive DATA-VECTOR-REF can now be
|
||
constant-folded without failing an assertion. (thanks to Einar
|
||
Floystad Dorum for reporting this)
|
||
* Bugs 123 and 165 fixed: array specializations on as-yet-undefined
|
||
types are now dealt with more correctly by the compiler.
|
||
* Minor incompatible change: COMPILE-FILE-PATHNAME now merges its
|
||
OUTPUT-FILE argument with its INPUT-FILE argument, resulting in
|
||
behaviour analogous to RENAME-FILE. This puts its behaviour more
|
||
in line with ANSI's wording on COMPILE-FILE-PATHNAME. (thanks to
|
||
Marco Antinotti)
|
||
* The fasl file version number has changed again. (because of the
|
||
bug fix involving the names of PCL MAKE-INSTANCE functions)
|
||
|
||
changes in sbcl-0.7.6 relative to sbcl-0.7.5:
|
||
* bug fix: Floating point exceptions are treated much more
|
||
consistently on the x86/Linux and PPC/Linux platforms.
|
||
* Array initialization with :INITIAL-ELEMENT is now much faster for
|
||
cases when the compiler cannot open code the array creation, but
|
||
does know what the UPGRADED-ARRAY-ELEMENT-TYPE will be. General
|
||
array accesses have also seen a speed increase.
|
||
* bug fix: LOAD :IF-DOES-NOT-EXIST NIL now works when file type is
|
||
specified. (This was at the root of some bad interactions between
|
||
SBCL and ILISP: thanks to Gregory Wright for diagnosing this and
|
||
reporting the bug.)
|
||
* bug fix: Internal error arguments for undefined functions are now
|
||
computed correctly on the PPC/Linux platform.
|
||
* bug fix: Bad &REST syntax is now checked correctly. (thanks to
|
||
Raymond Toy's patch for CMU CL)
|
||
* Support for the Solaris 9 operating environment has been included
|
||
(thanks to Daniel Merritt)
|
||
* A very ugly but hopefully complete draft of the missing FFI chapter
|
||
of the manual has been created by reformatting the corresponding
|
||
CMU CL manual chapter into (currently very ugly and incoherent)
|
||
DocBook and bringing it up to date for SBCL behavior. Thus, the
|
||
manual is now essentially complete, at least by my extreme
|
||
once-and-only-once standards, whereby it's acceptable to refer to
|
||
the doc strings of SB-EXT functions as the primary documentation.
|
||
* The fasl file version number has changed again, due to cleanup of
|
||
(user-invisible) bitrotted stuff. (E.g. *!INITIAL-FDEFN-OBJECTS*
|
||
is no longer a static symbol.)
|
||
|
||
changes in sbcl-0.7.5 relative to sbcl-0.7.4:
|
||
* SBCL now builds with OpenMCL (version 0.12) as the
|
||
cross-compilation host; also, more progress has been made toward
|
||
bootstrapping under CLISP.
|
||
* SBCL now runs on the Tru64 (aka OSF/1) operating system on the
|
||
Alpha architecture.
|
||
* bug 158 fixed: The compiler can now deal with integer loop
|
||
increments different from 1; fixing this turned out also to fix
|
||
bug 164.
|
||
* bug 169 fixed: no more bogus warnings about using lexical bindings
|
||
despite the presence of perfectly good SPECIAL declarations (thanks
|
||
to David Lichteblau)
|
||
* bug 175 fixed: CHANGE-CLASS is now more ANSI-conforming,
|
||
accepting initargs. (thanks to Espen Johnsen and Pierre Mai)
|
||
* bug 179 fixed: DIRECTORY can now deal with filenames with pattern
|
||
characters in them.
|
||
* bug 180 fixed: Method combination specifications no longer ignore
|
||
the :MOST-SPECIFIC-LAST option. (thanks to Pierre Mai)
|
||
* bug fix: Structure type predicate functions now check their argument
|
||
count as they should.
|
||
* bug fix: Classes with :METACLASS STRUCTURE-CLASS now print
|
||
correctly. (thanks to Pierre Mai)
|
||
* minor incompatible change: The --noprogrammer option is deprecated
|
||
in favor of the new --disable-debugger option, which is very similar.
|
||
(The major difference is that it takes effect at a slightly different
|
||
time at startup, causing handling of errors in --sysinit and
|
||
--userinit files will be affected differently.) The
|
||
SB-EXT:DISABLE-DEBUGGER and SB-EXT:ENABLE-DEBUGGER functions have
|
||
been added to allow this functionality to be controlled from ordinary
|
||
Lisp code. (ENABLE-DEBUGGER should help people like the Debian
|
||
maintainers, who might want to run non-interactive scripts to
|
||
build SBCL cores which will later be used interactively.)
|
||
* minor incompatible change: The LOAD function no longer, when given
|
||
a wild pathname to load, loads all files matching that pathname.
|
||
Instead, an error of type FILE-ERROR is signalled.
|
||
|
||
changes in sbcl-0.7.4 relative to sbcl-0.7.3:
|
||
* bug 147 fixed: The compiler preserves its block link/count
|
||
invariants more correctly now so that it doesn't crash. (thanks
|
||
to Alexey Dejneka)
|
||
* Dynamic loading of object files in OpenBSD is now supported. (thanks
|
||
to Pierre Mai)
|
||
* COMPILE now works correctly on macros. (thanks to Matthias Hoelzl)
|
||
* GET-MACRO-CHARACTER and SET-MACRO-CHARACTER now represent
|
||
no-value-for-this-character as NIL (as specified by ANSI).
|
||
* HOST-NAMESTRING on physical pathnames now returns a string that is
|
||
valid as a host argument to MERGE-PATHNAMES and to MAKE-PATHNAME.
|
||
(thanks to Christophe Rhodes)
|
||
* The Alpha port handles icache flushing more correctly. (thanks to
|
||
Dan Barlow)
|
||
* More progress has been made toward bootstrapping under CLISP. (thanks
|
||
to Christophe Rhodes)
|
||
* The fasl file format has changed again, because dynamic loading
|
||
on OpenBSD (which has non-ELF object files) motivated some cleanups
|
||
in the way that foreign symbols are transformed and passed around.
|
||
* minor incompatible change: The ASCII RUBOUT character, (CHAR-CODE 127),
|
||
is no longer treated as whitespace by the reader, but instead as
|
||
an ordinary character. Thus e.g. (READ-FROM-STRING "AB") returns
|
||
|AB|, instead of A as it used to.
|
||
|
||
changes in sbcl-0.7.3 relative to sbcl-0.7.2:
|
||
* ANSI's DEFINE-SYMBOL-MACRO is now supported. (thanks to Nathan
|
||
Froyd porting CMU CL code originally by Douglas Thomas Crosher)
|
||
* SBCL now runs on the PPC archtiecture under Linux. It actually did
|
||
this as of 0.7.1.45, but was left out of the previous news section
|
||
(thanks to Dan Barlow)
|
||
* SBCL now runs on the Solaris operating system on SPARC architectures
|
||
(thanks to Christophe Rhodes's port of the CMUCL runtime)
|
||
* cleanups to the runtime on SPARC, both Linux and Solaris, and for
|
||
gcc>=3 (thanks to Nathan Froyd and Ingvar Mattsson)
|
||
* SPARC backend cleanups, allowing builds of cores optimized for V8
|
||
and V9 SPARCS, and also emission of code targeted to a particular
|
||
backend chosen at runtime (thanks to Christophe Rhodes and Raymond
|
||
Toy)
|
||
* SBCL is closer to bootstrapping under CLISP, thanks to various
|
||
fixes by Christophe Rhodes.
|
||
* The fasl file format has changed again, to allow the compiler's
|
||
INFO database to support symbol macros.
|
||
* The user manual (in doc/) is formatted into HTML more nicely.
|
||
(thanks to coreythomas)
|
||
* The system is smarter about SUBTYPEP relationships, especially
|
||
those involving NOT types (including types such as ATOM which are
|
||
represented internally using NOT types). Thus SUBTYPEP is less
|
||
likely to return (VALUES NIL NIL) in general, and in particular
|
||
bugs 58 and (the remaining bits of) bug 50 are fixed. (thanks to
|
||
Christophe Rhodes)
|
||
* The fasl file format has changed again, because the internal
|
||
representation of types now includes a new slot to support the new
|
||
SUBTYPEP-of-NOT-types logic.
|
||
* (not a change in the main branch of SBCL, but a related prototype
|
||
which can hopefully be merged into the main branch of SBCL in the
|
||
future:) Brian Spilsbury has produced a Unicode-enabled variant of
|
||
sbcl-0.7.0, available as a patch against sbcl-0.7.0 at
|
||
<http://designix.com.au/brian/SBCL/sbcl-0.7.0-unicode.p0.gz>.
|
||
* Bug 151 fixed: GET-DISPATCH-MACRO-CHAR now returns NIL for undefined
|
||
dispatch macro character combinations. (thanks to Alexey Dejneka)
|
||
* Bugfix in PARSE-NAMESTRING: we now correctly parse unix namestrings
|
||
that superficially look like logical namestrings correctly.
|
||
* USER-HOMEDIR-PATHNAME now returns a (physical) pathname that SBCL
|
||
can deal with.
|
||
* Bugfix in DEFSTRUCT: BOA constructor lambda lists now accept (name
|
||
default supplied-p) for &optional and &key arguments. (thanks to
|
||
Martin Atzmueller)
|
||
|
||
changes in sbcl-0.7.2 relative to sbcl-0.7.1:
|
||
* incompatible change: The compiler is now less aggressive about
|
||
tail call optimization, doing it only when (> SPACE DEBUG) or
|
||
(> SPEED DEBUG). (This is an incompatible change because there are
|
||
programs which relied on the old CMU-CL-style behavior to optimize
|
||
away their unbounded recursion which will now die of stack overflow.)
|
||
* minor incompatible change: The default BYTES-CONSED-BETWEEN-GCS
|
||
for non-GENCGC systems has been increased to 20M (since that
|
||
seems much closer to the likely performance optimum for modern
|
||
systems than the old 4M value was)
|
||
* minor incompatible change: new larger values for *DEBUG-PRINT-LENGTH*
|
||
and *DEBUG-PRINT-LEVEL*
|
||
* SBCL runs on SPARC systems now. (thanks to Christophe Rhodes' port
|
||
of CMU CL's support for SPARC, and various endianness and other
|
||
SBCL portability fixes due to Christophe Rhodes and Dan Barlow)
|
||
* new syntactic sugar for the Unix command line: --load foo.bar is now
|
||
an alternate notation for --eval '(load "foo.bar")'.
|
||
* bug fixes:
|
||
** The system now detects stack overflow and handles it gracefully,
|
||
at least for (OR (> SAFETY (MAX SPEED SPACE)) (= SAFETY 3))
|
||
optimization settings. (This is a good thing in general, and
|
||
its introduction in this version should be particularly timely
|
||
for anyone whose code fails because of suppression of tail
|
||
recursion!)
|
||
** The system now hunts for the C variable "environ" in a more
|
||
devious way, to avoid segfaults when the C library version differs
|
||
between compile time and run time. (thanks to Christophe Rhodes)
|
||
** INTEGER-valued CATCH tags now work. (thanks to Alexey Dejneka,
|
||
and also to Christophe Rhodes for porting the fix to non-X86 CPUs)
|
||
** The compiler no longer issues bogus style warnings for undefined
|
||
classes in the same source file as the DEFCLASSes which defined
|
||
them. (thanks to Stig E Sandoe for reporting and Martin Atzmueller
|
||
for fixing this)
|
||
** fixes in CONDITION class precedence list for undefined function
|
||
errors (thanks to Alexei Dejneka)
|
||
** *DEFAULT-PATHNAME-DEFAULTS* is used more consistently and
|
||
correctly. (thanks to Dan Barlow)
|
||
** portability fixes aiming at bootstrapping under CLISP (thanks
|
||
to Dave McDonald and Christophe Rhodes)
|
||
** FORMAT fixes (thanks to Robert Strandh and Dan Barlow)
|
||
** fixes in type translation and and type inference (thanks to
|
||
Christophe Rhodes)
|
||
** fixes to optimizer internal errors (thanks to Alexei Dejneka)
|
||
** various fixes in the new ports (thanks to Dan Barlow)
|
||
* several changes related to debugging:
|
||
** suppression of tail recursion, as noted above
|
||
** stack overflow detection, as noted above
|
||
** The default implementation of TRACE has changed. :ENCAPSULATE T
|
||
is now the default. (For some time encapsulation has been more
|
||
reliable than the breakpoint-based :ENCAPSULATE NIL
|
||
implementation, at least on X86 systems; and I just noticed that
|
||
encapsulation also seems closer to the spirit of the ANSI
|
||
specification.)
|
||
|
||
changes in sbcl-0.7.1 relative to sbcl-0.7.0:
|
||
* mostly bug fixes:
|
||
** SB-ALIEN:LOAD-FOREIGN and SB-ALIEN:LOAD-1-FOREIGN are set
|
||
up properly again. (There was a packaging bug in 0.7.0 which
|
||
left their definitions in SB-SYS::LOAD-FOREIGN and
|
||
SB-SYS::LOAD-1-FOREIGN. LOAD-FOREIGN and LOAD-1-FOREIGN are
|
||
vital for most things which interface to C-level interfaces,
|
||
like extensions working with sockets or databases or
|
||
Perl-compatible regexes or whatever, and the need to fix
|
||
this bug is the main reason that 0.7.1 was released so
|
||
soon after 0.7.0.)
|
||
** DEFGENERIC is now choosier about the methods it redefines, so that
|
||
reLOADing a previously-LOADed file containing DEFGENERICs does
|
||
the right thing now. Thus, the Lispy edit/reLOAD-a-little/test
|
||
cycle now works as it should. (thanks to Alexey Dejneka)
|
||
** Bug 106 (types (COMPLEX FOO) where FOO is an obscure type) was
|
||
fixed by Christophe Rhodes. (He actually submitted this patch
|
||
months ago, and I delayed until after 0.7.0.)
|
||
** Bug 111 (internal compiler confusion about runtime checks on
|
||
FUNCTION types) was fixed by Alexey Dejneka.
|
||
* Some internal cleanups (getting rid of variables which aren't
|
||
needed now that the byte interpreter is gone) caused the fasl
|
||
file format number to change again.
|
||
|
||
changes in sbcl-0.7.0 relative to sbcl-0.6.13:
|
||
* major incompatible change: The default fasl file extension, i.e. the
|
||
default extension for files produced by COMPILE-FILE, has changed
|
||
to ".fasl", for all architectures. (No longer ".x86f" and ".axpf".)
|
||
* compiler changes:
|
||
** There are many changes in the implementation of the compiler.
|
||
SBCL is now essentially a compiler-only implementation of ANSI
|
||
Common Lisp. EVAL still "interprets" a few special cases, but
|
||
almost all the interesting cases are handled by creating
|
||
a LAMBDA expression, calling COMPILE on it, then calling
|
||
FUNCALL on the result.
|
||
** The EVAL-WHEN code has been rewritten to be ANSI-compliant, and
|
||
various related bugs (IR1-1, IR1-2, IR1-3, IR1-3a) have gone away.
|
||
Since the code is newer, there might still be some new bugs
|
||
(though not as many as before Martin Atzmueller's fixes:-). But
|
||
the new code is substantially simpler and clearer, and hopefully
|
||
any remaining bugs will be simpler, less fundamental, and more
|
||
fixable then the bugs in the old code.
|
||
** The revised compiler is still a little unsteady on its feet.
|
||
In particular,
|
||
*** The debugging information it produces (particularly the names
|
||
of FUNCTION objects) is sometimes much less useful than what
|
||
the old compiler produced.
|
||
*** The support for inlining FOO when you (DECLAIM (INLINE FOO))
|
||
then do (DEFUN FOO ..) in a non-null lexical environment (e.g.
|
||
within a MACROLET) has been temporarily weakened.
|
||
** There are new compiler optimizations for various functions:
|
||
*** the sequence functions FIND, POSITION, FIND-IF, POSITION-IF,
|
||
FIND-IF-NOT, POSITION-IF-NOT, and FILL
|
||
*** the math functions TRUNCATE, FLOOR, and CEILING
|
||
*** the function-of-all-trades COERCE
|
||
Mostly these should be transparent, but there's one
|
||
potentially-annoying problem (bug 117): when the compiler
|
||
inline-expands a function and does type analysis on the result,
|
||
it can create control paths which have type mismatches, and
|
||
when it can't prove that those control paths aren't taken,
|
||
it will issue WARNINGs about the type mismatches. This is
|
||
a particular problem in practice for the new sequence functions.
|
||
It's not clear how this should be fixed, and for now, a
|
||
workaround is given in the entry for 117 in the BUGS file.
|
||
** (Because of the interaction between the two previous items --
|
||
occasional inlining problems and new inline expansions -- some
|
||
of the new sequence function optimizations won't really kick in
|
||
completely until debugging information, and then inlining, are
|
||
straightened out in some future version.)
|
||
* minor incompatible changes:
|
||
** As part of a bug fix by Christophe Rhodes to DIRECTORY behavior,
|
||
DIRECTORY no longer implicitly promotes NIL slots of its
|
||
pathname argument to :WILD. In particular, when you ask for the
|
||
contents of a directory (which you used to be able to do without
|
||
explicit wildcards, e.g. (DIRECTORY "/tmp/")) you now need to use
|
||
explicit wildcards, e.g. (DIRECTORY "/tmp/*.*").
|
||
** changes in behavior that ANSI explicitly defines to be
|
||
implementation dependent:
|
||
*** The new compiler-only implementation still conforms with ANSI,
|
||
but acts a little different than before. Besides the obvious
|
||
changes in performance tradeoffs (that the cost per form passed
|
||
to EVAL has gone up, and the cost per form executed by EVAL
|
||
has gone down), the behavior of the system changes a little
|
||
because there are no longer any interpreted function objects.
|
||
COMPILED-FUNCTION-P is now synonymous with FUNCTIONP, and
|
||
e.g. doing COMPILE on the output of interactive DEFUN is
|
||
now a no-op.
|
||
*** The value of INTERNAL-TIME-UNITS-PER-SECOND has been increased
|
||
from 100 to 1000.
|
||
*** The default for the USE list in MAKE-PACKAGE and DEFPACKAGE
|
||
has changed from (:CL) to NIL.
|
||
*** The CHAR-NAME of unprintable ASCII characters which, unlike
|
||
e.g. #\Newline and #\Tab, don't have names specified in the
|
||
ANSI Common Lisp standard, is now based on their ASCII symbolic
|
||
names (#\Nul, #\Soh, #\Stx, etc.) The old CMU-CL-style names
|
||
(#\Null, #\^a, #\^b, etc.) are still accepted by NAME-CHAR, but
|
||
are no longer used for output.
|
||
** changes in internal implementation constants:
|
||
*** The default value of *BYTES-CONSED-BETWEEN-GCS* has doubled, to
|
||
4 million. (If your application spends a lot of time GCing and
|
||
you have a lot of RAM, you might want to experiment with
|
||
increasing it even more.)
|
||
** The SB-C-CALL package has been merged into the SB-ALIEN package.
|
||
However, almost all old code should still continue to work without
|
||
immediate update, as SB-C-CALL is now a (deprecated) nickname
|
||
for SB-ALIEN.
|
||
** Old operator names in the style DEF-FOO are now deprecated in
|
||
favor of new corresponding names DEFINE-FOO, for consistency with
|
||
the naming convention used in the ANSI standard (DEFSTRUCT, DEFVAR,
|
||
DEFINE-CONDITION, DEFINE-MODIFY-MACRO..). This mostly affects
|
||
internal symbols, but a few supported extensions like
|
||
SB-ALIEN:DEF-ALIEN-FUNCTION are also affected. (So e.g.
|
||
DEF-ALIEN-FUNCTION becomes DEFINE-ALIEN-FUNCTION.)
|
||
** The debugger prompt sequence now goes "5]", "5[2]", "5[3]",
|
||
etc. as you get deeper into recursive calls to the debugger
|
||
command loop, instead of the old "5]", "5]]", "5]]]"
|
||
sequence. (I was motivated to do this when squabbles between
|
||
ILISP and SBCL left me very deeply nested in the debugger. In the
|
||
short term, this change will probably provoke more ILISP/SBCL
|
||
squabbles, but hopefully it will be an improvement in the long run.)
|
||
** SB-ALIEN:DEFINE-ALIEN-FUNCTION (also known by the old deprecated
|
||
name DEF-ALIEN-FUNCTION) now does DECLAIM FTYPE for the defined
|
||
function, since declaiming return types involving aliens is
|
||
(1) annoyingly messy to do by hand and (2) vital to efficient
|
||
compilation of code which calls such functions.
|
||
** SB-ALIEN:LOAD-FOREIGN and SB-ALIEN:LOAD-1-FOREIGN are no
|
||
longer reexported by the SB-EXT package. They're solely useful
|
||
for alien code, so it seems more logical that you should get
|
||
them from the SB-ALIEN package, not in SB-EXT.
|
||
** :SB-CONSTRAIN-FLOAT-TYPE, :SB-PROPAGATE-FLOAT-TYPE, and
|
||
:SB-PROPAGATE-FUN-TYPE are no longer considered to be optional
|
||
features. Instead, the code that they used to control is always
|
||
built into the system.
|
||
* many other bug fixes
|
||
** DEFSTRUCT and DEFCLASS have been substantially updated to take
|
||
advantage of the new EVAL-WHEN stuff and to clean them up in
|
||
general, and they are now more ANSI-compliant in a number of
|
||
ways. Martin Atzmueller is responsible for a lot of this.
|
||
** Besides the cleanups discussed above, Martin Atzmueller fixed
|
||
several other bugs:
|
||
*** fixes in READ-SEQUENCE and WRITE-SEQUENCE
|
||
*** correct ERROR type for various file operations
|
||
*** some fixes for Lisp streams
|
||
*** DEFMETHOD syntax checking
|
||
*** changing old weird representation of debug information as
|
||
strings (which, among their other deficiencies, don't transform
|
||
correctly when you rename packages, and don't change their
|
||
print representation when you change things like *PACKAGE*
|
||
and *PRINT-LENGTH*) to symbols and lists of symbols
|
||
He also made several improvements and fixed several bugs in DESCRIBE.
|
||
** Alexey Dejneka fixed many bugs, including classic bugs and bugs he
|
||
discovered himself:
|
||
*** misbehavior of WRITE-STRING/WRITE-LINE
|
||
*** LOOP over keys of a hash table, LOOP bugs 49b and 81 and 103,
|
||
and several other LOOP problems as well
|
||
*** DIRECTORY when similar filenames are present
|
||
*** DEFGENERIC with :METHOD options
|
||
*** bug 126, in (MAKE-STRING N :INITIAL-ELEMENT #\SPACE))
|
||
*** bug in the optimization of ARRAY-ELEMENT-TYPE
|
||
*** argument ordering in FIND with :TEST option
|
||
*** mishandled package designator argument in APROPOS-LIST
|
||
*** various problems in the backquote readmacro
|
||
*** a bug in APROPOS
|
||
*** probably some others that I'm not describing very well here,
|
||
since the CVS log documents them by reference to sbcl-devel
|
||
messages, and the SourceForge archives aren't working well.:-(
|
||
** Dan Barlow improved the Alpha port (and is making progress on the
|
||
PPC port, for those of you who think different).
|
||
** Besides the DIRECTORY fixes and changes mentioned elsewhere,
|
||
Christophe Rhodes cleaned up the system self-test scripts (in tests/*),
|
||
contributed the optimization of FIND-IF-NOT and POSITION-IF-NOT, and
|
||
continues to work on the SPARC port (for those of you in a position
|
||
to look down upon our little PC-compatible boxes from a great height).
|
||
** PPRINT-LOGICAL-BLOCK now copies the *PRINT-LINES* value on entry
|
||
and uses that copy, rather than the current dynamic value, when
|
||
it's trying to decide whether to truncate output. Thus e.g.
|
||
(let ((*print-lines* 50))
|
||
(pprint-logical-block (stream nil)
|
||
(dotimes (i 10)
|
||
(let ((*print-lines* 8))
|
||
(print (aref possiblybigthings i) stream)))))
|
||
should now truncate the logical block only at 50 lines, instead of
|
||
often truncating it at 8 lines, as it did before.
|
||
* The doc/cmucl/ directory, containing old CMU CL documentation
|
||
from the time of the fork, is no longer part of the base system.
|
||
SourceForge has shut down its anonymous FTP service, and with it
|
||
my original plan for distributing the old CMU CL documentation
|
||
there. For now, if you need these files you can download an old
|
||
SBCL source release and extract them from it.
|
||
* The fasl file version number changed again, for dozens of reasons,
|
||
some of which are apparent above.
|
||
|
||
changes in sbcl-0.6.13 relative to sbcl-0.6.12:
|
||
* a port to the Compaq/DEC Alpha CPU, thanks to Dan Barlow
|
||
* Martin Atzmueller ported Tim Moore's marvellous CMU CL DISASSEMBLE
|
||
patch, so that DISASSEMBLE output is much nicer.
|
||
* The code in the SB-PROFILE package now seems reasonably stable.
|
||
I still haven't decided what the final interface should look like
|
||
(I'd like PROFILE to interact cleanly with TRACE, since both
|
||
facilities use function encapsulation) but if you have a need
|
||
for profiling now, you can probably use it successfully with
|
||
the current CMU-CL-style interface.
|
||
* Pathnames and *DEFAULT-DIRECTORY-DEFAULTS* are much more
|
||
ANSI-compliant, thanks to various fixes and tests from Dan Barlow.
|
||
Also, at Dan Barlow's suggestion, TRUENAME on a dangling symbolic
|
||
link now returns the dangling link itself, and for similar
|
||
reasons, TRUENAME on a cyclic symbolic link returns the cyclic
|
||
link itself. (In these cases the old code signalled an error and
|
||
looped endlessly, respectively.) Thus, DIRECTORY now works even
|
||
in the presence of dangling and cyclic symbolic links.
|
||
* Compiler trace output (the :TRACE-FILE option to COMPILE-FILE)
|
||
is now a supported extension again, since the consensus on
|
||
sbcl-devel was that it can be useful for ordinary development
|
||
work, not just for debugging SBCL itself.
|
||
* The default for SB-EXT:*DERIVE-FUNCTION-TYPES* has changed to
|
||
NIL, i.e. ANSI behavior, i.e. the compiler now recognizes
|
||
that currently-defined functions might be redefined later with
|
||
different return types.
|
||
* Hash tables can be printed readably, as inspired by CMU CL code
|
||
of Eric Marsden and SBCL code of Martin Atzmueller.
|
||
* better error handling in CLOS method combination, thanks to
|
||
Martin Atzmueller porting Pierre Mai's CMU CL patches
|
||
* more overflow fixes for >16Mbyte I/O buffers
|
||
* A bug in READ has been fixed, so that now a single Ctrl-D
|
||
character suffices to cause end-of-file on character streams.
|
||
In particular, now you only need one Ctrl-D at the command
|
||
line (not two) to exit SBCL.
|
||
* fixed bug 26: ARRAY-DISPLACEMENT now returns (VALUES NIL 0) for
|
||
undisplaced arrays.
|
||
* fixed bug 107 (reported as a CMU CL bug by Erik Naggum on
|
||
comp.lang.lisp 2001-06-11): (WRITE #*101 :RADIX T :BASE 36) now
|
||
does the right thing.
|
||
* The implementation of some type tests, especially for CONDITION
|
||
types, is now tidier and maybe faster, due to CMU CL code
|
||
originally by Douglas Crosher, ported by Martin Atzmueller.
|
||
* Some math functions have been fixed, and there are new
|
||
optimizers for deriving the types of COERCE and ARRAY-ELEMENT-TYPE,
|
||
thanks to Raymond Toy's work on CMU CL, ported by Martin Atzmueller.
|
||
* (There are also some new optimizers in contrib/*-extras.lisp. Those
|
||
aren't built into sbcl-0.6.13, but are a sneak preview of what's
|
||
likely to be built into sbcl-0.7.0.)
|
||
* A bug in COPY-READTABLE was fixed. (Joao Cachopo's patch to CMU
|
||
CL, ported to SBCL by Martin Atzmueller)
|
||
* DESCRIBE now gives more information in some cases. (Pierre Mai's
|
||
patch to CMU CL, ported to SBCL by Martin Atzmueller)
|
||
* Martin Atzmueller and Bill Newman fixed some bugs in INSPECT.
|
||
* There's a new slam.sh hack to shorten the edit/compile/debug
|
||
cycle for low-level changes to SBCL itself, and a new
|
||
:SB-AFTER-XC-CORE target feature to control the generation of
|
||
the after-xc.core file needed by slam.sh.
|
||
* minor incompatible change: The ENTRY-POINTS &KEY argument to
|
||
COMPILE-FILE is no longer supported, so that now every function
|
||
gets an entry point, so that block compilation looks a little
|
||
more like the plain vanilla ANSI section 3.2.2.3 scheme.
|
||
* minor incompatible change: SB-EXT:GET-BYTES-CONSED now
|
||
returns the number of bytes consed since the system started,
|
||
rather than the number consed since the first time the function
|
||
was called. (The new definition parallels ANSI functions like
|
||
CL:GET-INTERNAL-RUN-TIME.)
|
||
* minor incompatible change: The old CMU-CL-style DIRECTORY options,
|
||
i.e. :ALL, :FOLLOW-LINKS, and :CHECK-FOR-SUBDIRS, are no longer
|
||
supported. Now DIRECTORY always does the abstract Common-Lisp-y
|
||
thing, i.e. :ALL T :FOLLOW-LINKS T :CHECK-FOR-SUBDIRS T.
|
||
* Fasl file version numbers are now independent of the target CPU,
|
||
since historically most system changes which required version
|
||
number changes have affected all CPUs equally. Similarly,
|
||
the byte fasl file version is now equal to the ordinary
|
||
fasl file version.
|
||
|
||
changes in sbcl-0.6.12 relative to sbcl-0.6.11:
|
||
* incompatible change: The old SB-EXT:OPTIMIZE-INTERFACE declaration
|
||
is no longer recognized. I apologize for this, because it was
|
||
listed in SB-EXT as a supported extension, but I found that
|
||
its existing behavior was poorly specified, as well as incorrectly
|
||
specified, and it looked like too much of a mess to straighten it
|
||
out. I have enough on my hands trying to get ANSI stuff to work..
|
||
* many patches ported from CMU CL by Martin Atzmueller, with
|
||
half a dozen bug fixes in pretty-printing and the debugger, and
|
||
half a dozen others elsewhere
|
||
* fixed bug 13: Floating point infinities are now supported again.
|
||
They might still be a little bit flaky, but thanks to bug reports
|
||
from Nathan Froyd and CMU CL patches from Raymond Toy they're not
|
||
as flaky as they were.
|
||
* The --noprogrammer command line option is now supported. (Its
|
||
behavior is slightly different in detail from what the old man
|
||
page claimed it would do, but it's still appropriate under the
|
||
same circumstances that the man page talks about.)
|
||
* The :SB-PROPAGATE-FLOAT-TYPE and :SB-PROPAGATE-FUN-TYPE features
|
||
are now supported, and enabled by default. Thus, the compiler can
|
||
handle many floating point and complex operations much less
|
||
inefficiently. (Thus e.g. you can implement a complex FFT
|
||
without consing!)
|
||
* The compiler now detects type mismatches between DECLAIM FTYPE
|
||
and DEFUN better, and implements CHECK-TYPE more correctly, and
|
||
SBCL builds under CMU CL again despite its non-ANSI EVAL-WHEN,
|
||
thanks to patches from Martin Atzmueller.
|
||
* various fixes to make the cross-compiler more portable to
|
||
ANSI-conforming-but-different cross-compilation hosts (notably
|
||
Lispworks for Windows, following bug reports from Arthur Lemmens)
|
||
* A bug in READ-SEQUENCE for CONCATENATED-STREAM, and a gross
|
||
ANSI noncompliance in DEFMACRO &KEY argument parsing, have been
|
||
fixed thanks to Pierre Mai's CMU CL patches.
|
||
* fixes to keep the system from overflowing internal counters when
|
||
it tries to use i/o buffers larger than 16M bytes
|
||
* fixed bug 45a: Various internal functions required to support
|
||
complex special functions have been merged from CMU CL sources.
|
||
(When I was first setting up SBCL, I misunderstood a compile-time
|
||
conditional #-OLD-SPECFUN, and so accidentally deleted them.)
|
||
* improved support for type intersection and union, fixing bug 12
|
||
(e.g., now (SUBTYPEP 'KEYWORD 'SYMBOL)=>T,T) and some other
|
||
more obscure bugs as well
|
||
* some steps toward byte-compiling non-performance-critical
|
||
parts of the system, courtesy of patches from Martin Atzmueller
|
||
* Christophe Rhodes has made some debian packages of sbcl at
|
||
<http://www-jcsu.jesus.cam.ac.uk/ftp/pub/debian/lisp>.
|
||
From his sbcl-devel e-mail of 2001-04-08 they're not completely
|
||
stable, but are nonetheless usable. When he's ready, I'd be happy
|
||
to add them to the SourceForge "File Releases" section. (And if
|
||
anyone wants to do RPMs or *BSD packages, they'd be welcome too.)
|
||
* new fasl file format version number (because of changes in
|
||
internal representation of (OR ..) types to accommodate the new
|
||
support for (AND ..) types, among other things)
|
||
|
||
changes in sbcl-0.6.11 relative to sbcl-0.6.10:
|
||
* Martin Atzmueller pointed out that bugs #9 and #25 are gone in
|
||
current SBCL.
|
||
* bug 34 fixed by Martin Atzmueller: dumping/loading instances works
|
||
better
|
||
* fixed bug 40: TYPEP, SUBTYPEP, UPGRADED-ARRAY-ELEMENT-TYPE,
|
||
and UPGRADED-COMPLEX-PART-TYPE now work better with of compound
|
||
types built from undefined types, e.g. '(VECTOR SOME-UNDEF-TYPE).
|
||
* DESCRIBE now works on structure objects again.
|
||
* Most function call argument type mismatches are now handled as
|
||
STYLE-WARNINGs instead of full WARNINGs, since the compiler doesn't
|
||
know whether the function will be redefined before the call is
|
||
executed. (The compiler could flag local calls with full WARNINGs,
|
||
as per the ANSI spec "3.2.2.3 Semantic Constraints", but right now
|
||
it doesn't keep track of enough information to know whether calls
|
||
are local in this sense.)
|
||
* Compiler output is now more verbose, with messages truncated
|
||
later than before. (There should be some supported way for users
|
||
to override the default verbosity, but I haven't decided how to
|
||
provide it yet, so this behavior is still controlled by the internal
|
||
SB-C::*COMPILER-ERROR-PRINT-FOO* variables in
|
||
src/compiler/ir1util.lisp.)
|
||
* Fasl file format version numbers have increased again, because
|
||
support for the Gray streams extension changes the layout of the
|
||
system's STREAM objects.
|
||
* The Gray subclassable streams extension now works, thanks to a
|
||
patch from Martin Atzmueller.
|
||
* The full LOAD-FOREIGN extension (not just the primitive
|
||
LOAD-FOREIGN-1) now works, thanks to a patch from Martin Atzmueller.
|
||
* The default behavior of RUN-PROGRAM has changed. Now, unlike CMU CL
|
||
but like most other programs, it defaults to copying the Unix
|
||
environment from the original process instead of starting the
|
||
new process in an empty environment.
|
||
* Extensions which manipulate the Unix environment now support
|
||
an :ENVIRONMENT keyword option which doesn't smash case or
|
||
do other bad things. The CMU-CL-style :ENV option is retained
|
||
for porting convenience.
|
||
* LOAD-FOREIGN (and LOAD-1-FOREIGN) now support logical pathnames,
|
||
as per Daniel Barlow's suggestion and Martin Atzmueller's patch
|
||
|
||
changes in sbcl-0.6.10 relative to sbcl-0.6.9:
|
||
|
||
* A patch from Martin Atzmueller seems to have solved the SIGINT
|
||
problem, and as far as we know, signal-handling now works cleanly.
|
||
(If you find any new bugs, please report them!)
|
||
* The system no longer defaults Lisp source file names to types
|
||
".l", ".cl", or ".lsp", but only to ".lisp".
|
||
* The compiler no longer uses special default file extensions for
|
||
byte-compiled code. (The ANSI definition of COMPILE-FILE-PATHNAME
|
||
seems to expect a single default extension for all compiled code,
|
||
and there's no compelling reason to try to stretch the standard
|
||
to allow two different extensions.) Instead, byte-compiled files
|
||
default to the same extension as native-compiled files.
|
||
* Fasl file format version numbers have increased again, because
|
||
a rearrangement of internal implementation packages made some
|
||
dumped symbols in old fasl files unreadable in new cores.
|
||
* DECLARE/DECLAIM/PROCLAIM logic is more nearly ANSI in general, with
|
||
many fewer weird special cases.
|
||
* Bug #17 (differing COMPILE-FILE behavior between logical and
|
||
physical pathnames) has been fixed, and some related misbehavior too,
|
||
thanks to a patch from Martin Atzmueller.
|
||
* Bug #30 (reader problems) is gone, thanks to a CMU CL patch
|
||
by Tim Moore, ported to SBCL by Martin Atzmueller.
|
||
* Martin Atzmueller fixed several filesystem-related problems,
|
||
including bug #36, in part by porting CMU CL patches, which were
|
||
written in part by Paul Werkowski.
|
||
* More compiler warnings in src/runtime/ are gone, thanks to
|
||
more patches from Martin Atzmueller.
|
||
* Martin Atzmueller pointed out that bug 37 was fixed by his patches
|
||
some time ago.
|
||
|
||
changes in sbcl-0.6.9 relative to sbcl-0.6.8:
|
||
|
||
* DESCRIBE now works on CONDITION objects.
|
||
* The debugger now handles errors which arise when trying to print
|
||
*DEBUG-CONDITION*, so that it's less likely to fall into infinite
|
||
regress.
|
||
* The build system now uses an additional file, customize-target-features.lisp,
|
||
to allow local modifications to the target *FEATURES* list. (The point of
|
||
this is that now I can set up a custom configuration, e.g. with :SB-SHOW
|
||
debugging features enabled, without having to worry about propagating it
|
||
into everyone's system when I do a "cvs update".) When no
|
||
customize-target-features.lisp file exists, the target *FEATURES* list
|
||
should be constructed the same way as before.
|
||
* fixed bugs in DEFCONSTANT ANSI-compatibility:
|
||
** DEFCONSTANT now tests reassignments using EQL, not EQUAL, in order to
|
||
warn about behavior which is undefined under the ANSI spec. Note: This
|
||
is specified by ANSI, but it's not very popular with programmers.
|
||
If it causes you problems, take a look at the new SB-INT:DEFCONSTANT-EQX
|
||
macro in the SBCL sources for an example of a workaround which you
|
||
might use to make portable ANSI-standard code which does what you want.
|
||
** DEFCONSTANT's implementation is now based on EVAL-WHEN instead of on
|
||
pre-ANSI IR1 translation magic, so it does the ANSI-specified thing
|
||
when it's used as a non-toplevel form. (This is required in order
|
||
to implement the DEFCONSTANT-EQX macro.)
|
||
** (DEFCONSTANT X 1) (DEFVAR X) (SETF X 2) no longer "works".
|
||
** Unfortunately, non-toplevel DEFCONSTANT forms can still do some
|
||
funny things, due to bugs in the implementation of EVAL-WHEN
|
||
(bug #IR1-3). This probably won't be fixed until 0.7.x. (Fortunately,
|
||
non-toplevel DEFCONSTANTs are uncommon.)
|
||
* The core file version number and fasl file version number have been
|
||
incremented, because the old noncompliant DEFCONSTANT behavior involved
|
||
calling functions which no longer exist, and because I also took the
|
||
opportunity to chop an unsupported slot out of the DEBUG-SOURCE structure.
|
||
* fixed bug 1 (error handling before read-eval-print loop starts), and
|
||
redid debugger restarts and related debugger commands somewhat while
|
||
doing so:
|
||
** The QUIT debugger command is gone, since it did something
|
||
rather different than the SB-EXT:QUIT command, and since it never
|
||
worked properly outside the main toplevel read/eval/print loop.
|
||
Invoking the new TOPLEVEL restart provides the same functionality.
|
||
** The GO debugger command is also gone, since you can just invoke
|
||
the CONTINUE restart directly instead.
|
||
** The TOP debugger command is also gone, since it's redundant with the
|
||
FRAME 0 command, and since it interfered with abbreviations for the
|
||
TOPLEVEL restart.
|
||
* The system now recovers better from non-PACKAGE values of the *PACKAGE*
|
||
variable.
|
||
* The system now understands compound CONS types (e.g. (CONS FIXNUM T))
|
||
as required by ANSI. (thanks to Douglas Crosher's CMU CL patches, with
|
||
some porting work by Martin Atzmueller)
|
||
* Martin Atzmueller reviewed the CMU CL mailing lists and came back
|
||
with a boatload of patches which he ported to SBCL. Now that those
|
||
have been applied,
|
||
** The system tries to make sure that its low-priority messages
|
||
are prefixed by semicolons, to help people who like to use
|
||
syntax highlighting in their ILISP buffer. (This patch
|
||
was originally due to Raymond Toy.)
|
||
** The system now optimizes INTEGER-LENGTH better, thanks to more
|
||
patches originally written by Raymond Toy.
|
||
** The compiler understands coercion between single-value and
|
||
multiple-VALUES type expressions better, getting rid of some very
|
||
weird behavior, thanks to patches originally by Robert MacLachlan
|
||
and Douglas Crosher.
|
||
** The system understands ANSI-style non-KEYWORD &KEY arguments in
|
||
lambda lists, thanks to a patch originally by Pierre Mai.
|
||
** The system no longer bogusly warns about "abbreviated type
|
||
declarations".
|
||
** The compiler gets less confused by inlining and RETURN-FROM,
|
||
thanks to some patches originally by Tim Moore.
|
||
** The system no longer hangs when dumping circular lists to fasl
|
||
files, thanks to a patch originally from Douglas Crosher.
|
||
* Martin Atzmueller also fixed ROOM, so that it no longer fails with an
|
||
undefined function error.
|
||
* gave up on fixing bug 3 (forbidden-by-ANSI warning for type mismatch
|
||
in structure slot initforms) for now, documented workaround instead:-|
|
||
* fixed bug 4 (no WARNING for DECLAIM FTYPE of slot accessor function)
|
||
* fixed bug 5: added stubs for various Gray stream functions called
|
||
in the not-a-CL:STREAM case, so that even when Gray streams aren't
|
||
installed, at least appropriate type errors are generated
|
||
* fixed bug 8: better reporting of various PROGRAM-ERRORs
|
||
* fixed bug 9: IGNORE and IGNORABLE now work reasonably and more
|
||
consistently in DEFMETHOD forms.
|
||
* removed bug 21 from BUGS, since Martin Atzmueller points out that
|
||
it doesn't seem to affect SBCL after all
|
||
* The C runtime system now builds with better optimization and many
|
||
fewer warnings, thanks to lots of cleanups by Martin Atzmueller.
|
||
|
||
changes in sbcl-0.6.8 relative to sbcl-0.6.7:
|
||
|
||
* The system is now under CVS at SourceForge (instead of the
|
||
CVS repository on my home machine).
|
||
* The new signal handling code has been tweaked to treat register
|
||
contents as (UNSIGNED-BYTE 32), as the old CMU CL code did,
|
||
instead of (SIGNED-BYTE 32), as the C header files have it. (Code
|
||
downstream, e.g. in debug-int.lisp, has implicit dependencies
|
||
on the unsignedness of integer representation of machine words,
|
||
and that caused the system to bomb out with infinite regress
|
||
when trying to recover from type errors involving signed values,
|
||
e.g. (BUTLAST '(1 2 3) -1).)
|
||
* (BUTLAST NIL) and (NBUTLAST NIL) now return NIL as they should.
|
||
(This was one of the bugs Peter Van Eynde reported back in July.)
|
||
* The system now uses code inspired by Colin Walters' O(N)
|
||
implementation of MAP (from the cmucl-imp@cons.org mailing
|
||
list, 2 September 2000) when it can't use a DEFTRANSFORM to
|
||
inline the MAP operation, and there is more than one
|
||
sequence argument to the MAP call (so that it can't just
|
||
do ETYPECASE once and for all based on the type of the
|
||
single sequence argument). (The old non-inline implementation
|
||
of the general M-argument sequence-of-length-N case required
|
||
O(M*N*N) time when any of the sequence arguments were LISTs.)
|
||
* The QUIT :UNIX-CODE keyword argument has been renamed to
|
||
QUIT :UNIX-STATUS. (The old name still works, but is deprecated.)
|
||
* Raymond Wiker's patches to port RUN-PROGRAM from CMU CL to SBCL
|
||
have been added.
|
||
* Raymond Wiker's patches to port dynamic loading from Linux to
|
||
FreeBSD have been added.
|
||
* The BUGS file is now more nearly up to date, thanks in large part
|
||
to Martin Atzmueller's review of it.
|
||
* The debugger now flushes standard output streams before it begins
|
||
its output ("debugger invoked" and so forth).
|
||
* The core version number and fasl file version number have both
|
||
been incremented, because of incompatible changes in the layout
|
||
of static symbols.
|
||
* FINISH-OUTPUT is now called more consistently on QUIT. (It
|
||
used to not be called for a saved Lisp image.)
|
||
* Martin Atzmueller's version of a patch to fix a compiler crash,
|
||
as posted on sbcl-devel 13 September 2000, has been installed.
|
||
* Instead of installing Martin Atzmueller's patch for the
|
||
compiler transform for SUBSEQ, I deleted the compiler transform,
|
||
and transforms for some similar consing operations.
|
||
* A bug in signal handling which kept TRACE from working on OpenBSD
|
||
has been fixed.
|
||
* added enough DEFTRANSFORMs to allow (SXHASH 'FOO) to be optimized
|
||
away by constant folding
|
||
* The system now defines its address space constants in one place
|
||
(in the Lisp sources), and propagates them automatically elsewhere
|
||
(through GENESIS and the sbcl.h file). Therefore, patching the
|
||
address map is less unnecessarily tedious and error-prone. The
|
||
Lisp names of address space constants have also been systematized.
|
||
* CVS tags like dollar-Header-dollar have been removed from
|
||
the sources, because they have never saved me trouble and
|
||
they've been source of trouble working with patches and other
|
||
diff-related operations.
|
||
* fixed the PROG1-vs.-PROGN bug in HANDLER-BIND (reported by
|
||
ole.rohne@cern.ch on cmucl-help@cons.org 2000-10-25)
|
||
|
||
changes in sbcl-0.6.7 relative to sbcl-0.6.6:
|
||
|
||
* The system has been ported to OpenBSD.
|
||
* The system now compiles with a simple "sh make.sh" on the systems
|
||
that it's supported on. I.e., now you no longer need to tweak
|
||
text in the target-features.lisp-expr and symlinks in src/runtime/
|
||
by hand, the make.sh takes care of it for you.
|
||
* The system is no longer so grossly inefficient when compiling code
|
||
involving vectors implemented as general (not simple) vectors (VECTOR T),
|
||
so code which dares to use VECTOR-PUSH-EXTEND and FILL-POINTER, or
|
||
which dares to use the various sequence functions on non-simple
|
||
vectors, takes less of a performance hit.
|
||
* There is now a primitive type predicate VECTOR-T-P
|
||
to test for the (VECTOR T) type, so that e.g.
|
||
(DEFUN FOO (V) (DECLARE (TYPE (VECTOR T) V)) (AREF V 3))
|
||
can now be compiled with some semblance of efficiency. (The old code
|
||
turned the type declaration into a full call to %TYPEP at runtime!)
|
||
* AREF on (VECTOR T) is still not fast, since it's still compiled
|
||
as a full call to SB-KERNEL:DATA-VECTOR-REF, but at least the
|
||
ETYPECASE used in DATA-VECTOR-REF is now compiled reasonably
|
||
efficiently. (The old version made full calls to SUBTYPEP at runtime!)
|
||
* (MAKE-ARRAY 12 :FILL-POINTER T) is now executed less inefficiently,
|
||
without making full calls to SUBTYPEP at runtime.
|
||
(Some analogous efficiency issues for non-simple vectors specialized to
|
||
element types other than T, or for non-simple multidimensional arrays,
|
||
have not been addressed. They could almost certainly be handled the
|
||
same way if anyone is motivated to do so.)
|
||
* The changes in array handling break binary compatibility, so
|
||
*BACKEND-FASL-FILE-VERSION* has been bumped to 4.
|
||
* (TYPEP (MAKE-ARRAY 12 :FILL-POINTER 4) 'VECTOR) now returns (VALUES T)
|
||
instead of (VALUES T T).
|
||
* By following the instructions that Dan Barlow posted to sbcl-devel
|
||
on 2 July 2000, I was able to enable primitive dynamic object
|
||
file loading code for Linux. The full-blown CMU CL LOAD-FOREIGN
|
||
functionality is not implemented (since it calls ld to resolve
|
||
library references automatically, requiring RUN-PROGRAM for its
|
||
implementation), but a simpler SB-EXT:LOAD-1-FOREIGN (which doesn't
|
||
try to resolve library references) is now supported.
|
||
* The system now flushes the standard output streams when it terminates,
|
||
unless QUIT is used with the RECKLESSLY-P option set. It also flushes
|
||
them at several other probably-convenient times, e.g. in each pass of
|
||
the toplevel read-eval-print loop, and after evaluating a form given
|
||
as an "--eval" command-line option. (These changes were motivated by a
|
||
discussion of stream flushing issues on cmucl-imp in August 2000.)
|
||
* The source transform for TYPEP of array types no longer assumes
|
||
that an array whose element type is a not-yet-defined type
|
||
is implemented as an array of T, but instead punts, so that the
|
||
type will be interpreted at runtime.
|
||
* There is now some support for cross-compiling in make.sh: each of
|
||
the phases of make.sh has its own script. (This should be transparent
|
||
to people doing ordinary, non-cross-compile builds.)
|
||
* Since my laptop doesn't have hundreds of megabytes of memory like
|
||
my desktop machine, I became more motivated to do some items on
|
||
my to-do list in order to reduce the size of the system a little:
|
||
** Arrange for various needed-only-at-cold-init things to be
|
||
uninterned after cold init. To support this, those things have
|
||
been renamed from FOO and *FOO* to !FOO and *!FOO* (i.e., all
|
||
symbols with such names are now uninterned after cold init).
|
||
** Bind SB!C::*TOP-LEVEL-LAMBDA-MAX* to a nonzero value when building
|
||
fasl files for cold load.
|
||
** Remove the old compiler structure pooling code (which used to
|
||
be conditional on the target feature :SB-ALLOC) completely.
|
||
** Redo the representation of some data in cold init to be more compact.
|
||
(I also looked into supporting byte compiled code at bootstrap time,
|
||
which would probably reduce the size of the system a lot, but that
|
||
looked too complicated, so I punted for now.)
|
||
* The maximum signal nesting depth in the src/runtime/ support code has
|
||
been reduced from 4096 to 256. (I don't know any reason for the very
|
||
large old value. If the new smaller value turns out to break something,
|
||
I'll probably just bump it back up.)
|
||
* PPRINT-LOGICAL-BLOCK is now pickier about the types of its arguments,
|
||
as per ANSI.
|
||
* Many, many bugs reported by Peter Van Eynde have been added to
|
||
the BUGS list; some have even been fixed.
|
||
* While enabling dynamic object file loading, I tried to make the
|
||
code easier to understand, renaming various functions and variables
|
||
with less ambiguous names, and changing some function calling
|
||
conventions to be Lispier (e.g. returning NIL instead of 0 for failure).
|
||
* While trying to figure out how to do the OpenBSD port, I tried to
|
||
clean up some of the code in src/runtime/. In particular, I dropped
|
||
support for non-POSIX signal handling, added various comments,
|
||
tweaked the code to reduce the number of compilation warnings, and
|
||
renamed some files to increase consistency.
|
||
* To support the new automatic configuration functionality in make.sh,
|
||
the source file target-features.lisp-expr has been replaced with the
|
||
source file base-target-features.lisp-expr and the machine-generated
|
||
file local-target-features.lisp-expr.
|
||
* fixed a stupid quoting error in make.sh so that using CMU CL
|
||
"lisp -batch" as cross-compilation host works again
|
||
|
||
changes in sbcl-0.6.6 relative to sbcl-0.6.5:
|
||
|
||
* DESCRIBE no longer tries to call itself recursively to describe
|
||
bound/fbound values, so that it no longer fails on symbols which are
|
||
bound to themselves (like keywords, T, and NIL).
|
||
* DESCRIBE now works on generic functions.
|
||
* The printer now prints less-screwed-up representations of closures
|
||
(not naively trying to bogusly use the %FUNCTION-NAME accessor on them).
|
||
* A private symbol is used instead of the :EMPTY keyword previously
|
||
used to mark empty slots in hash tables. Thus
|
||
(DEFVAR *HT* (MAKE-HASH-TABLE))
|
||
(SETF (GETHASH :EMPTY *HT*) :EMPTY)
|
||
(MAPHASH (LAMBDA (K V) (FORMAT T "~&~S ~S~%" K V)))
|
||
now does what ANSI says that it should. (You can still get
|
||
similar noncompliant behavior if bang on the hash table
|
||
implementation with all the symbols you get back from
|
||
DO-ALL-SYMBOLS, but at least that's a little harder to do.)
|
||
This breaks binary compatibility, since tests for equality to
|
||
:EMPTY are wired into things like the macroexpansion of
|
||
WITH-HASH-TABLE-ITERATOR in FASL files produced by earlier
|
||
implementations.
|
||
* There's now a minimal placeholder implementation for CL:STEP,
|
||
as required by ANSI.
|
||
* An obscure bug in the interaction of the normal compiler, the byte
|
||
compiler, inlining, and structure predicates has been patched
|
||
by setting the flags for the DEFTRANSFORM of %INSTANCE-TYPEP as
|
||
:WHEN :BOTH (as per Raymond Toy's suggestion on the cmucl-imp@cons.org
|
||
mailing list).
|
||
* Missing ordinary arguments in a macro call are now detected even
|
||
when the macro lambda list contains &KEY or &REST.
|
||
* The debugger no longer complains about encountering the top of the
|
||
stack when you type "FRAME 0" to explicitly instruct it to go to
|
||
the top of the stack. And it now prints the frame you request even
|
||
if it's the current frame (instead of saying "You are here.").
|
||
* As specified by ANSI, the system now always prints keywords
|
||
as #\: followed by SYMBOL-NAME, even when *PACKAGE* is the
|
||
KEYWORD package.
|
||
* The default initial SIZE of HASH-TABLEs is now smaller.
|
||
* Type information from CLOS class dispatch is now propagated
|
||
into DEFMETHOD bodies, so that e.g.
|
||
(DEFMETHOD FOO ((X SINGLE-FLOAT))
|
||
(+ X 123.0))
|
||
is now basically equivalent to
|
||
(DEFMETHOD FOO ((X SINGLE-FLOAT))
|
||
(DECLARE (TYPE SINGLE-FLOAT X))
|
||
(+ X 123.0))
|
||
and the compiler can compile (+ X 123.0) as a SINGLE-FLOAT-only
|
||
operation, without having to do run-time type dispatch.
|
||
* The macroexpansion of DEFMETHOD has been tweaked so that it has
|
||
reasonable behavior when arguments are declared IGNORE or IGNORABLE.
|
||
* Since I don't seem to be making big file reorganizations very often
|
||
any more (and since my archive of sbcl-x.y.zv.tar.bz2 snapshots
|
||
is overflowing my ability to conveniently back them up), I've finally
|
||
checked the system into CVS. (The CVS repository is on my home system,
|
||
not at SourceForge -- putting it on SourceForge might come later.)
|
||
* SB-EXT:*GC-NOTIFY-STREAM* has been added, to control where the
|
||
high-level GC-NOTIFY-FOO functions send their output. (There's
|
||
still very little control of where low-level verbose GC functions
|
||
send their output.) The SB-EXT:*GC-VERBOSE* variable now controls
|
||
less than it used to -- the GC-NOTIFY-FOO functions are now under
|
||
the control of *GC-NOTIFY-STREAM*, not *GC-VERBOSE*.
|
||
* The system now stores the version string (LISP-IMPLEMENTATION-VERSION)
|
||
in only one place in the source code, and propagates it automatically
|
||
everywhere that it's needed. Thus e.g. when I bump the version from
|
||
0.6.6 to 0.6.7, I'll only need to modify the sources in one place.
|
||
* The C source files now include boilerplate legalese and documentation
|
||
at the head of each file (just as the Lisp source files already did).
|
||
* At Dan Barlow's suggestion, the hyperlink from the SBCL website
|
||
to his page will be replaced with a link to his new CLiki service.
|
||
|
||
changes in sbcl-0.6.5 relative to sbcl-0.6.4:
|
||
|
||
* Raymond Wiker's patches to port the system to FreeBSD have been merged.
|
||
* The build process now looks for GNU make under the default name "gmake",
|
||
instead of "make" as it used to. If GNU make is not available as "gmake"
|
||
on your system, you can change this default behavior by setting the
|
||
GNUMAKE environment variable.
|
||
* Replace #+SB-DOC with #!+SB-DOC in seq.lisp so that the system
|
||
can build without error under CMU CL.
|
||
|
||
changes in sbcl-0.6.4 relative to sbcl-0.6.3:
|
||
|
||
* There is now a partial SBCL user manual (with some new text and some
|
||
text cribbed from the CMU CL manual).
|
||
* The beginnings of a profiler have been added (starting with the
|
||
CMU CL profiler and simplifying and cleaning up). Eventually the
|
||
main interface should be through the TRACE macro, but for now,
|
||
it's still accessed through vaguely CMU-CL-style functions and macros
|
||
exported from the package SB-PROFILE.
|
||
* Some problems left over from porting CMU CL to the new
|
||
cross-compilation bootstrap process have been cleaned up:
|
||
** DISASSEMBLE now works. (There was a problem in using DEFMACRO
|
||
instead of SB!XC:DEFMACRO, compounded by an oversight on my
|
||
part when getting rid of the compiler *BACKEND* stuff.)
|
||
** The value of *NULL-TYPE* was screwed up, because it was
|
||
being initialized before the type system knew the final
|
||
definition of the 'NULL type. This screwed up several key
|
||
optimizations in the compiler, causing inefficiency in all sorts
|
||
of places. (I found it because I wanted to understand why
|
||
GET-INTERNAL-RUN-TIME was consing.)
|
||
* fixed a bug in DEFGENERIC which was causing it to overwrite preexisting
|
||
PROCLAIM FTYPE information. Unfortunately this broke binary
|
||
compatibility again, since now the forms output by DEFGENERIC
|
||
to refer to functions which didn't exist in 0.6.3.
|
||
* added declarations so that SB-PCL::USE-CACHING-DFUN-P
|
||
can use the new (as of 0.6.3) transform for SOME into MAP into
|
||
inline code
|
||
* changed (MOD 1000000) type declarations for Linux timeval.tv_usec slot
|
||
values to (INTEGER 0 1000000), so that the time code will no longer
|
||
occasionally get blown up by Linux returning 1000000 microseconds
|
||
* PRINT-UNREADABLE-OBJECT has been tweaked to make the spacing of
|
||
its output conform to the ANSI spec. (Alas, this makes its output
|
||
uglier in the :TYPE T :IDENTITY NIL case, but them's the breaks.)
|
||
* A full call to MAP NIL with a single sequence argument no longer conses.
|
||
* fixes to problems pointed out by Martin Atzmueller:
|
||
* The manual page no longer talks about multiprocessing as though
|
||
it were currently supported.
|
||
* The ILISP support patches have been removed from the distribution,
|
||
because as of version 5.10.1, ILISP now supports SBCL without us
|
||
having to maintain patches.
|
||
* added a modified version of Raymond Toy's recent CMU CL patch for
|
||
EQUALP comparison of HASH-TABLE
|
||
|
||
changes in sbcl-0.6.3 relative to sbcl-0.6.2:
|
||
|
||
* The system still can't cross-compile itself with
|
||
*TYPE-SYSTEM-INITIALIZED* (and all the consistency checks that
|
||
entails), but at least it can compile more of itself that way
|
||
than it used to be able to, and various buglets which were uncovered
|
||
by trying to cross-compile itself that way have now been fixed.
|
||
* This release breaks binary compatibility again. This time
|
||
at least I've incremented the FASL file format version to 2, so that the
|
||
problem can be detected reliably instead of just causing weird errors.
|
||
* various new style warnings:
|
||
** using DEFUN, DEFMETHOD, or DEFGENERIC to overwrite an old definition
|
||
** using the deprecated EVAL/LOAD/COMPILE situation names in EVAL-WHEN
|
||
** using the lexical binding of a variable named in the *FOO* style
|
||
* DESCRIBE has been substantially rewritten. It now calls DESCRIBE-OBJECT
|
||
as specified by ANSI.
|
||
* *RANDOM-STATE* is no longer automatically initialized from
|
||
(GET-UNIVERSAL-TIME), but instead from a constant seed. Thus, the
|
||
default behavior of the system is to repeat its behavior every time
|
||
it's run. If you'd like to change this behavior, you can always
|
||
explicitly set the seed from (GET-UNIVERSAL-TIME); whereas under the
|
||
old convention there was no comparably easy way to get the system to
|
||
repeat its behavior every time it was run.
|
||
* Support for the pre-CLTL2 interpretation of FUNCTION declarations as
|
||
FTYPE declarations has been removed, in favor of their ANSI
|
||
interpretation as TYPE FUNCTION declarations. (See p. 228 of CLTL2.)
|
||
* The quantifiers SOME, EVERY, NOTANY, and NOTEVERY no longer cons when
|
||
the types of their sequence arguments can be determined at compile time.
|
||
This is done through a new open code expansion for MAP which eliminates
|
||
consing for (MAP NIL ..), and reduces consing otherwise, when sequence
|
||
argument types can be determined at compile time.
|
||
* The optimizer now transforms COERCE into an identity operation when it
|
||
can prove that the coerced object is already of the correct type. (This
|
||
can be a win for machine generated code, including the output of other
|
||
optimization transforms, such as the MAP transform above.)
|
||
* Credit information has been moved from source file headers into CREDITS.
|
||
* Source file headers have been made more standard.
|
||
* The CASE macro now compiles without complaining even when it has
|
||
no clauses.
|
||
|
||
changes in sbcl-0.6.2 relative to sbcl-0.6.1:
|
||
|
||
* (Note that the way that the PCL macroexpansions were rewritten
|
||
to accommodate the change in DEFGENERIC below breaks binary
|
||
compatibility. That is, fasl files compiled under sbcl-0.6.1 may
|
||
not run under sbcl-0.6.2. Once we get out of alpha releases,
|
||
i.e. hit release 1.0.0, we'll probably try to maintain binary
|
||
compatibility between maintenance releases, e.g. between sbcl-1.4.3
|
||
and sbcl-1.4.4. Until then, however, it might be fairly common
|
||
for maintenance releases to break binary compatibility.)
|
||
* A bug in the calculation of WARNINGS-P and FAILURE-P in COMPILE-FILE
|
||
has been fixed.
|
||
* The reporting of unhandled signals has been changed to print some
|
||
explanatory text as well as the report form. (Previously only
|
||
the report form was printed.)
|
||
* The macroexpansion for DEFGENERIC now DECLAIMs the function that
|
||
it defines, so that the compiler no longer issues undefined function
|
||
warnings for compiled-but-not-yet-loaded generic functions.
|
||
* The CLTL-style "LISP" and "USER" nicknames for the "COMMON-LISP"
|
||
and "COMMON-LISP-USER" packages have been removed. Now only the "CL"
|
||
and "CL-USER" standard nicknames from the "11.1.2 Standardized Packages"
|
||
section of the ANSI spec are supported.
|
||
* The "" nickname for the "KEYWORD" package has been removed.
|
||
The reader still handles symbol tokens which begin with a package marker
|
||
as keywords, but it doesn't expose its mechanism for doing so in the
|
||
(PACKAGE-NICKNAMES (FIND-PACKAGE "KEYWORD")) list.
|
||
* The system now issues STYLE-WARNINGs for contradictory TYPE
|
||
proclamations. (Warnings for contradictory FTYPE proclamations would
|
||
be nice too, but those can't be done usefully unless the type system
|
||
is made smarter about FUNCTION types.)
|
||
* The names of source files "*host-*.lisp" and "*target-*.lisp" have been
|
||
systematized, so that "*target-*.lisp is supposed to exist only on the
|
||
target and imply that there's a related file which exists on the
|
||
host, and *host-*.lisp is supposed to exist only on the host and imply
|
||
that there's a related file which exists on the target. This involves a
|
||
lot of renaming. Hopefully the acute confusion caused by the renaming
|
||
will be justified by the reduction in chronic confusion..
|
||
** runtime-type.lisp -> early-target-type.lisp
|
||
** target-type.lisp -> late-target-type.lisp
|
||
** early-host-format.lisp -> early-format.lisp
|
||
** late-host-format.lisp -> late-format.lisp
|
||
** host-error.lisp -> misc-error.lisp
|
||
** early-error.lisp -> early-target-error.lisp
|
||
** late-error.lisp -> late-target-error.lisp
|
||
** host-defboot.lisp -> early-defboot.lisp
|
||
** code/misc.lisp -> code/target-misc.lisp
|
||
** code/host-misc.lisp -> code/misc.lisp
|
||
** code/numbers.lisp -> code/target-numbers.lisp
|
||
** code/early-numbers.lisp -> numbers.lisp
|
||
** early-host-type.lisp -> early-type.lisp
|
||
** late-host-type.lisp -> late-type.lisp
|
||
** host-typep.lisp -> typep.lisp
|
||
** load.lisp -> target-load.lisp
|
||
** host-load.lisp -> load.lisp
|
||
** host-disassem.lisp -> disassem.lisp
|
||
** host-insts.lisp -> insts.lisp
|
||
** byte-comp.lisp -> target-byte-comp.lisp
|
||
** host-byte-comp.lisp -> byte-comp.lisp
|
||
** host-signal.lisp -> signal.lisp
|
||
** host-defstruct.lisp -> defstruct.lisp
|
||
** late-target-type.lisp -> deftypes-for-target.lisp
|
||
Furthermore, several other previously target-only files foo.lisp (e.g.
|
||
hash-table.lisp and random.lisp) have been split into a target-and-host
|
||
foo.lisp file and a target-only target-foo.lisp file, with their key type
|
||
definitions in the target-and-host part, so that the cross-compiler will
|
||
know more about target types.
|
||
* DEFSTRUCT BACKEND, and the BACKEND-valued *BACKEND* variable, have
|
||
gone away. In their place are various *BACKEND-FOO* variables
|
||
corresponding to the slots of the old structure.
|
||
* A bug which caused the SB-COLD bootstrap-time package to be propagated
|
||
into the target SBCL has been fixed.
|
||
* The chill.lisp system for loading cold code into a running SBCL
|
||
now works better.
|
||
* Support for the CMU CL "scavenger hook" extension has been removed.
|
||
(It was undocumented and unused in the CMU CL sources that SBCL was
|
||
derived from, and stale in sbcl-0.6.1.)
|
||
* Various errors in the cross-compiler type system were detected
|
||
by running the cross-compiler with *TYPE-SYSTEM-INITIALIZED*
|
||
(enabling various consistency checks). Many of them were fixed,
|
||
but some hard problems remain, so the compiler is back to
|
||
running without *TYPE-SYSTEM-INITIALIZED* for now.
|
||
* As part of the cross-compiler type system cleanup, I implemented
|
||
DEF!TYPE and got rid of early-ugly-duplicates.lisp.
|
||
* I have started adding UNCROSS calls throughout the type system
|
||
and the INFO database. (Thus perhaps eventually the blanket UNCROSS
|
||
on cross-compiler input files will be able to go away, and various
|
||
kludges with it).
|
||
* CONSTANTP now returns true for quoted forms (as explicitly required
|
||
by the ANSI spec).
|
||
|
||
changes in sbcl-0.6.1 relative to sbcl-0.6.0:
|
||
|
||
* changed build optimization from (SAFETY 1) to (SAFETY 3) as a short-term
|
||
fix for various type-unsafety bugs, e.g. failures with (LENGTH 123) and
|
||
(MAKE-LIST -1). In the longer term, it ought to become true
|
||
that declarations are assertions even at SAFETY 1. For now, it's not
|
||
quite true even at SAFETY 3, but it's at least more nearly true..
|
||
(Note that this change seems to increases the size of the system by
|
||
O(5%) and to decrease the speed of the compiler by 20% or more.)
|
||
* changed ALIEN printing to be much more abbreviated, as a short-term fix
|
||
for the problem of printing dozens of lines of distracting information
|
||
about low-level system machinery as part of the top stack frame
|
||
on entry to the debugger when an undefined function was called.
|
||
* tweaked the debugger's use of WITH-STANDARD-IO-SYNTAX so that *PACKAGE*
|
||
is not reset to COMMON-LISP-USER.
|
||
* Compilation of stuff related to dyncount.lisp has been made conditional
|
||
on the :SB-DYNCOUNT target feature, so that the ordinary core system is
|
||
smaller. The various dyncount-related symbols have been moved into
|
||
a new "SB-DYNCOUNT" package.
|
||
* tty-inspect.lisp has been renamed to inspect.lisp.
|
||
* unix-glibc2.lisp has been renamed to unix.lisp, and the :GLIBC2
|
||
feature has gone away. (When we eventually port to other flavors of
|
||
libc and/or Unix, we'll try to make the differences between flavors
|
||
invisible at the user level.)
|
||
* Various other *FEATURES* tags, and/or their associated conditionals,
|
||
have been removed if obsolescent, or given better documentation, or
|
||
sometimes given more-mnemonic names.
|
||
|
||
changes in sbcl-0.6.0 relative to sbcl-0.5.0:
|
||
|
||
* tidied up "make.sh" script
|
||
* tidied up system directory structure
|
||
* better "clean.sh" behavior
|
||
* added doc/FOR-CMUCL-DEVELOPERS
|
||
* many many small tweaks to output format, e.g. removing possibly-confusing
|
||
trailing #\. character in DESCRIBE-INSTANCE
|
||
* (EQUALP #\A 'A) no longer signals an error.
|
||
* new hashing code, including EQUALP hashing
|
||
* tidied up Lisp initialization and toplevel
|
||
* initialization files (e.g. /etc/sbclrc and $HOME/.sbclrc)
|
||
* command line argument processing
|
||
* added POSIX-GETENV function to deal with Unix-ish environment variables
|
||
* more-Unixy handling of *STANDARD-INPUT* and other Lisp streams, e.g.
|
||
terminating SBCL on EOF
|
||
* non-verbose GC by default
|
||
* There is no more "sbcl" shell script; the sbcl file is now the C
|
||
runtime executable (just like CMU CL).
|
||
* removed some unused fops, e.g. FOP-UNIFORM-VECTOR, FOP-CHARACTER, and
|
||
FOP-POP-FOR-EFFECT
|
||
* tweaked debug-info.lisp and debug-int.lisp to make the debugger store
|
||
symbol and package information as Lisp native symbol and package objects
|
||
instead of strings naming symbols and strings naming packages. This way,
|
||
whenever packages are renamed (as in warm init), debug information is
|
||
transformed along with everything else.
|
||
* tweaked the optimization policy declarations which control the building
|
||
of SBCL itself. Now, among other things, the system no longer saves
|
||
source location debugging information. (This helps two problems at once
|
||
by reducing SBCL size and by keeping SBCL from trying to look for its
|
||
sources -- which may not exist -- when reporting errors.)
|
||
* added src/cold/chill.lisp, to let SBCL read its own cold sources for
|
||
debugging and testing purposes
|
||
* cleaned up printing, making the printer call PRINT-OBJECT for
|
||
instances, and using PRINT-UNREADABLE-OBJECT for most PRINT-OBJECT
|
||
methods, giving nearly-ANSI behavior
|
||
* converted almost all special variables to use *FOO* naming convention
|
||
* deleted PARSE-TIME functionality, since it can be done portably
|
||
* moved some files out of cold init into warm init
|
||
* deleted DEFUN UNDEFINED-VALUE, replaced (UNDEFINED-VALUE) forms
|
||
with (VALUES) forms
|
||
* regularized formatting of source files
|
||
* added an install.sh script
|
||
* fixed ridiculous memory usage of cross-compiler by making
|
||
compiler/alloc.lisp not try to do pooling unless it can hook
|
||
itself into the GC of the cross-compilation host. Now the system
|
||
builds nicely on my old laptop.
|
||
* added :SB-ALLOC in target-features.lisp-expr
|
||
* deleted mention of :ANSI-DOC from target-features.lisp-expr (since it
|
||
was not implemented)
|
||
* re-did condition handling and note reporting in the compiler. Notes
|
||
are no longer handled by signalling conditions. Style warnings
|
||
and warnings are handled more correctly and reported in such a way
|
||
that it's easy to find one or the other in your output (so that you
|
||
can e.g. figure out which of many problems caused COMPILE-FILE to
|
||
return FAILURE-P).
|
||
* changed the severity of several compiler warnings from full WARNING
|
||
to STYLE-WARNING in order to conform with the ANSI spec; also changed
|
||
compiler note reporting so that it doesn't use the condition system
|
||
at all (and hence affects neither FAILURE-P nor WARNINGS-P in the
|
||
COMPILE-FILE command)
|
||
* made PROCLAIM and DECLAIM conform to ANSI. PROCLAIM is now an ordinary
|
||
function. As a consequence, START-BLOCK and END-BLOCK declarations are
|
||
no longer supported, since their implementation was deeply intertwingled
|
||
with the magical, non-ANSI treatment that PROCLAIM received in CMU CL.
|
||
* removed bogus "support" for compiler macros named (SETF FOO), and
|
||
removed the compiler macro for SETF INFO (but only after making a fool
|
||
of myself on the cmucl-imp mailing list by posting a bogus patch for
|
||
DEFINE-COMPILER-MACRO..)
|
||
* Compiled files containing forms which have side effects on the Lisp
|
||
reader (such as DEFPACKAGE forms) are now handled more correctly.
|
||
(Compiler queuing of top level lambdas has been suppressed by setting
|
||
*TOP-LEVEL-LAMBDA-MAX* to 0. )
|
||
* deleted various currently-unused source files, e.g. gengc.lisp. They
|
||
may be added back at some point e.g. when porting to other architectures,
|
||
but until they are it's distracting to distribute them and to try to
|
||
maintain them.
|
||
* deleted "UNCROSS couldn't recurse through.." style warnings, since
|
||
there were so many of them they're just distractions, and UNCROSS is
|
||
known to be able to handle the current sources
|
||
* moved PROFILE functionality into TRACE, so that it will be clear
|
||
how the wrapping and unwrapping of functions when you profile them
|
||
interacts with the wrapping and unwrapping of functions when you
|
||
trace them. (Actually, the functionality isn't there yet, but at least
|
||
the interface specification is there. Hopefully, the functionality will
|
||
arrive with some future maintenance release.)
|
||
* removed host-oops.lisp
|
||
* changed signature of QUIT function to allow UNIX-CODE argument
|
||
* fixed READ-SEQUENCE bug
|
||
* tweaked verbose GC output so that it looks more like the progress
|
||
output that ANSI specifies for functions like LOAD
|
||
* set up the system on sourceforge.com, with home pages, mailing lists, etc.
|
||
* added <http://sbcl.sourceforge.com> to the banner information printed by
|
||
the sbcl executable
|