========================== C M U C L 21 b =============================
The CMUCL project is pleased to announce the release of CMUCL 21b.
This is a major release which contains numerous enhancements and bug
fixes from the 21a 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
New in this release:
Update to ASDF 3.1.7.
Add support for asdf's static-image-op
This mostly entails internal changes in how executables are
handled. lisp.a is not complete; it must be linked with
either exec-init.o or exec-final.o.
If the linker fails to link an image, the exit code is
returned to indicate failure.
When printing the process structure (from RUN-PROGRAM), include
the exit code to make it easier to see if the the process exited
cleanly or not. The printed representation is also changed
slightly to use PPRINT-UNREADABLE-OBJECT.
Executable images on OSX no longer support running on other
versions of the OS. Previously, -mmacosx-version-min=10.5 was
used to specify the executable would run on OSX versions >=
10.5. This, however, requires the 10.5 SDK be available. Thus,
no longer require that.
Disassembly of bytes and words now use .BYTE and .WORD instead
of BYTE and WORD.
Unix support on Linux has been unified with all other OSes.
Thus, src/code/unix-glibc2.lisp is no longer used.
Micro-optimize modular shifts on x86.
Update lisp-unit to commit e6c259f.
Added EXT:WITH-FLOAT-TRAPS-ENABLED to complement
(EXPT 0 power) doesn't throw INTEXP-LIMIT-ERROR anymore for any
integer value of power.
Starting CMUCL with "-dynamic-space-size 0" means using the
maximum possible heap size for the platform.
More descriptive docstring for
:ENV option for RUN-PROGRAM
Maximum dynamic-space-size on Linux reduced to 1530 MB because
that's the largest available space on 32-bit Ubuntu 11.10.
For linux, darwin, and solaris/sparc, the binding stack and
control stack are now mapped into memory wherever the OS wishes
to place them instead of being mapped into a fixed location.
This is indicated by new feature :RELOCATABLE-STACKS.
Building on NetBSD now requires version 7.0 or later.
ANSI compliance fixes:
PATHNAME-MATCH-P did not accept search-lists.
(COMPILE 'FOO) returns the compiled function if FOO is already
compiled. (See Ticket #24). This is a change in behavior for
developers where foo would be recompiled if the source was
available. Developers might want to investigate UNCOMPILE
combined with COMPILE to get the old behavior back.
Linux was missing UNIX-SETITIMER which prevented saving cores.
Generate inexact exceptions more carefully.
Fix FP issue when building with Xcode 7.2 (and newer versions of
clang). (See ticket #12.)
Cleanups in handling floating-point exceptions. See Tickets #15
DIRECTORY with :FOLLOW-LINKS T (and :TRUENAME NIL) will follow
directory links. Previously, the directories that were links
Ticket #10 fixed: setting an element of a 1, 2, or 4-bit array
with a constant index did not always set the element
Ticket #12 fixed. It looks like a possible compiler bug, but
worked around by explicitly setting inexact instead of using FP
instructions to generate inexact.
Ticket #16 fixed: search-lists are handled correctly.
Ticket #14 fixed: WITH-FLOAT-TRAPS-ENABLED doesn't incorrectly
set accrued exceptions anymore.
Ticket #15 fixed: FLOATING-POINT-INEXACT exception prints out
values correctly now.
Ticket #17 fixed: better docstring for *ENVIRONMENT-LIST*
Ticket #18 fixed: better description of :ENV option for