-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
-
-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.8.13 relative to sbcl-0.8.12:
+ * new feature: SB-PACKAGE-LOCKS. See the "Package Locks" section of
+ the manual for details; add :SB-PACKAGE-LOCKS in
+ customize-target-features.lisp to enable them.
+ * 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.
+ * 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 #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 a bug: #\Space (and other whitespace characters) are no
+ longer considered to be macro characters in standard syntax by
+ GET-MACRO-CHARACTER.
-changes in sbcl-0.6.2 relative to sbcl-0.6.1:
+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.
-* (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.3 relative to sbcl-0.6.2:
+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.
-* 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.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.6.4 relative to sbcl-0.6.3:
+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.
-* 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.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.6.5 relative to sbcl-0.6.4:
+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.
-* 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.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.6.6 relative to sbcl-0.6.5:
+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.
-* 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.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.6.7 relative to sbcl-0.6.6:
+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
-* 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.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.6.8 relative to sbcl-0.6.7:
+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.
-* 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.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.6.9 relative to sbcl-0.6.8:
+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.
-* 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.10 relative to sbcl-0.6.9:
+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;
-* 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.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.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.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.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.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.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.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.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.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.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.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.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.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 "A\7fB") returns
- |A\7fB|, instead of A as it used to.
-
-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.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.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,
* 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.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.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.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.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 "A\7fB") returns
+ |A\7fB|, 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.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.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.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.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.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.6.10 relative to sbcl-0.6.9:
-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.
+* 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.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.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.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.6.8 relative to sbcl-0.6.7:
-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".
+* 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.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.6.7 relative to sbcl-0.6.6:
-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.
+* 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.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.6.6 relative to sbcl-0.6.5:
-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).
+* 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.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.6.5 relative to sbcl-0.6.4:
-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.
+* 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.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.6.4 relative to sbcl-0.6.3:
-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).
+* 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.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.6.3 relative to sbcl-0.6.2:
-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)
+* 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.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.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.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.6.1 relative to sbcl-0.6.0:
-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; add :SB-PACKAGE-LOCKS in
- customize-target-features.lisp to enable them.
- * 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.
- * 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 #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 a bug: #\Space (and other whitespace characters) are no
- longer considered to be macro characters in standard syntax by
- GET-MACRO-CHARACTER.
+* 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:
-planned incompatible changes in 0.8.x:
- * (not done yet, but planned:) When the profiling interface settles
- down, it might impact TRACE. They both encapsulate functions, and
- it's not clear yet how e.g. UNPROFILE will interact with TRACE
- and UNTRACE. (This shouldn't matter, though, unless you are using
- profiling. If you never profile anything, TRACE should continue to
- behave as before.)
- * (not done yet, but planned:) Inlining can now be controlled the
- ANSI way, without MAYBE-INLINE, since the idiom
- (DECLAIM (INLINE FOO))
- (DEFUN FOO (..) ..)
- (DECLAIM (NOTINLINE FOO))
- (DEFUN BAR (..) (FOO ..))
- (DEFUN BLETCH (..) (DECLARE (INLINE FOO)) (FOO ..))
- now does what ANSI says it should. The CMU-CL-style
- SB-EXT:MAYBE-INLINE declaration is now deprecated and ignored.
+* 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