X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=NEWS;h=8429f984d12b0fead933365a1940768cfd649062;hb=02c9007b4ca5753406f60019f4fe5e5f8392541a;hp=8d8b505a6bd18090fb5296dbd070be8a230461d2;hpb=48b4e7d2121bc92ed4b4ed0951b85e764f864f05;p=sbcl.git diff --git a/NEWS b/NEWS index 8d8b505..0ac4b8e 100644 --- a/NEWS +++ b/NEWS @@ -1250,19 +1250,460 @@ changes in sbcl-0.7.7 relative to sbcl-0.7.6: * The fasl file version number has changed again. (because of the bug fix involving the names of PCL MAKE-INSTANCE functions) -planned incompatible changes in 0.7.x: -* When the profiling interface settles down, maybe in 0.7.x, maybe - later, 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.) -* Inlining can now be controlled the ANSI way, without - MAYBE-INLINE, since the idiom +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.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.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.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.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.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.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.8.0 relative to sbcl-0.7.14 + * 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) + * known functions, which cannot be open coded by backend, are + considered to be able to check types of their arguments. + (reported 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) + * Experimental native threads support, on x86 Linux. 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. + * 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. + + * sb-aclrepl module improvements: an integrated inspector, added + repl features, and a bug fix to :trace command. + * 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; + ** ... and associates exactly its own restarts with a condition; + +planned incompatible changes in 0.8.x: + * (not done yet, but planned:) When the profiling interface settles + down, maybe in 0.7.x, maybe later, 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. + now does what ANSI says it should. The CMU-CL-style + SB-EXT:MAYBE-INLINE declaration is now deprecated and ignored.