Forked from
cmucl / cmucl
5292 commits behind the upstream repository.
-
gerd authored
Found by Paul Dietz. * src/bootfiles/18e/boot13.lisp: New file. * src/code/reader.lisp (read-token) <RETURN-SYMBOL>: If the package name is "", use *keyword-package*.
gerd authoredFound by Paul Dietz. * src/bootfiles/18e/boot13.lisp: New file. * src/code/reader.lisp (read-token) <RETURN-SYMBOL>: If the package name is "", use *keyword-package*.
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!