======================= C M U C L 18 d ==========================
The CMUCL project is pleased to announce the release of CMUCL 18d. This is a major release which contains numerous enhancements and bugfixes from the 18d 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 multimethods and a metaobject 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 in the public domain.
Features new in this release:
- Feature enhancements:
- a new platform, OpenBSD/x86 is supported
- significant performance enhancements: code compiled with this release is approximately 15% faster than with 18c
- Logical Pathname Translations can be auto-loaded
- The presence of gray streams support is now clearly announced in the herald, and via the :gray-streams feature.
- Support for
READ-
andWRITE-SEQUENCE
on Gray streams, viaSTREAM-READ-SEQUENCE
andSTREAM-WRITE-SEQUENCE
- New
:class
keyword option forOPEN
, which lets it return Gray streams classes wrapped around lisp-streams. - Facility for addition of clean-up hooks, that are called before CMU
CL is exited via
EXT:QUIT
. - Added hooks that support the addition of advanced command processing capabilities for user input (similar to the stuff ACL does)
- the modules: pathname is initialized sensibly, to make
REQUIRE
work correctly out of the box. For example, you can now say(require :clx)
to load the precompiled clx-library subsystem. - Report class information when describing symbols that are class names.
- Compilation of PCL-generated code is now silent by default. This can
be controlled by changing
pcl::*compile-lambda-silent-p*
. - Further ongoing speed tuning to various numerical routines.
LOAD-FOREIGN
has added:verbose
option that honors*load-verbose*
- Support larger FD_SETSIZE on FreeBSD
- Debugger short-cuts to invoke available restarts now behave more predictably (all available restarts get a numeric command, and named restarts get their name as a command, unless that is already taken, i.e. as is indicated by the debugger display)
- Improvements to disassembly listings on x86 and SPARC:
- Sparc v9 instructions are longer so make the opcode column wider.
- Allow printing of integer registers to use the Sparc register names instead of the Lisp names.
- Add support for printing various notes during disassembly:
- Assembler routines, foreign functions, and foreign constants
- The value of constants in the code header
- References to static symbols
- Notes about pseudo-atomic stuff
- Some hints on header-word types
- Sparc port supports 64-bit integers for parameters and return values when calling foreign functions.
- Try to use branch prediction on the sparc port.
- Compiler understands the type of
SIGNUM
now. - Loading of files given by logical pathnames without a type will do a search for possible fasl files instead of just FASL.
- Some optimizations to
ALIEN-SAP
to speed up alien access.
- Numerous ANSI compliance fixes:
EVAL-WHEN
behaviour should now be in line with ANSI specPROCLAIM
no longer has a compile-time effect, so many old uses of this should useDECLAIM
insteadDEFMACRO
no has compile-time effect only when at toplevel- The interaction of structure-printing and print-object now matches ANSI spec more closely
- Duplicate keyword arguments are now allowed in lambda-list destructuring operators.
READTABLE-CASE
is now copied byCOPY-READTABLE
- fixes to the precedence lists of several error conditions
:CLTL2
,:DRAFT-ANSI-CL
,:X3J13
features removed- Removed various CLtL1/CLtL2-only exports from
COMMON-LISP
(COMPILER-MACROEXPAND
,COMPILER-MACROEXPAND-1
,DEFINE-SETF-METHOD
,GET-SETF-METHOD
,GET-SETF-METHOD-MULTIPLE-VALUE
,LOGICAL-PATHNAME-P
,SIMPLE-CONDITION-FORMAT-STRING
,GENERIC-FLET
,GENERIC-LABELS
,WITH-ADDED-METHODS
,HASH-TABLE-WEAK-P
) - changes to logical pathname semantics
LOAD
accepts:EXTERNAL-FORMAT
as required by ANSI, but doesn't do anything with it.
- Numerous bugfixes:
- fix for bogus warnings based on stale function type information for redefined functions
- fix for printing of bit vectors (printer was incorrectly respecting radix and base control vairables). Also bugfixes to pretty printing of vectors
- Fix sxhash and equal hash tables for strings with fill-pointers
READ-SEQUENCE
now works with byte-vectors and strings for concatenated-streams- Fix to handling of infinities in floating-point comparisons
- Fix bug in handling of certain complex numbers by log
- Fixed handling of floating point errors by handler-bind
- Fixed broken
INVALID-METHOD-ERROR
and added stricter checks in standard method combination for the qualifiers on methods - Fixed calling of
NO-APPLICABLE-METHOD
for GFs with no defined methods - Fixed missing coercion to class in argument processing of the
:METHOD-CLASS
option toDEFGENERIC
, which causedGENERIC-FUNCTION-METHOD-CLASS
to return the uncoerced class name, breaking PCL and foreign code - Various fixes to parameters and events in CLX
COMPILE-FILE
heeds logical-pathname translations for output file spec- Rewrite of deftransform for
CONCATENATE
, because the original deftransform could cause the compiler to spend enormous (minutes!) amounts of time trying to derive the type of theSTART
variable. - Allow only one docstring in relevant bodies, as processed by
SYSTEM:PARSE-BODY
- Bugfix for handling of complex and non-numeric arguments to the
~f
format directive - Better error checking for arguments to
FILE-LENGTH
,FLOAT-RADIX
VECTOR-PUSH-EXTEND
works for adjustable arrays of zero length- Respect :order argument to short form of define-method-combination
- Fix destructuring in AND sub-clauses of WITH-CLAUSES for LOOP
IGNORE
declarations work for symbol-macros now- Changed handling of static libraries as the first argument to
LOAD-FOREIGN
, so that all archive members are loaded (like the user expects). - Stricter argument checking for
ADJUST-ARRAY
, which also doesn't shrink non-adjustable vectors in place anymore. - Removed forced defaulting of unsupplied
:DIRECT-SUPERCLASSES
and:DIRECT-SLOTS
arguments byENSURE-CLASS-USING-CLASS
, as required by AMOP. - Fixed
SHARED-INITIALIZE
forSTD-CLASS
to correctly interpret unsupplied:DIRECT-SUPERCLASSES
. CATCH
now works correctly for immediate fixnum and character tags- Fix some bugs in the ash deftransform.
- Fix a bug in printing logical pathnames with a file version given.
- Fixed a sparc backend bug where offsets were generated that couldn't fit in an offset field of an instruction.
- Complex division vop was wrong (only for Sparc with :complex-vops *feature*)
- Stack clearing code is incorporated into the Sparc port
- The deprecated branch and taddcctv instructions shouldn't be used at all on V9 builds.
- Other changes:
- Default for
CMUCLLIB
on Linux changed to match the default on other Unices, namely/usr/local/lib/cmucl/lib/
- Default for
- Code cleanups:
- Changes to PCL (the CLOS implementation included with CMUCL) to remove code for other Common Lisp implementations.
- The features
:PROPAGATE-FLOAT-TYPE
,:PROPAGATE-FUN-TYPE
, and:CONSTRAIN-FLOAT-TYPE
are now the default and only behaviour. Remove those features from your build scripts.
- Changes to rebuilding procedure:
- the directory
src/bootfiles/18c
contains a number of files required to bootstrap compilation from the 18c release. See theREADME
in that directory for usage instructions. - the
:NO-CLX
,:NO-HEMLOCK
etc features which are used to control subsystem compilation during the build phase are no longer present in the final cores. - Added new new target 'initial-map' that can make a 'lisp.nm' file from whatever 'lisp' executable is in the "target:lisp/" directory without depending on the rest of the source code being available. Used when setting up a build directory and/or when internals.h doesn't yet exist.
- Various minor improvements to the Makefiles
- the directory
This release is not binary compatible with code compiled using CMUCL 18c; you will need to recompile FASL files.
See <URL:http://www.cons.org/cmucl/> for download information, guidelines on reporting bugs, and mailing list details.
We hope you enjoy using this release of CMUCL!