X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=NEWS;h=8c3bbd5acd2f97fc33d3bee69d5090c1a1eb42b7;hb=4eb1a6d3ad2b7dcc19ac0ec979a1eb1eb049659a;hp=92c8ae4a4e884416c50509d11170ef6f236a40ee;hpb=475c832b081651e66ad9446d4852c62086f5e740;p=sbcl.git diff --git a/NEWS b/NEWS index 92c8ae4..8c3bbd5 100644 --- a/NEWS +++ b/NEWS @@ -649,15 +649,25 @@ changes in sbcl-0.6.11 relative to sbcl-0.6.10: * 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). -* The Gray subclassable streams extension now works, thanks to a - patch from Martin Atzmueller. * 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 @@ -670,17 +680,288 @@ changes in sbcl-0.6.11 relative to sbcl-0.6.10: for porting convenience. * LOAD-FOREIGN (and LOAD-1-FOREIGN) now support logical pathnames, as per Daniel Barlow's suggestion and Martin Atzmueller's patch -* Fasl file format version numbers have increased again, because - support for the Gray streams extension changes the layout of the - system's STREAM objects. + +changes in sbcl-0.6.12 relative to sbcl-0.6.11: +* incompatible change: The old SB-EXT:OPTIMIZE-INTERFACE declaration + is no longer recognized. I apologize for this, because it was + listed in SB-EXT as a supported extension, but I found that + its existing behavior was poorly specified, as well as incorrectly + specified, and it looked like too much of a mess to straighten it + out. I have enough on my hands trying to get ANSI stuff to work.. +* many patches ported from CMU CL by Martin Atzmueller, with + half a dozen bug fixes in pretty-printing and the debugger, and + half a dozen others elsewhere +* fixed bug 13: Floating point infinities are now supported again. + They might still be a little bit flaky, but thanks to bug reports + from Nathan Froyd and CMU CL patches from Raymond Toy they're not + as flaky as they were. +* The --noprogrammer command line option is now supported. (Its + behavior is slightly different in detail from what the old man + page claimed it would do, but it's still appropriate under the + same circumstances that the man page talks about.) +* The :SB-PROPAGATE-FLOAT-TYPE and :SB-PROPAGATE-FUN-TYPE features + are now supported, and enabled by default. Thus, the compiler can + handle many floating point and complex operations much less + inefficiently. (Thus e.g. you can implement a complex FFT + without consing!) +* The compiler now detects type mismatches between DECLAIM FTYPE + and DEFUN better, and implements CHECK-TYPE more correctly, and + SBCL builds under CMU CL again despite its non-ANSI EVAL-WHEN, + thanks to patches from Martin Atzmueller. +* various fixes to make the cross-compiler more portable to + ANSI-conforming-but-different cross-compilation hosts (notably + Lispworks for Windows, following bug reports from Arthur Lemmens) +* A bug in READ-SEQUENCE for CONCATENATED-STREAM, and a gross + ANSI noncompliance in DEFMACRO &KEY argument parsing, have been + fixed thanks to Pierre Mai's CMU CL patches. +* fixes to keep the system from overflowing internal counters when + it tries to use i/o buffers larger than 16M bytes +* fixed bug 45a: Various internal functions required to support + complex special functions have been merged from CMU CL sources. + (When I was first setting up SBCL, I misunderstood a compile-time + conditional #-OLD-SPECFUN, and so accidentally deleted them.) +* improved support for type intersection and union, fixing bug 12 + (e.g., now (SUBTYPEP 'KEYWORD 'SYMBOL)=>T,T) and some other + more obscure bugs as well +* some steps toward byte-compiling non-performance-critical + parts of the system, courtesy of patches from Martin Atzmueller +* Christophe Rhodes has made some debian packages of sbcl at + . + 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: +* incompatible change: The default fasl file extension has changed + to ".fasl", for all architectures. (No longer ".x86f" and ".axpf".) +* 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 + hopefully any remaining bugs will be simpler, less fundamental, + and more fixable then the bugs in the old IR1 interpreter code. +* The IR1 interpreter, byte compiler, and byte interpreter are gone. + It's long been my plan to remove the IR1 interpreter while making + EVAL-WHEN ANSI-compliant. It turned out that a cascade of changes + caused by EVAL-WHEN ANSIness would have required fairly simple + changes to the byte compiler; except they turned out to be quite + difficult. This, plus the new familiarity with the byte compiler + in general that I picked up as I worked on this specific problem, + reduced my opinion of its maintainability enough that I deleted it + instead of trying to fix it. +* The compiler, especially the IR1 phase of the compiler, has been + tweaked somewhat to support the new implementation of DEFUN and + of the static linking hack used for cold init. In particular, + the property of "is externally visible" is now orthogonal to + the property of "is optimized/specialized for being called + at LOAD time, with no arguments and no argument checking". + The old FUNCTIONAL-KIND=:TOP-LEVEL type code which + conflated these two properties has been replaced with the + FUNCTIONAL-HAS-EXTERNAL-REFERENCES-P flag. This has minor + beneficial consequences for the logic of #'CL:COMPILE and other + things. Like the rewrite of EVAL, it has also quite possibly + introduced some new bugs, but since the new logic is simpler and + more orthogonal, hopefully it will be easier to clean up bugs + in the new code than it was in the old code. +* The rewritten compiler is still a little unsteady on its feet. + In particular, the debugging information it produces is sometimes + broken, and the support for inlining FOO when you + (DECLAIM (INLINE FOO)) then do (DEFUN FOO ..) in a non-null + lexical environment has been temporarily weakened (because the + old clever code depended on correct debugging information). +* There are new compiler optimizations for various functions: FIND, + POSITION, FIND-IF, POSITION-IF, FILL, COERCE, TRUNCATE, FLOOR, and + CEILING. Mostly these should be transparent, but there's one + potentially-annoying problem (bug 117): when the compiler inline + expands the FIND/POSITION family of functions 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, + it will issue WARNINGs about the type mismatches. 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. +* (Because of the interaction between the two previous items -- + occasional inlining problems and new inline expansions -- the + new FIND, POSITION, FIND-IF, and POSITION-IF code won't really + kick in properly until debugging information is straightened out + in some future version.) +* 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. +* A bug in LOOP operations on hash tables has been fixed, thanks + to a bug report and patch from Alexey Dejneka. +* 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 truncate the logical block only at 50 lines, instead of + often truncating it at 8 lines. +* Martin Atzmueller fixed several other bugs: + ** correct ERROR type for various file operations + ** removing dead code +* Alexey Dejneka fixed many bugs, both 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 + He also pointed out some bogus old entries in BUGS, and fixed + a number of bugs which came into existence in the pre7 branch + (internal to the CVS repository), so that they never showed + up in release versions. +* :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. +?? minor incompatible change: 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.) +?? minor incompatible change: The default output representation for + unprintable ASCII characters which, unlike e.g. #\Newline, don't + have names defined in the ANSI Common Lisp standard, is now based + on their ASCII symbolic names: #\Nul, #\Soh, #\Stx, etc. +?? 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 external symbols like + SB-ALIEN:DEF-ALIEN-FUNCTION are also affected. +* minor incompatible change: 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 (and + since people writing calls-to-C code aren't likely to be bothered + by implicit assumptions of static typing). +* The value of INTERNAL-TIME-UNITS-PER-SECOND has been increased + from 100 to 1000. +* The default value of *BYTES-CONSED-BETWEEN-GCS* has been + 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 interpreter, EVAL, has been rewritten. Now it calls the + native compiler for the difficult cases, where it used to call + the old specialized IR1 interpreter code. +* 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. +* lots of other tidying up internally: renaming things so that names + are more systematic and consistent, converting C macros to inline + functions, systematizing indentation, making symbol packaging + more logical, and so forth +* The fasl file version number changed again, for dozens of reasons, + some of which are apparent above. planned incompatible changes in 0.7.x: -* 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 ILISP and SBCL got into arguments which left me - deeply nested in the debugger.) -* When the profiling interface settles down, it might impact TRACE. - They both encapsulate functions, and it's not clear yet how - e.g. UNPROFILE will interact with TRACE and UNTRACE. (This shouldn't - matter, though, unless you are using profiling.) +* 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.