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:
-* 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.
@@ -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 
-     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
@@ -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
-     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'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 --
-     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
-     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,
-         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.
@@ -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.)
-  ** 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,
@@ -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.)
-  ** 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
@@ -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.
+  ** :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 
@@ -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
-     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
-     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)))))
-     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
@@ -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.
 
+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
@@ -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.)
-?? 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 (..) ..)