========================== C M U C L 20 f ============================= [In Progress] The CMUCL project is pleased to announce the release of CMUCL 20f. 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: * Support for x87 will be dropped after the 2014-04 snapshot. All further snapshots will require an x86 chip that supports sse2. SSE2 was introduced with the Pentium 4 in 2001. * Feature enhancements * Trig functions are signficantly faster. * Accuracy of trig functions improved. (Previously, they could be off by one or two ulp.) * RUN-PROGRAM accepts :ELEMENT-TYPE to allow specifying the element type for streams that are created for RUN-PROGRAM. (See ticket:92) * Changes * Update to ASDF 3.1.3. * When *PRINT-CASE* is :DOWNCASE, integers are printed with lowercase letters when needed. * Micro-optimize KERNEL:DOUBLE-FLOAT-BITS for x86/sse2. * Add micro-optimization for unary FTRUNCATE for x86/sse2. * Compiler can derive the types of the results of DECODE-FLOAT. * Main disassembly routines in the DISASSEMBLE package accept :BASE, :CASE, and :RADIX keyword arguments, like DISASSEMBLE:DISASSEMBLE. * Micro optimizations for sse2 to allow descriptor regs and stack tns for many operations so that the operands can be in memory instead of a register, thereby removing a register load instruction. * Support for darwin/ppc 10.5 and gcc 4.8. * Micro-optimization: (expt -1 power) just returns -1 or 1 without actually computing the power. * Run-time checks for zero pages on newly allocated pages has been disabled now that the lazy zeroing of the heap pages has been the default for several months now. * Add lisp-unit as a contrib. Use (require :lisp-unit) to load it. Precompiled fasls are not included. * CMUCL now uses fdlibm C functions to implement the special functions. All platforms use this so they should produce identical results everywhere. * Consing for the trig functions is removed now since we call out to fdlibm instead of implementing them in Lisp. * Source location information has been added for DEFINE-CONDITION. (From Helmut Eller.) * The lisp executable is now compiled to use SSE2 on x86 machines; CMUCL will not run on chips without SSE2 anymore. * ANSI compliance fixes: * The values on the branch cuts for the inverse trig and hyperbolic functions have been updated. Instead of following the text in the CLHS, the values are defined according to the definitions in the formulas. In particular (atanh x) for x real and on the branch cut is now continuous with different quadrants. This differs from the description of the branch cut for atanh in the CLHS. * CLEAR-OUTPUT was not actually doing anything. Now, CLEAR-OUTPUT will discard any buffered data that has not been written out yet. * Bugfixes: * Fix error in pi reduction on x87. It was not noticed previously because the returned values were not used optimally. * Better error message for empty cond clauses. * Fix serious error in the complex multiply vop for sparc. Incorrect results were returned under some conditions when the result TN was packed in the same location as one of the argument TNs. * The float constants for various limits are defined for double-double floats such as least-positive-double-double-float. * When reading very small float values, round to least-positive-foo-float if possible. * (log -0w0) and (log 0w0) returns values analogous to the double-float versions. * Fix bug in printing MOST-NEGATIVE-FIXNUM. * For Gray streams, CLEAR-OUTPUT was calling STREAM-FORCE-OUTPUT instead of STREAM-CLEAR-OUTPUT, so the output wasn't actually cleared. * Trac Tickets: * Ticket #90 fixed. * Ticket #92 marked invalid.. * Ticket #87 fixed. * Ticket #94 fixed. * Ticket #93 fixed. * Ticket #98 fixed. * Ticket #104 fixed. * Ticket #101, item 1 fixed. * Other changes: * Improvements to the PCL implementation of CLOS: * Changes to building procedure: This release is not binary compatible with code compiled using CMUCL 20e; you will need to recompile FASL files. See or for download information, guidelines on reporting bugs, and mailing list details. We hope you enjoy using this release of CMUCL!