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".) 
 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 
 * 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.
   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 
 * 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 
 * 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.
   :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,
 * 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
   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.
 
 planned incompatible changes in 0.7.x:
 * The debugger prompt sequence now goes "5]", "5[2]", "5[3]", etc.