0.pre7.62:
[sbcl.git] / NEWS
diff --git a/NEWS b/NEWS
index 9c0bb26..962c9d2 100644 (file)
--- 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. 
   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 
 * 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.
   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.
 * 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.
 * 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.
              (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.
 ?? 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
 * 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 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
 * 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.
 
 planned incompatible changes in 0.7.x:
 * The debugger prompt sequence now goes "5]", "5[2]", "5[3]", etc.