0.pre7.35:
[sbcl.git] / NEWS
diff --git a/NEWS b/NEWS
index b7bf019..7534722 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -631,18 +631,269 @@ changes in sbcl-0.6.10 relative to sbcl-0.6.9:
 * Bug #17 (differing COMPILE-FILE behavior between logical and 
   physical pathnames) has been fixed, and some related misbehavior too,
   thanks to a patch from Martin Atzmueller.
-?? Martin Atzmueller fixed several filesystem-related problems,
+* Bug #30 (reader problems) is gone, thanks to a CMU CL patch
+  by Tim Moore, ported to SBCL by Martin Atzmueller.
+* Martin Atzmueller fixed several filesystem-related problems,
   including bug #36, in part by porting CMU CL patches, which were
   written in part by Paul Werkowski.
-?? #'(SETF DOCUMENTATION) is now defined.
 * More compiler warnings in src/runtime/ are gone, thanks to 
-  patches from Martin Atzmueller.
+  more patches from Martin Atzmueller.
 * Martin Atzmueller pointed out that bug 37 was fixed by his patches
   some time ago.
 
+changes in sbcl-0.6.11 relative to sbcl-0.6.10:
+* Martin Atzmueller pointed out that bugs #9 and #25 are gone in
+  current SBCL.
+* bug 34 fixed by Martin Atzmueller: dumping/loading instances works
+  better
+* fixed bug 40: TYPEP, SUBTYPEP, UPGRADED-ARRAY-ELEMENT-TYPE, 
+  and UPGRADED-COMPLEX-PART-TYPE now work better with of compound
+  types built from undefined types, e.g. '(VECTOR SOME-UNDEF-TYPE).
+* DESCRIBE now works on structure objects again.
+* Most function call argument type mismatches are now handled as
+  STYLE-WARNINGs instead of full WARNINGs, since the compiler doesn't
+  know whether the function will be redefined before the call is
+  executed. (The compiler could flag local calls with full WARNINGs,
+  as per the ANSI spec "3.2.2.3 Semantic Constraints", but right now
+  it doesn't keep track of enough information to know whether calls
+  are local in this sense.)
+* Compiler output is now more verbose, with messages truncated
+  later than before. (There should be some supported way for users
+  to override the default verbosity, but I haven't decided how to 
+  provide it yet, so this behavior is still controlled by the internal
+  SB-C::*COMPILER-ERROR-PRINT-FOO* variables in
+  src/compiler/ir1util.lisp.)
+* Fasl file format version numbers have increased again, because
+  support for the Gray streams extension changes the layout of the
+  system's STREAM objects.
+* The Gray subclassable streams extension now works, thanks to a 
+  patch from Martin Atzmueller.
+* The full LOAD-FOREIGN extension (not just the primitive
+  LOAD-FOREIGN-1) now works, thanks to a patch from Martin Atzmueller.
+* The default behavior of RUN-PROGRAM has changed. Now, unlike CMU CL
+  but like most other programs, it defaults to copying the Unix
+  environment from the original process instead of starting the
+  new process in an empty environment.
+* Extensions which manipulate the Unix environment now support
+  an :ENVIRONMENT keyword option which doesn't smash case or 
+  do other bad things. The CMU-CL-style :ENV option is retained
+  for porting convenience.
+* LOAD-FOREIGN (and LOAD-1-FOREIGN) now support logical pathnames,
+  as per Daniel Barlow's suggestion and Martin Atzmueller's patch
+
+changes in sbcl-0.6.12 relative to sbcl-0.6.11:
+* incompatible change: The old SB-EXT:OPTIMIZE-INTERFACE declaration
+  is no longer recognized. I apologize for this, because it was
+  listed in SB-EXT as a supported extension, but I found that
+  its existing behavior was poorly specified, as well as incorrectly
+  specified, and it looked like too much of a mess to straighten it
+  out. I have enough on my hands trying to get ANSI stuff to work..
+* many patches ported from CMU CL by Martin Atzmueller, with 
+  half a dozen bug fixes in pretty-printing and the debugger, and
+  half a dozen others elsewhere
+* fixed bug 13: Floating point infinities are now supported again.
+  They might still be a little bit flaky, but thanks to bug reports
+  from Nathan Froyd and CMU CL patches from Raymond Toy they're not
+  as flaky as they were.
+* The --noprogrammer command line option is now supported. (Its
+  behavior is slightly different in detail from what the old man
+  page claimed it would do, but it's still appropriate under the
+  same circumstances that the man page talks about.)
+* The :SB-PROPAGATE-FLOAT-TYPE and :SB-PROPAGATE-FUN-TYPE features
+  are now supported, and enabled by default. Thus, the compiler can
+  handle many floating point and complex operations much less
+  inefficiently. (Thus e.g. you can implement a complex FFT
+  without consing!)
+* The compiler now detects type mismatches between DECLAIM FTYPE 
+  and DEFUN better, and implements CHECK-TYPE more correctly, and
+  SBCL builds under CMU CL again despite its non-ANSI EVAL-WHEN,
+  thanks to patches from Martin Atzmueller.
+* various fixes to make the cross-compiler more portable to
+  ANSI-conforming-but-different cross-compilation hosts (notably
+  Lispworks for Windows, following bug reports from Arthur Lemmens)
+* A bug in READ-SEQUENCE for CONCATENATED-STREAM, and a gross
+  ANSI noncompliance in DEFMACRO &KEY argument parsing, have been
+  fixed thanks to Pierre Mai's CMU CL patches.
+* fixes to keep the system from overflowing internal counters when
+  it tries to use i/o buffers larger than 16M bytes
+* fixed bug 45a: Various internal functions required to support
+  complex special functions have been merged from CMU CL sources.
+  (When I was first setting up SBCL, I misunderstood a compile-time
+  conditional #-OLD-SPECFUN, and so accidentally deleted them.)
+* improved support for type intersection and union, fixing bug 12
+  (e.g., now (SUBTYPEP 'KEYWORD 'SYMBOL)=>T,T) and some other
+  more obscure bugs as well
+* some steps toward byte-compiling non-performance-critical
+  parts of the system, courtesy of patches from Martin Atzmueller
+* Christophe Rhodes has made some debian packages of sbcl at
+  <http://www-jcsu.jesus.cam.ac.uk/ftp/pub/debian/lisp>.
+  From his sbcl-devel e-mail of 2001-04-08 they're not completely
+  stable, but are nonetheless usable. When he's ready, I'd be happy
+  to add them to the SourceForge "File Releases" section. (And if
+  anyone wants to do RPMs or *BSD packages, they'd be welcome too.)
+* new fasl file format version number (because of changes in 
+  internal representation of (OR ..) types to accommodate the new
+  support for (AND ..) types, among other things)
+
+changes in sbcl-0.6.13 relative to sbcl-0.6.12:
+* a port to the Compaq/DEC Alpha CPU, thanks to Dan Barlow
+* Martin Atzmueller ported Tim Moore's marvellous CMU CL DISASSEMBLE
+  patch, so that DISASSEMBLE output is much nicer.
+* The code in the SB-PROFILE package now seems reasonably stable.
+  I still haven't decided what the final interface should look like
+  (I'd like PROFILE to interact cleanly with TRACE, since both
+  facilities use function encapsulation) but if you have a need
+  for profiling now, you can probably use it successfully with
+  the current CMU-CL-style interface.
+* Pathnames and *DEFAULT-DIRECTORY-DEFAULTS* are much more
+  ANSI-compliant, thanks to various fixes and tests from Dan Barlow.
+  Also, at Dan Barlow's suggestion, TRUENAME on a dangling symbolic
+  link now returns the dangling link itself, and for similar
+  reasons, TRUENAME on a cyclic symbolic link returns the cyclic
+  link itself. (In these cases the old code signalled an error and
+  looped endlessly, respectively.) Thus, DIRECTORY now works even
+  in the presence of dangling and cyclic symbolic links.
+* Compiler trace output (the :TRACE-FILE option to COMPILE-FILE)
+  is now a supported extension again, since the consensus on
+  sbcl-devel was that it can be useful for ordinary development
+  work, not just for debugging SBCL itself.
+* The default for SB-EXT:*DERIVE-FUNCTION-TYPES* has changed to
+  NIL, i.e. ANSI behavior, i.e. the compiler now recognizes
+  that currently-defined functions might be redefined later with 
+  different return types. 
+* Hash tables can be printed readably, as inspired by CMU CL code
+  of Eric Marsden and SBCL code of Martin Atzmueller.
+* better error handling in CLOS method combination, thanks to 
+  Martin Atzmueller porting Pierre Mai's CMU CL patches
+* more overflow fixes for >16Mbyte I/O buffers
+* A bug in READ has been fixed, so that now a single Ctrl-D
+  character suffices to cause end-of-file on character streams.
+  In particular, now you only need one Ctrl-D at the command
+  line (not two) to exit SBCL.
+* fixed bug 26: ARRAY-DISPLACEMENT now returns (VALUES NIL 0) for 
+  undisplaced arrays.
+* fixed bug 107 (reported as a CMU CL bug by Erik Naggum on 
+  comp.lang.lisp 2001-06-11): (WRITE #*101 :RADIX T :BASE 36) now
+  does the right thing.
+* The implementation of some type tests, especially for CONDITION
+  types, is now tidier and maybe faster, due to CMU CL code
+  originally by Douglas Crosher, ported by Martin Atzmueller.
+* Some math functions have been fixed, and there are new
+  optimizers for deriving the types of COERCE and ARRAY-ELEMENT-TYPE,
+  thanks to Raymond Toy's work on CMU CL, ported by Martin Atzmueller.
+* (There are also some new optimizers in contrib/*-extras.lisp. Those
+  aren't built into sbcl-0.6.13, but are a sneak preview of what's
+  likely to be built into sbcl-0.7.0.)
+* A bug in COPY-READTABLE was fixed. (Joao Cachopo's patch to CMU
+  CL, ported to SBCL by Martin Atzmueller)
+* DESCRIBE now gives more information in some cases. (Pierre Mai's
+  patch to CMU CL, ported to SBCL by Martin Atzmueller)
+* Martin Atzmueller and Bill Newman fixed some bugs in INSPECT.
+* There's a new slam.sh hack to shorten the edit/compile/debug
+  cycle for low-level changes to SBCL itself, and a new
+  :SB-AFTER-XC-CORE target feature to control the generation of
+  the after-xc.core file needed by slam.sh.
+* minor incompatible change: The ENTRY-POINTS &KEY argument to 
+  COMPILE-FILE is no longer supported, so that now every function
+  gets an entry point, so that block compilation looks a little
+  more like the plain vanilla ANSI section 3.2.2.3 scheme.
+* minor incompatible change: SB-EXT:GET-BYTES-CONSED now
+  returns the number of bytes consed since the system started,
+  rather than the number consed since the first time the function
+  was called. (The new definition parallels ANSI functions like
+  CL:GET-INTERNAL-RUN-TIME.)
+* minor incompatible change: The old CMU-CL-style DIRECTORY options,
+  i.e. :ALL, :FOLLOW-LINKS, and :CHECK-FOR-SUBDIRS, are no longer
+  supported. Now DIRECTORY always does the abstract Common-Lisp-y
+  thing, i.e. :ALL T :FOLLOW-LINKS T :CHECK-FOR-SUBDIRS T.
+* Fasl file version numbers are now independent of the target CPU,
+  since historically most system changes which required version
+  number changes have affected all CPUs equally. Similarly, 
+  the byte fasl file version is now equal to the ordinary
+  fasl file version.
+
+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".) 
+* 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 
+  potentially-annoying problem (bug 117): when the compiler inline
+  expands the FIND/POSITION family of functions 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,
+  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.
+* 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.
+     (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.
+* 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
+  functions, systematizing indentation, making symbol packaging
+  more logical, and so forth
+* The fasl file version number changed again, for any number of
+  good reasons.
+
 planned incompatible changes in 0.7.x:
 * 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 ILISP and SBCL got into arguments which left me
-  deeply nested in the debugger.)
+  to do this when squabbles between ILISP and SBCL left me
+  very deeply nested in the debugger.)
+* The default output representation for unprintable ASCII characters 
+  which, unlike e.g. #\Newline, don't have names defined in the 
+  ANSI Common Lisp standard, may change to their ASCII symbolic
+  names: #\Nul, #\Soh, #\Stx, etc.
+* INTERNAL-TIME-UNITS-PER-SECOND might increase, e.g. to 1000.
+* FASL file extensions change to ".fasl", instead of the various
+  CPU-dependent values (".x86f", ".axpf", etc.) inherited from CMU CL.
+* MAYBE-INLINE will probably go away at some point, maybe 0.7.x,
+  maybe later, in favor of the ANSI-recommended idiom for making
+  a function optionally inline.
+* When the profiling interface settles down, maybe in 0.7.x, maybe
+  later, it might impact TRACE. They both encapsulate functions, and
+  it's not clear yet how e.g. UNPROFILE will interact with TRACE
+  and UNTRACE. (This shouldn't matter, though, unless you are
+  using profiling. If you never profile anything, TRACE should
+  continue to behave as before.)
+* The BYTE-COMPILE &KEY argument for COMPILE-FILE is deprecated,
+  since this behavior can be controlled by (DECLAIM (OPTIMIZE (SPEED 0))).
+  ("An ounce of orthogonality is worth a pound of features.")