wiki:Release18d
close Warning: Can't synchronize with repository "(default)" ("(default)" is not readable or not a Git repository.). Look in the Trac log for more information.

======================= 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- and WRITE-SEQUENCE on Gray streams, via STREAM-READ-SEQUENCE and STREAM-WRITE-SEQUENCE
    • New :class keyword option for OPEN, 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 spec
    • PROCLAIM no longer has a compile-time effect, so many old uses of this should use DECLAIM instead
    • DEFMACRO 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 by COPY-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 to DEFGENERIC, which caused GENERIC-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 the START 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 by ENSURE-CLASS-USING-CLASS, as required by AMOP.
    • Fixed SHARED-INITIALIZE for STD-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/
  • 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 the README 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

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!

Last modified 10 years ago Last modified on 02/07/14 18:17:52