-* 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.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.