========================== C M U C L  20 e =============================

The CMUCL project is pleased to announce the release of CMUCL 20e.
This is a major release which contains numerous enhancements and
bug fixes from the 20c release.

CMUCL is a free, high performance implementation of the Common Lisp
programming language which runs on most major Unix platforms. It
mainly conforms to the ANSI Common Lisp standard. CMUCL provides a
sophisticated native code compiler; a powerful foreign function
interface; an implementation of CLOS, the Common Lisp Object System,
which includes multi-methods and a meta-object protocol; a source-level
debugger and code profiler; and an Emacs-like editor implemented in
Common Lisp. CMUCL is maintained by a team of volunteers collaborating
over the Internet, and is mostly in the public domain.

New in this release:

  * Known issues:
    * For the current issues, see Trac tickets.

  * Feature enhancements
    * The disassembler prints correctly for any value of *print-base*.
 
  * Changes
    * ASDF2 updated to version 3.0.2.
    * DEFINE-COMPILER-MACRO now has source-location information for
      the macro definition.
    * :ALIEN-CALLBACK added to *FEATURES* for platforms that support
      alien callbacks.
    * The sparc port can be built using gcc once again.
    * The old Cheney stop-and-copy GC supported on sparc once again.
      However, there are no plans on supplying sparc binaries with
      this GC.
    * For x86, optimize TRUNCATE when the second arg is a compile-time
      constant and use a multiplication instead of a division.  (Sparc
      and ppc already had this optimization)
    * The following *FEATURES* have been removed:
      * :COMMON (not used)
      * :CONSERVATIVE-FLOAT-TYPE (Always default to this in type
        derivation.)
      * :I486 and :PENTIUM (Always assume we're running on at least a
        Pentium.)
    * Update unicode to support Unicode 6.2.
    * Add MP:PROCESS-JOIN, as given in ticket #77.
    * Added UNICODE package to hold Unicode-related functions.
      Currently contains Unicode extended versions of STRING-UPCASE,
      STRING-DOWNCASE, and STRING-CAPITALIZE.
    * Optimizations in the x86 backend to speed up some operations and
      reduce register restrictions.

  * ANSI compliance fixes:
    * Attempts to modify the standard readtable or the standard pprint
      dispatch table will now signal a continuable error.
    * Remove the Unicode extensions from string-upcase and friends.
      This functionality is moved to the new UNICODE package.
    * DISASSEMBLE is conforming now; there are no options to
      DISASSEMBLE.  However, you can use DISASSEM:DISASSEMBLE if more
      options are needed.

  * Bugfixes:
    * REPLACE and friends on strings were limited to strings less than
      the maximum possible size. This has been fixed so strings of any
      supported length can be handled.  (See ticket #66 and #68.)
    * A serious error in FILE-POSITION on streams using an encoding
      other than latin1 has been fixed.  See ticket #74.
    * Fix startup crashes on some Debian Linux versions.  This was
      caused by the release string not having a patch version.
    * FILE-POSITION no longer returns incorrect values.  See ticket
      #79.
    * Fix error in (format t "~ve" 21 5d-324).  (See ticket #80).
    * String reverse is much faster (upto 20 times).
    * REVERSE and NREVERSE on strings will reverse surrogate pairs.
      (Previously, surrogate pairs weren't reversed.)
    * Correct some mistakes in optimizing code where variables are
      declared as FLOAT.  Some optimizations were missed because FLOAT
      is represented internally as a UNION type, confusing the type
      derivation code.
    * Clean up and optimize x86 move VOPS and length/list VOP.
    * DISASSEM:DISASSEMBLE takes new keyword args, base, case, radix
      to specify values for *print-base*, *print-case*, and
      *print-radix* for disassembly.  The defaults are 16, :downcase,
      and *print-radix*, respectively.  This is a change from previous
      versions which used a base of 10 and a case of :upcase.


  * Trac Tickets:
    * Ticket #52 reopened.
    * Ticket #66 fixed.
    * Ticket #67 fixed.
    * Ticket #68 fixed.
    * Ticket #69 fixed.
    * Ticket #70 fixed.
    * Ticket #65 fixed.
    * Ticket #71 fixed.
    * Ticket #72 fixed.
    * Ticket #73 fixed.
    * Ticket #74 fixed.
    * Ticket #76 fixed.
    * Ticket #79 fixed.
    * Ticket #77 fixed.
    * Ticket #80 fixed.
    * Ticket #81 fixed.
    * Ticket #83 fixed.
    * Ticket #82 fixed.

  * Other changes:
    * -8 option for build-all.sh is deprecated since we don't
      officially support 8-bit builds anymore.
    * Some small updates to the User Manual and CMU Internals
      documents to generate pdf files by default.

  * Improvements to the PCL implementation of CLOS:

  * Changes to building procedure:
    * In make-dist.sh, the version is now optional.  If not given, a
      version is derived from the git hash returned by "git
      describe". 
    * build.sh -u used to disable building of asdf and friends.  This
      is incorrect.  Asdf is always built now (during the last stage).


This release is not binary compatible with code compiled using CMUCL
20d; you will need to recompile FASL files. 

See <URL:http://www.cmucl.org> or
<URL:http://trac.common-lisp.net/cmucl> for download information,
guidelines on reporting bugs, and mailing list details.


We hope you enjoy using this release of CMUCL!
