Skip to content
Snippets Groups Projects
Forked from cmucl / cmucl
5292 commits behind the upstream repository.
release-19a.txt 9.77 KiB
========================== C M U C L  18 e =============================

[--- WORK IN PROGRESS --- DO NOT DISTRIBUTE ---]

The CMUCL project is pleased to announce the release of CMUCL 19a.
This is a major release which contains numerous enhancements and
bugfixes from the 18e 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 mostly in the public domain.

New in this release:
       
  * Feature enhancements:
     - Stack overflow checking added for FreeBSD/x86, Linux/x86 and
       Solaris.  Code that makes the control stack overflow (for
       example due to unbounded recursion) will lead to a
       STORAGE-ERROR being signaled, instead of making CMUCL crash.
     - LISP:FIND-CLASS and LISP:CLASS-OF now return CLOS classes.  The
       symbols LISP:STANDARD-CLASS, LISP:BUILT-IN-CLASS, and
       LISP:STRUCTURE-CLASS name CLOS classes.  It is no longer
       necessary to SHADOWING-IMPORT these from PCL when doing MOP
       programming, and it fixes some non-compliances as well.
     - Package locks: a package whose EXT:PACKAGE-LOCK is enabled
       non-NIL is protected against changes in its structure (list of
       exported symbols, use-list etc). Symbols in a package whose
       EXT:PACKAGE-DEFINITION-LOCK is enabled are protected against
       redefinition.
     - Weak hash tables have been added for x86 systems.
     - Local functions are now named (FLET <name> ...) or 
       (LABELS <name> ...).
     - Compiler checking control string and number of args to FORMAT.
     - TRACE automatically using encapsulation when function-end
       breakpoints cannot be used.
     - INSPECT working on CLOS instances.
     - Callbacks from foreign code to Lisp.  Implemented for x86 and
       sparc.
     - Functions like GETHASH that are used in the implementation of 
       TRACE can now be traced.  See also
       DEBUG:*TRACE-ENCAPSULATE-PACKAGE-NAMES*.
     - New facility for encapsulating functions, FWRAPPERS;
       see also the CMUCL User Manual.
     - TRACE and PROFILE have been reimplemented using fwrappers,
       with the effect of tracing and profiling now working more
       nicely together.
     - When a profiled function is redefined, it is re-profiled.
     - A basic implementation of simple-streams added.  Some
       functionality may be missing.
     - UNIX:UNIX-LSEEK working with files > 2G on BSDs.
     - Type declarations on local bindings of special variables no
       longer being ignored.
     - DISASSEMBLE disassembling closure/funcallable instance functions.

  * Numerous ANSI compliance fixes:
     - Many bugs in CMUCL's type system detected by Paul Dietz'
       ANSI test suite have been fixed.
     - Non-keyword keyword names in lambda lists are now accepted.
     - Condition slot initialization fixed for the case that two
       or more slots have the same :INITARG.
     - Initforms are now evaluated once only during condition slot
       initialization.
     - USE-VALUE, STORE-VALUE, CONTINUE behavior corrected in presence
       of multiple restarts having the same name.
     - RESTART-CASE's interaction with local macros fixed.
     - Interaction of COMPUTE-RESTARTS and RESTART-CASE fixed in
       presence of multiple restarts having the same name.
     - Condition slot readers/writers are generic functions.
     - &WHOLE, &REST, &BODY in macro lambda lists can be followed
       by destructuring patterns.  The previous behavior of &BODY
       when followed by (<body> <declarations> <doc>) is available
       through the new lambda-list keyword EXT:&PARSE-BODY.
     - ELT now signals an error in safe code when used on lists
       with an out-of-bounds index.
     - Accessing arrays in compiled code with out-of-bounds indices
       now signals a TYPE-ERROR.
     - DECLARE no longer being a special operator.
     - DEFINE-CONDITION accepts slot option :DOCUMENTATION.
     - Behavior of (... &KEY &ALLOW-OTHER-KEYS) fixed for 
       DESTRUCTURING-BIND and macros.
     - Stricter checking of keyword argument list in CLOS methods.
     - &ENVIRONMENT variable bound bound before other vars, regardless
       of where it appears in a lambda-list.
     - VALUES types no longer accepting &KEY or &ALLOW-OTHER-KEYS.
     - THE conforming to ANSI.
     - SLOT-EXISTS-P can be used with conditions.
     - REMOVE-METHOD always returning the generic function passed to it.
     - Standard methods for STANDARD-OBJECT and STRUCTURE-OBJECT
       defined on MAKE-LOAD-FORM.
     - Compliant MAKE-LOAD-FORM-SAVING-SLOTS.
     - DEFSTRUCT recording slot-names as specified by users.
     - Generic function call keyword argument checking according to
       ANSI 7.6.5.
     - CALL-NEXT-METHOD without arguments being called with original
       arguments when method parameters are changed with SETQ.
     - When CALL-NEXT-METHOD is called with arguments, an error is
       signaled in safe code when the set of methods applicable to
       CALL-NEXT-METHOD's arguments is different from the set of
       methods applicable to the original method arguments.
     - FIND-METHOD signaling an error when called with specializers
       not corresponding to the number of required arguments of the
       supplied generic function.
     - TYPE-OF returning KEYWORD for keywords, STANDARD-CHAR for
       standard characters, BOOLEAN for T, (INTEGER <N> <N>) for
       integers N, non-list types for functions, and CLOS classes for
       instances whose class doesn't have a proper name.
     - Class precedence list of NULL not having SYMBOL before LIST,
       precedence list of STANDARD-METHOD not having METHOD before
       STANDARD-OBJECT.
     - ADD-METHOD returning its first argument, the generic function.
     - DEFCLASS redefining a class with the given name only if the
       name is the proper name of an existing class.
     - KEYWORD package no longer having nickname "".

  * Numerous bugfixes:
     - NSET-EXCLUSIVE-OR returns the same results as SET-EXCLUSIVE-OR
       wrt to duplicate elements.
     - Forms like (MULTIPLE-VALUE-BIND 'LIST) no longer trapping
       an internal compiler error when compiled.
     - PARSE-INTEGER signaling PARSE-ERROR.
     - Compiler eliminating some type checks in safe code.
     - Byte-compiler and -interpreter not handling C:&MORE.
     - Some TYPE-ERRORs being signaled with unbound slots, which
       made them undisplayable.

  * Other changes:
     - Removed obsolete alias from MAKE-VECTOR to MAKE-ARRAY
     - the signature of *COMPILER-NOTIFICATION-FUNCTION* has changed;
       it now has an extra argument that describes the nature of the
       error or warning. 
     - File versioning occurs when the version component is :newest,
       and Emacs style file versions are created:  foo.bar.~N~, where
       the larger N is newer.  foo.bar is the newest version.
     - Converting namestrings to pathnames now get a version component
       of NIL instead of :NEWEST.
     - *default-pathname-defaults* has a version component of
       :unspecific instead of :newest so versioning is disabled by
       default to preserve current behavior.  Set the version to
       :newest to create versions.

  * Numerous improvements to the PCL implementation of CLOS:
     - Gerd's PCL has been added, which fixes numerous bugs and ANSI/
       AMOP non-compliances, and adds various new optimizations (also
       see the CMU User Manual).
     - PCL's class hierarchy has been changed to conform to AMOP, for
       instance, GENERIC-FUNCTION is now a subclass of
       STANDARD-OBJECT.
     - ENSURE-CLASS-USING-CLASS's argument list has been changed
       to conform to AMOP.
     - COMPUTE-EFFECTIVE-SLOT-DEFINITION now takes a slot name as
       argument, for AMOP compliance.
     - SUBTYPEP works in presence of forward-referenced classes.
     - Accessing slots of specialized parameters in (SETF
       SLOT-VALUE-USING-CLASS) methods works.
     - DIRECT-SLOT-DEFINITION-CLASS and EFFECTIVE-SLOT-DEFINITION-CLASS
       AMOP compliant.
     - ALLOCATE-INSTANCE working with structures defined with DEFSTRUCT.
     - With (DEFGENERIC FOO (&REST X &KEY)) (DEFMETHOD FOO (&REST X) X),
       (FOO 1) now signals an error.
     - Methods with &OPTIONAL arguments detecting too many args.
     - DEFMETHOD and DEFGENERIC detecting doubled lambda variables.
     - DEFGENERIC :ARGUMENT-PRECEDENCE-ORDER option checking.
     - SLOT-VALUE, (SETF SLOT-VALUE), SLOT-BOUNDP working with conditions.
     - (SETF SLOT-VALUE) working on read-only structure slots like
       in other implementations.
     - The declaration identifiers SLOTS, AUTO-COMPILE,
       NOT-AUTO-COMPILE have been moved from PCL to EXT.
     - Support for inlineing methods in effective methods; see the 
       CMU User Manual.
     - Wrong results could be returned from generic functions when
       all methods returned constant values, and some methods were
       qualified, or the generic function didn't use the standard
       method combination.

  * Improvements to Hemlock, the Emacs-like editor:

  * Changes to rebuilding procedure:
      
  * Deprecated features:
     - EXT:ENCAPSULATE and associated functions; use fwrappers instead.

This release is not binary compatible with code compiled using CMUCL
18e; 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!