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