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