-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.
+* 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.6.3 relative to sbcl-0.6.2:
+
+* 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.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).