0.7.2.6:
[sbcl.git] / NEWS
diff --git a/NEWS b/NEWS
index 5aae939..c51dbde 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -813,7 +813,8 @@ changes in sbcl-0.6.13 relative to sbcl-0.6.12:
   fasl file version.
 
 changes in sbcl-0.7.0 relative to sbcl-0.6.13:
   fasl file version.
 
 changes in sbcl-0.7.0 relative to sbcl-0.6.13:
-* major incompatible change: The default fasl file extension has changed
+* major incompatible change: The default fasl file extension, i.e. the
+  default extension for files produced by COMPILE-FILE, has changed
   to ".fasl", for all architectures. (No longer ".x86f" and ".axpf".) 
 * compiler changes:
   ** There are many changes in the implementation of the compiler.
   to ".fasl", for all architectures. (No longer ".x86f" and ".axpf".) 
 * compiler changes:
   ** There are many changes in the implementation of the compiler.
@@ -826,8 +827,9 @@ changes in sbcl-0.7.0 relative to sbcl-0.6.13:
      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 
      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 new code is substantially simpler and clearer, and hopefully
+     any remaining bugs will be simpler, less fundamental, and more
+     fixable then the bugs in the old code.
   ** The revised compiler is still a little unsteady on its feet.
      In particular,
      *** The debugging information it produces (particularly the names
   ** The revised compiler is still a little unsteady on its feet.
      In particular,
      *** The debugging information it produces (particularly the names
@@ -843,34 +845,33 @@ changes in sbcl-0.7.0 relative to sbcl-0.6.13:
      *** the function-of-all-trades COERCE
      Mostly these should be transparent, but there's one
      potentially-annoying problem (bug 117): when the compiler
      *** the function-of-all-trades COERCE
      Mostly these should be transparent, but there's one
      potentially-annoying problem (bug 117): when the compiler
-     inline-expands a function and does type analysis on the
-     result, it can find control paths which have type
-     mismatches, and when it can't prove that they're not taken,
+     inline-expands a function and does type analysis on the result,
+     it can create control paths which have type mismatches, and
+     when it can't prove that those control paths aren't taken,
      it will issue WARNINGs about the type mismatches. This is 
      a particular problem in practice for the new sequence functions.
      it will issue WARNINGs about the type mismatches. This is 
      a particular problem in practice for the new sequence functions.
-     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's not clear how this should be fixed, and for now, a
+     workaround is given in the entry for 117 in the BUGS file.
   ** (Because of the interaction between the two previous items --
   ** (Because of the interaction between the two previous items --
-     occasional inlining problems and new inline expansions -- the
-     new sequence function optimizations won't really kick in
-     properly until debugging information is straightened out in
-     some future version.)
+     occasional inlining problems and new inline expansions -- some
+     of the new sequence function optimizations won't really kick in
+     completely until debugging information, and then inlining, are
+     straightened out in some future version.)
 * minor incompatible changes:
   ** As part of a bug fix by Christophe Rhodes to DIRECTORY behavior,
      DIRECTORY no longer implicitly promotes NIL slots of its
 * minor incompatible changes:
   ** As part of a bug fix by Christophe Rhodes to DIRECTORY behavior,
      DIRECTORY no longer implicitly promotes NIL slots of its
-     pathname argument to :WILD. In particular, asking for the
-     contents of a directory, which you used to be able
-     to do without explicit wildcards, e.g. (DIRECTORY "/tmp/"), 
-     now needs explicit wildcards, e.g. (DIRECTORY "/tmp/*.*").
+     pathname argument to :WILD. In particular, when you ask for the
+     contents of a directory (which you used to be able to do without
+     explicit wildcards, e.g. (DIRECTORY "/tmp/")) you now need to use
+     explicit wildcards, e.g. (DIRECTORY "/tmp/*.*").
   ** changes in behavior that ANSI explicitly defines to be
      implementation dependent:
      *** The new compiler-only implementation still conforms with ANSI,
   ** changes in behavior that ANSI explicitly defines to be
      implementation dependent:
      *** The new compiler-only implementation still conforms with ANSI,
-         but acts a little different. Besides the obvious changes in
-         performance tradeoffs (that the cost per form passed to EVAL
-         has gone up, and the cost per form executed by EVAL has gone
-         down), the behavior of the system changes a little because
-         there are no longer any interpreted function objects.
+         but acts a little different than before. Besides the obvious
+        changes in performance tradeoffs (that the cost per form passed
+        to EVAL has gone up, and the cost per form executed by EVAL
+        has gone down), the behavior of the system changes a little
+        because there are no longer any interpreted function objects.
          COMPILED-FUNCTION-P is now synonymous with FUNCTIONP, and
          e.g. doing COMPILE on the output of interactive DEFUN is
          now a no-op.
          COMPILED-FUNCTION-P is now synonymous with FUNCTIONP, and
          e.g. doing COMPILE on the output of interactive DEFUN is
          now a no-op.
@@ -889,13 +890,10 @@ changes in sbcl-0.7.0 relative to sbcl-0.6.13:
          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.)
          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.)
