X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=NEWS;h=3625151a634e6bd3ea7a4ae4d23bf63ad6f00495;hb=4dbc52ee4f9a4f566701f1d33e7916e8491b918b;hp=f5043161fff126e8526edf460a93ff2255ed8ce3;hpb=befe933802fbddddf122a8b115554d2e53cdf103;p=sbcl.git diff --git a/NEWS b/NEWS index f504316..5f3dca3 100644 --- a/NEWS +++ b/NEWS @@ -487,21 +487,779 @@ changes in sbcl-0.6.8 relative to sbcl-0.6.7: 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.) -?? Raymond Wiker's port of CMU CL's RUN-PROGRAM has been added. -(?? Don't forget to mention Raymond Wiker in the CREDITS file.) -?? The debugger now flushes standard output streams before it begins +* 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 patch for the SUBSEQ bug reported on the cmucl-imp mailing - list 12 September 2000 has been applied to SBCL. -?? Martin Atzmueller's versions of two CMU CL patches, as posted on - sbcl-devel 13 September 2000, have been installed. (The patches fix - a bug in SUBSEQ and .) -?? A bug in signal handling which kept TRACE from working on OpenBSD +* 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. - ?? Remember to remove this from the port-specific section of BUGS. -?? The signal handling bug reported by Martin Atzmueller on - sbcl-devel 13 September 2000, which caused the debugger to - get confused after a Ctrl-C interrupt under ILISP, has been fixed. -?? The QUIT :UNIX-CODE keyword argument has been renamed to - QUIT :UNIX-STATUS. (The old name is still supported, but - deprecated.) +* added enough DEFTRANSFORMs to allow (SXHASH 'FOO) to be optimized + away by constant folding +* The system now defines its address space constants in one place + (in the Lisp sources), and propagates them automatically elsewhere + (through GENESIS and the sbcl.h file). Therefore, patching the + address map is less unnecessarily tedious and error-prone. The + Lisp names of address space constants have also been systematized. +* CVS tags like dollar-Header-dollar have been removed from + the sources, because they have never saved me trouble and + they've been source of trouble working with patches and other + diff-related operations. +* fixed the PROG1-vs.-PROGN bug in HANDLER-BIND (reported by + ole.rohne@cern.ch on cmucl-help@cons.org 2000-10-25) + +changes in sbcl-0.6.9 relative to sbcl-0.6.8: + +* DESCRIBE now works on CONDITION objects. +* The debugger now handles errors which arise when trying to print + *DEBUG-CONDITION*, so that it's less likely to fall into infinite + regress. +* The build system now uses an additional file, customize-target-features.lisp, + to allow local modifications to the target *FEATURES* list. (The point of + this is that now I can set up a custom configuration, e.g. with :SB-SHOW + debugging features enabled, without having to worry about propagating it + into everyone's system when I do a "cvs update".) When no + customize-target-features.lisp file exists, the target *FEATURES* list + should be constructed the same way as before. +* fixed bugs in DEFCONSTANT ANSI-compatibility: + ** DEFCONSTANT now tests reassignments using EQL, not EQUAL, in order to + warn about behavior which is undefined under the ANSI spec. Note: This + is specified by ANSI, but it's not very popular with programmers. + If it causes you problems, take a look at the new SB-INT:DEFCONSTANT-EQX + macro in the SBCL sources for an example of a workaround which you + might use to make portable ANSI-standard code which does what you want. + ** DEFCONSTANT's implementation is now based on EVAL-WHEN instead of on + pre-ANSI IR1 translation magic, so it does the ANSI-specified thing + when it's used as a non-toplevel form. (This is required in order + to implement the DEFCONSTANT-EQX macro.) + ** (DEFCONSTANT X 1) (DEFVAR X) (SETF X 2) no longer "works". + ** Unfortunately, non-toplevel DEFCONSTANT forms can still do some + funny things, due to bugs in the implementation of EVAL-WHEN + (bug #IR1-3). This probably won't be fixed until 0.7.x. (Fortunately, + non-toplevel DEFCONSTANTs are uncommon.) +* The core file version number and fasl file version number have been + incremented, because the old noncompliant DEFCONSTANT behavior involved + calling functions which no longer exist, and because I also took the + opportunity to chop an unsupported slot out of the DEBUG-SOURCE structure. +* fixed bug 1 (error handling before read-eval-print loop starts), and + redid debugger restarts and related debugger commands somewhat while + doing so: + ** The QUIT debugger command is gone, since it did something + rather different than the SB-EXT:QUIT command, and since it never + worked properly outside the main toplevel read/eval/print loop. + Invoking the new TOPLEVEL restart provides the same functionality. + ** The GO debugger command is also gone, since you can just invoke + the CONTINUE restart directly instead. + ** The TOP debugger command is also gone, since it's redundant with the + FRAME 0 command, and since it interfered with abbreviations for the + TOPLEVEL restart. +* The system now recovers better from non-PACKAGE values of the *PACKAGE* + variable. +* The system now understands compound CONS types (e.g. (CONS FIXNUM T)) + as required by ANSI. (thanks to Douglas Crosher's CMU CL patches, with + some porting work by Martin Atzmueller) +* Martin Atzmueller reviewed the CMU CL mailing lists and came back + with a boatload of patches which he ported to SBCL. Now that those + have been applied, + ** The system tries to make sure that its low-priority messages + are prefixed by semicolons, to help people who like to use + syntax highlighting in their ILISP buffer. (This patch + was originally due to Raymond Toy.) + ** The system now optimizes INTEGER-LENGTH better, thanks to more + patches originally written by Raymond Toy. + ** The compiler understands coercion between single-value and + multiple-VALUES type expressions better, getting rid of some very + weird behavior, thanks to patches originally by Robert MacLachlan + and Douglas Crosher. + ** The system understands ANSI-style non-KEYWORD &KEY arguments in + lambda lists, thanks to a patch originally by Pierre Mai. + ** The system no longer bogusly warns about "abbreviated type + declarations". + ** The compiler gets less confused by inlining and RETURN-FROM, + thanks to some patches originally by Tim Moore. + ** The system no longer hangs when dumping circular lists to fasl + files, thanks to a patch originally from Douglas Crosher. +* Martin Atzmueller also fixed ROOM, so that it no longer fails with an + undefined function error. +* gave up on fixing bug 3 (forbidden-by-ANSI warning for type mismatch + in structure slot initforms) for now, documented workaround instead:-| +* fixed bug 4 (no WARNING for DECLAIM FTYPE of slot accessor function) +* fixed bug 5: added stubs for various Gray stream functions called + in the not-a-CL:STREAM case, so that even when Gray streams aren't + installed, at least appropriate type errors are generated +* fixed bug 8: better reporting of various PROGRAM-ERRORs +* fixed bug 9: IGNORE and IGNORABLE now work reasonably and more + consistently in DEFMETHOD forms. +* removed bug 21 from BUGS, since Martin Atzmueller points out that + it doesn't seem to affect SBCL after all +* The C runtime system now builds with better optimization and many + fewer warnings, thanks to lots of cleanups by Martin Atzmueller. + +changes in sbcl-0.6.10 relative to sbcl-0.6.9: + +* 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.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.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 + . + 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.6.13 relative to sbcl-0.6.12: +* a port to the Compaq/DEC Alpha CPU, thanks to Dan Barlow +* Martin Atzmueller ported Tim Moore's marvellous CMU CL DISASSEMBLE + patch, so that DISASSEMBLE output is much nicer. +* The code in the SB-PROFILE package now seems reasonably stable. + I still haven't decided what the final interface should look like + (I'd like PROFILE to interact cleanly with TRACE, since both + facilities use function encapsulation) but if you have a need + for profiling now, you can probably use it successfully with + the current CMU-CL-style interface. +* Pathnames and *DEFAULT-DIRECTORY-DEFAULTS* are much more + ANSI-compliant, thanks to various fixes and tests from Dan Barlow. + Also, at Dan Barlow's suggestion, TRUENAME on a dangling symbolic + link now returns the dangling link itself, and for similar + reasons, TRUENAME on a cyclic symbolic link returns the cyclic + link itself. (In these cases the old code signalled an error and + looped endlessly, respectively.) Thus, DIRECTORY now works even + in the presence of dangling and cyclic symbolic links. +* Compiler trace output (the :TRACE-FILE option to COMPILE-FILE) + is now a supported extension again, since the consensus on + sbcl-devel was that it can be useful for ordinary development + work, not just for debugging SBCL itself. +* The default for SB-EXT:*DERIVE-FUNCTION-TYPES* has changed to + NIL, i.e. ANSI behavior, i.e. the compiler now recognizes + that currently-defined functions might be redefined later with + different return types. +* Hash tables can be printed readably, as inspired by CMU CL code + of Eric Marsden and SBCL code of Martin Atzmueller. +* better error handling in CLOS method combination, thanks to + Martin Atzmueller porting Pierre Mai's CMU CL patches +* more overflow fixes for >16Mbyte I/O buffers +* A bug in READ has been fixed, so that now a single Ctrl-D + character suffices to cause end-of-file on character streams. + In particular, now you only need one Ctrl-D at the command + line (not two) to exit SBCL. +* fixed bug 26: ARRAY-DISPLACEMENT now returns (VALUES NIL 0) for + undisplaced arrays. +* fixed bug 107 (reported as a CMU CL bug by Erik Naggum on + comp.lang.lisp 2001-06-11): (WRITE #*101 :RADIX T :BASE 36) now + does the right thing. +* The implementation of some type tests, especially for CONDITION + types, is now tidier and maybe faster, due to CMU CL code + originally by Douglas Crosher, ported by Martin Atzmueller. +* Some math functions have been fixed, and there are new + optimizers for deriving the types of COERCE and ARRAY-ELEMENT-TYPE, + thanks to Raymond Toy's work on CMU CL, ported by Martin Atzmueller. +* (There are also some new optimizers in contrib/*-extras.lisp. Those + aren't built into sbcl-0.6.13, but are a sneak preview of what's + likely to be built into sbcl-0.7.0.) +* A bug in COPY-READTABLE was fixed. (Joao Cachopo's patch to CMU + CL, ported to SBCL by Martin Atzmueller) +* DESCRIBE now gives more information in some cases. (Pierre Mai's + patch to CMU CL, ported to SBCL by Martin Atzmueller) +* Martin Atzmueller and Bill Newman fixed some bugs in INSPECT. +* There's a new slam.sh hack to shorten the edit/compile/debug + cycle for low-level changes to SBCL itself, and a new + :SB-AFTER-XC-CORE target feature to control the generation of + the after-xc.core file needed by slam.sh. +* minor incompatible change: The ENTRY-POINTS &KEY argument to + COMPILE-FILE is no longer supported, so that now every function + gets an entry point, so that block compilation looks a little + more like the plain vanilla ANSI section 3.2.2.3 scheme. +* minor incompatible change: SB-EXT:GET-BYTES-CONSED now + returns the number of bytes consed since the system started, + rather than the number consed since the first time the function + was called. (The new definition parallels ANSI functions like + CL:GET-INTERNAL-RUN-TIME.) +* minor incompatible change: The old CMU-CL-style DIRECTORY options, + i.e. :ALL, :FOLLOW-LINKS, and :CHECK-FOR-SUBDIRS, are no longer + supported. Now DIRECTORY always does the abstract Common-Lisp-y + thing, i.e. :ALL T :FOLLOW-LINKS T :CHECK-FOR-SUBDIRS T. +* Fasl file version numbers are now independent of the target CPU, + since historically most system changes which required version + number changes have affected all CPUs equally. Similarly, + the byte fasl file version is now equal to the ordinary + fasl file version. + +changes in sbcl-0.7.0 relative to sbcl-0.6.13: +* major incompatible change: The default fasl file extension, i.e. the + default extension for files produced by COMPILE-FILE, has changed + to ".fasl", for all architectures. (No longer ".x86f" and ".axpf".) +* compiler changes: + ** There are many changes in the implementation of the compiler. + SBCL is now essentially a compiler-only implementation of ANSI + Common Lisp. EVAL still "interprets" a few special cases, but + almost all the interesting cases are handled by creating + a LAMBDA expression, calling COMPILE on it, then calling + FUNCALL on the result. + ** The EVAL-WHEN code has been rewritten to be ANSI-compliant, and + various related bugs (IR1-1, IR1-2, IR1-3, IR1-3a) have gone away. + Since the code is newer, there might still be some new bugs + (though not as many as before Martin Atzmueller's fixes:-). But + the new code is substantially simpler and clearer, and hopefully + any remaining bugs will be simpler, less fundamental, and more + fixable then the bugs in the old code. + ** The revised compiler is still a little unsteady on its feet. + In particular, + *** The debugging information it produces (particularly the names + of FUNCTION objects) is sometimes much less useful than what + the old compiler produced. + *** The support for inlining FOO when you (DECLAIM (INLINE FOO)) + then do (DEFUN FOO ..) in a non-null lexical environment (e.g. + within a MACROLET) has been temporarily weakened. + ** There are new compiler optimizations for various functions: + *** the sequence functions FIND, POSITION, FIND-IF, POSITION-IF, + FIND-IF-NOT, POSITION-IF-NOT, and FILL + *** the math functions TRUNCATE, FLOOR, and CEILING + *** the function-of-all-trades COERCE + Mostly these should be transparent, but there's one + potentially-annoying problem (bug 117): when the compiler + inline-expands a function and does type analysis on the result, + it can create control paths which have type mismatches, and + when it can't prove that those control paths aren't taken, + it will issue WARNINGs about the type mismatches. This is + a particular problem in practice for the new sequence functions. + It's not clear how this should be fixed, and for now, a + workaround is given in the entry for 117 in the BUGS file. + ** (Because of the interaction between the two previous items -- + occasional inlining problems and new inline expansions -- some + of the new sequence function optimizations won't really kick in + completely until debugging information, and then inlining, are + straightened out in some future version.) +* minor incompatible changes: + ** As part of a bug fix by Christophe Rhodes to DIRECTORY behavior, + DIRECTORY no longer implicitly promotes NIL slots of its + pathname argument to :WILD. In particular, when you ask for the + contents of a directory (which you used to be able to do without + explicit wildcards, e.g. (DIRECTORY "/tmp/")) you now need to use + explicit wildcards, e.g. (DIRECTORY "/tmp/*.*"). + ** changes in behavior that ANSI explicitly defines to be + implementation dependent: + *** The new compiler-only implementation still conforms with ANSI, + but acts a little different than before. Besides the obvious + changes in performance tradeoffs (that the cost per form passed + to EVAL has gone up, and the cost per form executed by EVAL + has gone down), the behavior of the system changes a little + because there are no longer any interpreted function objects. + COMPILED-FUNCTION-P is now synonymous with FUNCTIONP, and + e.g. doing COMPILE on the output of interactive DEFUN is + now a no-op. + *** The value of INTERNAL-TIME-UNITS-PER-SECOND has been increased + from 100 to 1000. + *** The default for the USE list in MAKE-PACKAGE and DEFPACKAGE + has changed from (:CL) to NIL. + *** The CHAR-NAME of unprintable ASCII characters which, unlike + e.g. #\Newline and #\Tab, don't have names specified in the + ANSI Common Lisp standard, is now based on their ASCII symbolic + names (#\Nul, #\Soh, #\Stx, etc.) The old CMU-CL-style names + (#\Null, #\^a, #\^b, etc.) are still accepted by NAME-CHAR, but + are no longer used for output. + ** changes in internal implementation constants: + *** The default value of *BYTES-CONSED-BETWEEN-GCS* has doubled, to + 4 million. (If your application spends a lot of time GCing and + you have a lot of RAM, you might want to experiment with + increasing it even more.) + ** The SB-C-CALL package has been merged into the SB-ALIEN package. + However, almost all old code should still continue to work without + immediate update, as SB-C-CALL is now a (deprecated) nickname + for SB-ALIEN. + ** Old operator names in the style DEF-FOO are now deprecated in + favor of new corresponding names DEFINE-FOO, for consistency with + the naming convention used in the ANSI standard (DEFSTRUCT, DEFVAR, + DEFINE-CONDITION, DEFINE-MODIFY-MACRO..). This mostly affects + internal symbols, but a few supported extensions like + SB-ALIEN:DEF-ALIEN-FUNCTION are also affected. (So e.g. + DEF-ALIEN-FUNCTION becomes DEFINE-ALIEN-FUNCTION.) + ** The debugger prompt sequence now goes "5]", "5[2]", "5[3]", + etc. as you get deeper into recursive calls to the debugger + command loop, instead of the old "5]", "5]]", "5]]]" + sequence. (I was motivated to do this when squabbles between + ILISP and SBCL left me very deeply nested in the debugger. In the + short term, this change will probably provoke more ILISP/SBCL + squabbles, but hopefully it will be an improvement in the long run.) + ** SB-ALIEN:DEFINE-ALIEN-FUNCTION (also known by the old deprecated + name DEF-ALIEN-FUNCTION) now does DECLAIM FTYPE for the defined + function, since declaiming return types involving aliens is + (1) annoyingly messy to do by hand and (2) vital to efficient + compilation of code which calls such functions. + ** SB-ALIEN:LOAD-FOREIGN and SB-ALIEN:LOAD-1-FOREIGN are no + longer reexported by the SB-EXT package. They're solely useful + for alien code, so it seems more logical that you should get + them from the SB-ALIEN package, not in SB-EXT. + ** :SB-CONSTRAIN-FLOAT-TYPE, :SB-PROPAGATE-FLOAT-TYPE, and + :SB-PROPAGATE-FUN-TYPE are no longer considered to be optional + features. Instead, the code that they used to control is always + built into the system. +* many other bug fixes + ** DEFSTRUCT and DEFCLASS have been substantially updated to take + advantage of the new EVAL-WHEN stuff and to clean them up in + general, and they are now more ANSI-compliant in a number of + ways. Martin Atzmueller is responsible for a lot of this. + ** Besides the cleanups discussed above, Martin Atzmueller fixed + several other bugs: + *** fixes in READ-SEQUENCE and WRITE-SEQUENCE + *** correct ERROR type for various file operations + *** some fixes for Lisp streams + *** DEFMETHOD syntax checking + *** changing old weird representation of debug information as + strings (which, among their other deficiencies, don't transform + correctly when you rename packages, and don't change their + print representation when you change things like *PACKAGE* + and *PRINT-LENGTH*) to symbols and lists of symbols + He also made several improvements and fixed several bugs in DESCRIBE. + ** Alexey Dejneka fixed many bugs, including classic bugs and bugs he + discovered himself: + *** misbehavior of WRITE-STRING/WRITE-LINE + *** LOOP over keys of a hash table, LOOP bugs 49b and 81 and 103, + and several other LOOP problems as well + *** DIRECTORY when similar filenames are present + *** DEFGENERIC with :METHOD options + *** bug 126, in (MAKE-STRING N :INITIAL-ELEMENT #\SPACE)) + *** bug in the optimization of ARRAY-ELEMENT-TYPE + *** argument ordering in FIND with :TEST option + *** mishandled package designator argument in APROPOS-LIST + *** various problems in the backquote readmacro + *** a bug in APROPOS + *** probably some others that I'm not describing very well here, + since the CVS log documents them by reference to sbcl-devel + messages, and the SourceForge archives aren't working well.:-( + ** Dan Barlow improved the Alpha port (and is making progress on the + PPC port, for those of you who think different). + ** Besides the DIRECTORY fixes and changes mentioned elsewhere, + Christophe Rhodes cleaned up the system self-test scripts (in tests/*), + contributed the optimization of FIND-IF-NOT and POSITION-IF-NOT, and + continues to work on the SPARC port (for those of you in a position + to look down upon our little PC-compatible boxes from a great height). + ** PPRINT-LOGICAL-BLOCK now copies the *PRINT-LINES* value on entry + and uses that copy, rather than the current dynamic value, when + it's trying to decide whether to truncate output. Thus e.g. + (let ((*print-lines* 50)) + (pprint-logical-block (stream nil) + (dotimes (i 10) + (let ((*print-lines* 8)) + (print (aref possiblybigthings i) stream))))) + should now truncate the logical block only at 50 lines, instead of + often truncating it at 8 lines, as it did before. +* The doc/cmucl/ directory, containing old CMU CL documentation + from the time of the fork, is no longer part of the base system. + SourceForge has shut down its anonymous FTP service, and with it + my original plan for distributing the old CMU CL documentation + there. For now, if you need these files you can download an old + SBCL source release and extract them from it. +* The fasl file version number changed again, for dozens of reasons, + some of which are apparent above. + +changes in sbcl-0.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 + . + * 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 "AB") returns + |AB|, 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.7 relative to sbcl-0.7.6: + * An alpha-quality port to the parisc architecture running Linux, + based on the old CMUCL backend has been made. This, even more so + than the other backends, should be considered still a work in + progress; known problems include that the Linux kernel in 64-bit + mode does not propagate the correct sigcontext structure to + userspace, and consequently SBCL on a parisc64 kernel will not + work yet. + * fixed bug 189: The compiler now respects NOTINLINE declarations for + functions declared in FLET and LABELS. (I.e. "LET conversion" is + suppressed.) Also now that the compiler is looking at declarations + in the environment, it checks optimization declarations as well, + and suppresses inlining when (> DEBUG SPEED). + * More fixes have been made to treatment of floating point exception + treatment and other Unix signals. In particular, floating point + exceptions no longer cause Bus errors on the SPARC/Linux platform. + * The detection and handling of control stack exhaustion (infinite + or very deeply nested recursion) has changed. Stack exhaustion + detection is now done by write-protecting pages at the OS level + and applies at all optimization settings; when found, a + SB-KERNEL:CONTROL-STACK-EXHAUSTED condition (subclass of + STORAGE-CONDITION) is signalled, so stack exhaustion can no longer + be caught using IGNORE-ERRORS. + * Bug 48a./b. fixed: SYMBOL-MACROLET now refuses to bind symbols + that are names of constants or global variables. + * Bug fix: DEFINE-ALIEN-ROUTINE now declaims the correct FTYPE for + alien routines with docstrings. + * Bug 184 fixed: Division of ratios by the integer 0 now signals an + error of type DIVISION-BY-ZERO. (thanks to Wolfhard Buss and + Raymond Toy) + * Bug fix: Errors in PARSE-INTEGER are now of type PARSE-ERROR. + (thanks to Eric Marsden) + * Bug fix: COERCE to (COMPLEX FLOAT) of rationals now returns an + object of type (COMPLEX FLOAT). (thanks to Wolfhard Buss) + * Bug fix: The SPARC backend can now compile functions involving + LOGAND and stack-allocated arguments. (thanks to Raymond Toy) + * Bug fix: We no longer segfault on passing a non-FILE-STREAM stream + to a functions expecting a PATHNAME-DESIGNATOR. + * Bug fix: DEFGENERIC now enforces the ANSI restrictions on its + lambda lists. (thanks to Alexey Dejneka) + * Bug fix: changed encoding of PCL's internal MAKE-INSTANCE + functions so that EXPORTing the name of the class doesn't cause + MAKE-INSTANCE functions from earlier DEFCLASSes to get lost (thanks + to Antonio Martinez for reporting this) + * Bug 192 fixed: The internal primitive DATA-VECTOR-REF can now be + constant-folded without failing an assertion. (thanks to Einar + Floystad Dorum for reporting this) + * Bugs 123 and 165 fixed: array specializations on as-yet-undefined + types are now dealt with more correctly by the compiler. + * Minor incompatible change: COMPILE-FILE-PATHNAME now merges its + OUTPUT-FILE argument with its INPUT-FILE argument, resulting in + behaviour analogous to RENAME-FILE. This puts its behaviour more + in line with ANSI's wording on COMPILE-FILE-PATHNAME. (thanks to + Marco Antinotti) + * 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 + (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.