========================== 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
orexec-final.o
. - If the linker fails to link an image, the exit code is returned to indicate failure.
- This mostly entails internal changes in how executables are
handled. lisp.a is not complete; it must be linked with
either
- 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 usePPRINT-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 ofBYTE
andWORD
. - 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 complementWITH-FLOAT-TRAPS-MASKED
. -
(EXPT 0 power)
doesn't throwINTEXP-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 forRUN-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 ifFOO
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 investigateUNCOMPILE
combined withCOMPILE
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.)
- Cleanups in handling floating-point exceptions. See Tickets #15 and #16.
-
DIRECTORY
with:FOLLOW-LINKS T
(and:TRUENAME NIL
) will follow directory links. Previously, the directories that were links weren't followed.
- Linux was missing
-
Trac Tickets:
-
Gitlab tickets:
- Ticket #10 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 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 forRUN-PROGRAM
. - Ticket #22 fixed: Incorrect coercion to float.
- Ticket #25 fixed: Issue with
EXT:RUN-PROGRAM
and string streams (related to character sizes?) - Ticket #27 fixed: Regression: ASDF test failures
- Ticket #28 fixed: Recursive function definition during cross-compile
- Ticket #30 fixed: Compilation of
(DESCRIBE 'FOO)
- Ticket #31 fixed:
(COMPILE #'FOO)
fails - Ticket #24 fixed: Compilation of
(COMPILE 'FOO)
- Ticket #32 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!