X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=NEWS;h=962c9d204e67df76439aab1c4ddb81a73dad4a1f;hb=d1c237164f9bd00879843cba7a79c05449cf50f7;hp=9c0bb26655ac5d2358cdf56ee9948c67dd85ffd4;hpb=416152f084604094445a758ff399871132dff2bd;p=sbcl.git diff --git a/NEWS b/NEWS index 9c0bb26..962c9d2 100644 --- a/NEWS +++ b/NEWS @@ -830,6 +830,26 @@ changes in sbcl-0.7.0 relative to sbcl-0.6.13: 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 @@ -840,16 +860,17 @@ changes in sbcl-0.7.0 relative to sbcl-0.6.13: 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. -* 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.) * 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. @@ -860,19 +881,36 @@ changes in sbcl-0.7.0 relative to sbcl-0.6.13: (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. -* The support for (DECLAIM (INLINE FOO)) followed by (DEFUN FOO ..) in - a non-null lexical environment has been weakened. (It will still - compile, but the compiler will be much less determined to inline FOO - than it used to be.) +* Martin Atzmueller fixed several other bugs: + ** correct ERROR type for various file operations + ** removing dead code +* Alexey Dejneka fixed many bugs: + ** 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 + 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. ?? 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). This mostly affects internal symbols, but a few external symbols like SB-ALIEN:DEF-ALIEN-FUNCTION are also affected. +* :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. +?? 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.) * 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 @@ -883,31 +921,18 @@ changes in sbcl-0.7.0 relative to sbcl-0.6.13: * 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, - is no longer part of the base system. SourceForge has shut down - its anonymous FTP service, and with it my original plan for - distributing them separately. For now, if you need them you can - download an old sbcl source release and get them from there. -?? 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 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 about a dozen - reasons, some of which are obvious above. + 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.