========================== 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 public domain.

New in this release:

Known issues:

Feature enhancements

Changes 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 WITH-FLOAT-TRAPS-MASKED . (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 *ENVIRONMENT-LIST* :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 (closed)). 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.

Bug fixes: 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 (closed).) Cleanups in handling floating-point exceptions. See Tickets #15 (closed) and #16 (closed). DIRECTORY with :FOLLOW-LINKS T (and :TRUENAME NIL ) will follow directory links. Previously, the directories that were links weren't followed.

Trac Tickets:

Gitlab tickets: Ticket #10 (closed) fixed: setting an element of a 1, 2, or 4-bit array with a constant index did not always set the element appropriately. Ticket #12 (closed) 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 (closed) fixed: search-lists are handled correctly. Ticket #14 (closed) fixed: WITH-FLOAT-TRAPS-ENABLED doesn't incorrectly set accrued exceptions anymore. Ticket #15 (closed) fixed: FLOATING-POINT-INEXACT exception prints out values correctly now. Ticket #17 (closed) fixed: better docstring for *ENVIRONMENT-LIST* Ticket #18 (closed) fixed: better description of :ENV option for RUN-PROGRAM . Ticket #22 (closed) fixed: Incorrect coercion to float. Ticket #25 (closed) fixed: Issue with EXT:RUN-PROGRAM and string streams (related to character sizes?) Ticket #27 (closed) fixed: Regression: ASDF test failures Ticket #28 (closed) fixed: Recursive function definition during cross-compile Ticket #30 (closed) fixed: Compilation of (DESCRIBE 'FOO) Ticket #31 (closed) fixed: (COMPILE #'FOO) fails Ticket #24 (closed) fixed: Compilation of (COMPILE 'FOO) Ticket #32 (closed) fixed: doc fix: EXT:RUN-PROGRAM has no :BEFORE-EXECVE option

Other changes: Update user manual.

Improvements to the PCL implementation of CLOS:

Changes to building procedure:

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

See URL:http://www.cmucl.org or URL:https://gitlab.common-lisp.net/cmucl/cmucl for more information, See URL:https://gitlab.common-lisp.net/cmucl/cmucl/wikis/GettingCmucl for obtaining CMUCL, including sources and binaries..

We hope you enjoy using this release of CMUCL!