0.pre7.38:
[sbcl.git] / NEWS
diff --git a/NEWS b/NEWS
index 7534722..9c0bb26 100644 (file)
--- 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
-    <ftp://sbcl.sourceforge.net/pub/sbcl/cmucl-docs.tar.bz2>.
-* 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.