X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=NEWS;h=9c0bb26655ac5d2358cdf56ee9948c67dd85ffd4;hb=416152f084604094445a758ff399871132dff2bd;hp=75347228f208a3413ade081994293a8e13975f8e;hpb=1513b29bfbe948e7b431b5f67f1ff10769c192cf;p=sbcl.git diff --git a/NEWS b/NEWS index 7534722..9c0bb26 100644 --- a/NEWS +++ b/NEWS @@ -815,6 +815,21 @@ changes in sbcl-0.6.13 relative to sbcl-0.6.12: 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. * 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 @@ -825,22 +840,10 @@ 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. -* The EVAL and EVAL-WHEN code has been largely rewritten, and the - old CMU CL "IR1 interpreter" has gone away. The new interpreter - is probably slower and harder to debug than the old one, but - it's much simpler (several thousand lines of source code simpler) - and considerably more ANSI-compliant. Bugs - ?? IR1-3 and - ?? IR1-3a - have been fixed. 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. * DEFSTRUCT and DEFCLASS have been substantially updated to take advantage of the new EVAL-WHEN stuff and to clean them up in - general, and are now more ANSI-compliant in a number of ways. Martin - Atzmueller is responsible for a lot of this. + 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 @@ -861,16 +864,50 @@ changes in sbcl-0.7.0 relative to sbcl-0.6.13: :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.) +?? 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. +* 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 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. The files which used to - be in the doc/cmucl/ directory are now available as - . -* lots of tidying up internally: renaming things so that names are - more systematic and consistent, converting C macros to inline + 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. +* 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 any number of - good reasons. +* The fasl file version number changed again, for about a dozen + reasons, some of which are obvious above. planned incompatible changes in 0.7.x: * The debugger prompt sequence now goes "5]", "5[2]", "5[3]", etc.