-  ** The debugger prompt sequence now goes "5]", "5[2]", "5[3]",
-     etc. as you get deeper into recursive calls to the debugger
-     command loop, instead of the old "5]", "5]]", "5]]]"
-     sequence. (I was motivated to do this when squabbles between
-     ILISP and SBCL left me very deeply nested in the debugger. In the
-     short term, this change will probably provoke more ILISP/SBCL 
-     squabbles, but hopefully it will be an improvement in the long run.)
+  ** The SB-C-CALL package has been merged into the SB-ALIEN package.
+     However, almost all old code should still continue to work without
+     immediate update, as SB-C-CALL is now a (deprecated) nickname
+     for SB-ALIEN.
   ** 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 (DEFSTRUCT, DEFVAR,
   ** 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 (DEFSTRUCT, DEFVAR,
@@ -903,10 +901,13 @@ changes in sbcl-0.7.0 relative to sbcl-0.6.13:
      internal symbols, but a few supported extensions like
      SB-ALIEN:DEF-ALIEN-FUNCTION are also affected. (So e.g.
      DEF-ALIEN-FUNCTION becomes DEFINE-ALIEN-FUNCTION.)
      internal symbols, but a few supported extensions like
      SB-ALIEN:DEF-ALIEN-FUNCTION are also affected. (So e.g.
      DEF-ALIEN-FUNCTION becomes DEFINE-ALIEN-FUNCTION.)
-  ** The SB-C-CALL package has been merged into the SB-ALIEN package.
-     However, almost all old code should still continue to work without
-     immediate update, as SB-C-CALL is now a (deprecated) nickname
-     for SB-ALIEN.
+  ** The debugger prompt sequence now goes "5]", "5[2]", "5[3]",
+     etc. as you get deeper into recursive calls to the debugger
+     command loop, instead of the old "5]", "5]]", "5]]]"
+     sequence. (I was motivated to do this when squabbles between
+     ILISP and SBCL left me very deeply nested in the debugger. In the
+     short term, this change will probably provoke more ILISP/SBCL 
+     squabbles, but hopefully it will be an improvement in the long run.)
   ** SB-ALIEN: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
   ** SB-ALIEN: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
@@ -916,6 +917,10 @@ changes in sbcl-0.7.0 relative to sbcl-0.6.13:
      longer reexported by the SB-EXT package. They're solely useful
      for alien code, so it seems more logical that you should get
      them from the SB-ALIEN package, not in SB-EXT.
      longer reexported by the SB-EXT package. They're solely useful
      for alien code, so it seems more logical that you should get
      them from the SB-ALIEN package, not in SB-EXT.
+  ** :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.
 * many other bug fixes
   ** DEFSTRUCT and DEFCLASS have been substantially updated to take
      advantage of the new EVAL-WHEN stuff and to clean them up in 
 * many other bug fixes
   ** DEFSTRUCT and DEFCLASS have been substantially updated to take
      advantage of the new EVAL-WHEN stuff and to clean them up in 
@@ -955,21 +960,17 @@ changes in sbcl-0.7.0 relative to sbcl-0.6.13:
      Christophe Rhodes cleaned up the system self-test scripts (in tests/*),
      contributed the optimization of FIND-IF-NOT and POSITION-IF-NOT, and
      continues to work on the SPARC port (for those of you in a position
      Christophe Rhodes cleaned up the system self-test scripts (in tests/*),
      contributed the optimization of FIND-IF-NOT and POSITION-IF-NOT, and
      continues to work on the SPARC port (for those of you in a position
-     to look down on our little "PC" machines). 
+     to look down upon our little PC-compatible boxes from a great height). 
   ** PPRINT-LOGICAL-BLOCK now copies the *PRINT-LINES* value on entry
      and uses that copy, rather than the current dynamic value, when
   ** 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.
+     it's trying to decide whether to truncate output. Thus e.g.
        (let ((*print-lines* 50))
          (pprint-logical-block (stream nil)
            (dotimes (i 10)
              (let ((*print-lines* 8))
                (print (aref possiblybigthings i) stream)))))
        (let ((*print-lines* 50))
          (pprint-logical-block (stream nil)
            (dotimes (i 10)
              (let ((*print-lines* 8))
                (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.
+     should now truncate the logical block only at 50 lines, instead of
+     often truncating it at 8 lines, as it did before.
 * 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
 * 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
@@ -979,6 +980,99 @@ changes in sbcl-0.7.0 relative to sbcl-0.6.13:
 * The fasl file version number changed again, for dozens of reasons,
   some of which are apparent above.
 
 * The fasl file version number changed again, for dozens of reasons,
   some of which are apparent above.
 
+changes in sbcl-0.7.1 relative to sbcl-0.7.0:
+* mostly bug fixes:
+  ** SB-ALIEN:LOAD-FOREIGN and SB-ALIEN:LOAD-1-FOREIGN are set
+     up properly again. (There was a packaging bug in 0.7.0 which
+     left their definitions in SB-SYS::LOAD-FOREIGN and 
+     SB-SYS::LOAD-1-FOREIGN. LOAD-FOREIGN and LOAD-1-FOREIGN are
+     vital for most things which interface to C-level interfaces,
+     like extensions working with sockets or databases or
+     Perl-compatible regexes or whatever, and the need to fix
+     this bug is the main reason that 0.7.1 was released so
+     soon after 0.7.0.)
+  ** DEFGENERIC is now choosier about the methods it redefines, so that
+     reLOADing a previously-LOADed file containing DEFGENERICs does
+     the right thing now. Thus, the Lispy edit/reLOAD-a-little/test
+     cycle now works as it should. (thanks to Alexey Dejneka)
+  ** Bug 106 (types (COMPLEX FOO) where FOO is an obscure type) was
+     fixed by Christophe Rhodes. (He actually submitted this patch
+     months ago, and I delayed until after 0.7.0.)
+  ** Bug 111 (internal compiler confusion about runtime checks on
+     FUNCTION types) was fixed by Alexey Dejneka.
+* Some internal cleanups (getting rid of variables which aren't
+  needed now that the byte interpreter is gone) caused the fasl
+  file format number to change again.
+
+changes in sbcl-0.7.2 relative to sbcl-0.7.1:
+  * incompatible change: The compiler is now less aggressive about
+    tail call optimization, doing it only when (> SPACE DEBUG) or
+    (> SPEED DEBUG). (This is an incompatible change because there are
+    programs which relied on the old CMU-CL-style behavior to optimize
+    away their unbounded recursion which will now die of stack overflow.)
+  * minor incompatible change: The default BYTES-CONSED-BETWEEN-GCS
+    for non-GENCGC systems has been increased to 20M (since that
+    seems much closer to the likely performance optimum for modern
+    systems than the old 4M value was)
+  * minor incompatible change: new larger values for *DEBUG-PRINT-LENGTH*
+    and *DEBUG-PRINT-LEVEL*
+  * SBCL runs on SPARC systems now. (thanks to Christophe Rhodes' port
+    of CMU CL's support for SPARC, and various endianness and other 
+    SBCL portability fixes due to Christophe Rhodes and Dan Barlow)
+  * new syntactic sugar for the Unix command line: --load foo.bar is now
+    an alternate notation for --eval '(load "foo.bar")'.
+  * bug fixes:
+    ** The system now detects stack overflow and handles it gracefully,
+       at least for (OR (> SAFETY (MAX SPEED SPACE)) (= SAFETY 3))
+       optimization settings. (This is a good thing in general, and
+       its introduction in this version should be particularly timely
+       for anyone whose code fails because of suppression of tail
+       recursion!)
+    ** The system now hunts for the C variable "environ" in a more
+       devious way, to avoid segfaults when the C library version differs
+       between compile time and run time. (thanks to Christophe Rhodes)
+    ** INTEGER-valued CATCH tags now work. (thanks to Alexey Dejneka,
+       and also to Christophe Rhodes for porting the fix to non-X86 CPUs)
+    ** The compiler no longer issues bogus style warnings for undefined
+       classes in the same source file as the DEFCLASSes which defined
+       them. (thanks to Stig E Sandoe for reporting and Martin Atzmueller
+       for fixing this)
+    ** fixes in CONDITION class precedence list for undefined function
+       errors (thanks to Alexei Dejneka)
+    ** *DEFAULT-PATHNAME-DEFAULTS* is used more consistently and 
+       correctly. (thanks to Dan Barlow)
+    ** portability fixes aiming at bootstrapping under CLISP (thanks
+       to Dave McDonald and Christophe Rhodes)
+    ** FORMAT fixes (thanks to Robert Strandh and Dan Barlow)
+    ** fixes in type translation and and type inference (thanks to
+       Christophe Rhodes)
+    ** fixes to optimizer internal errors (thanks to Alexei Dejneka)
+    ** various fixes in the new ports (thanks to Dan Barlow)
+  * several changes related to debugging:
+    ** suppression of tail recursion, as noted above
+    ** stack overflow detection, as noted above
+    ** The default implementation of TRACE has changed. :ENCAPSULATE T
+       is now the default. (For some time encapsulation has been more
+       reliable than the breakpoint-based :ENCAPSULATE NIL
+       implementation, at least on X86 systems; and I just noticed that
+       encapsulation also seems closer to the spirit of the ANSI
+       specification.)
+
+changes in sbcl-0.7.3 relative to sbcl-0.7.2:
+  * SBCL now runs on the PPC archtiecture under Linux. It actually did
+    this as of 0.7.1.45, but was left out of the previous news section
+    (thanks to Dan Barlow)
+  * SBCL now runs on the Solaris operating system on SPARC architectures
+    (thanks to Christophe Rhodes's port of the CMUCL runtime)
+  * cleanups to the runtime on SPARC, both Linux and Solaris, and for
+    gcc>=3 (thanks to Nathan Froyd and Ingvar Mattsson)
+  * ANSI's DEFINE-SYMBOL-MACRO is now supported. (thanks to Nathan
+    Froyd porting CMU CL code originally by Douglas Thomas Crosher)
+  * The fasl file format has changed again, to allow the compiler's
+    INFO database to support symbol macros.
+  * The user manual (in doc/) is formatted into HTML more nicely.
+    (thanks to coreythomas)
+
 planned incompatible changes in 0.7.x:
 * When the profiling interface settles down, maybe in 0.7.x, maybe
   later, it might impact TRACE. They both encapsulate functions, and
 planned incompatible changes in 0.7.x:
 * When the profiling interface settles down, maybe in 0.7.x, maybe
   later, it might impact TRACE. They both encapsulate functions, and
@@ -986,7 +1080,7 @@ planned incompatible changes in 0.7.x:
   and UNTRACE. (This shouldn't matter, though, unless you are
   using profiling. If you never profile anything, TRACE should
   continue to behave as before.)
   and UNTRACE. (This shouldn't matter, though, unless you are
   using profiling. If you never profile anything, TRACE should
   continue to behave as before.)
-?? Inlining can now be controlled the ANSI way, without
+* Inlining can now be controlled the ANSI way, without
   MAYBE-INLINE, since the idiom
        (DECLAIM (INLINE FOO))
        (DEFUN FOO (..) ..)
   MAYBE-INLINE, since the idiom
        (DECLAIM (INLINE FOO))
        (DEFUN FOO (..) ..)