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