X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=NEWS;h=c51dbde0857be64670250a12d14aad424911c933;hb=686043635c45a16b418d2cc96a7f704fdab182c2;hp=5aae9395a392d157126f2b183803b3eb49a49691;hpb=d2c3be7fa4cd6e09db6377ba45afab1af621dbfe;p=sbcl.git diff --git a/NEWS b/NEWS index 5aae939..c51dbde 100644 --- a/NEWS +++ b/NEWS @@ -813,7 +813,8 @@ changes in sbcl-0.6.13 relative to sbcl-0.6.12: fasl file version. changes in sbcl-0.7.0 relative to sbcl-0.6.13: -* major incompatible change: The default fasl file extension has changed +* 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. @@ -826,8 +827,9 @@ changes in sbcl-0.7.0 relative to sbcl-0.6.13: 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 - hopefully any remaining bugs will be simpler, less fundamental, - and more fixable then the bugs in the old IR1 interpreter code. + 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 @@ -843,34 +845,33 @@ changes in sbcl-0.7.0 relative to sbcl-0.6.13: *** 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 find control paths which have type - mismatches, and when it can't prove that they're not taken, + 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 to make the compiler smart enough to fix - this in general, but a workaround is given in the entry for - 117 in the BUGS file. + 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 -- the - new sequence function optimizations won't really kick in - properly until debugging information is straightened out in - some future version.) + 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, asking for the - contents of a directory, which you used to be able - to do without explicit wildcards, e.g. (DIRECTORY "/tmp/"), - now needs explicit wildcards, e.g. (DIRECTORY "/tmp/*.*"). + 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. 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. + 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. @@ -889,13 +890,10 @@ changes in sbcl-0.7.0 relative to sbcl-0.6.13: 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 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.) + ** 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, @@ -903,10 +901,13 @@ changes in sbcl-0.7.0 relative to sbcl-0.6.13: 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 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. + ** 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 @@ -916,6 +917,10 @@ changes in sbcl-0.7.0 relative to sbcl-0.6.13: 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 @@ -955,21 +960,17 @@ changes in sbcl-0.7.0 relative to sbcl-0.6.13: 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 on our little "PC" machines). + 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. + 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 truncate the logical block only at 50 lines, instead of - often truncating it at 8 lines. -* :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. + 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 @@ -979,6 +980,99 @@ changes in sbcl-0.7.0 relative to sbcl-0.6.13: * 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: + * 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) + * ANSI's DEFINE-SYMBOL-MACRO is now supported. (thanks to Nathan + Froyd porting CMU CL code originally by Douglas Thomas Crosher) + * 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) + 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 @@ -986,7 +1080,7 @@ planned incompatible changes in 0.7.x: 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 +* Inlining can now be controlled the ANSI way, without MAYBE-INLINE, since the idiom (DECLAIM (INLINE FOO)) (DEFUN FOO (..) ..)