========================== C M U C L 19 c ============================= The CMUCL project is pleased to announce the release of CMUCL 19c. This is a major release which contains numerous enhancements and bugfixes from the 19b 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: - Cross-reference information can now be saved to a fasl file. - COMPILE-FILE accepts the new keyword arg :XREF. When non-NIL, cross-reference information found during compilation is saved to the fasl file. - UNIX-UNAME added for non-glibc2 platforms, which already had it. - Added annotation support to the pretty printer so various annotations can be produced in sync with the pretty printer output. (From Matthias Koeppe.) Arbitrary functions ("annotations") can be queued in sequence with characters that are printed to the pretty stream. When the characters are forwarded to the target stream, the annotations are invoked at the right position. - Add a restart for ENSURE-DIRECTORIES-EXIST to retry directory creation if necessary. * Numerous ANSI compliance fixes: - FILE-POSITION on string input streams accept :START and :END for the position. - The default value for keyword args for deftype is '*, not NIL. - ED is now defined (but does nothing). Loading hemlock will give you an ED that works. - DOCUMENTATION and (SETF DOCUMENTATION) works for more cases now. - MULTIPLE-VALUE-SETQ now always returns the primary value. - (SETF MACRO-FUNCTION) and (SETF COMPILER-MACRO-FUNCTION) accepts the optional environment arg, as specified by ANSI CL. - PRIN1 no longer prints the sign of the exponent if it is non-negative. - PRIN1 and ~E are consistent now when printing large numbers. - Undefined-Function errors from funcalling special forms now have the cell-error name filled in correctly. - ENOUGH-NAMESTRING was not returning the shortest namestring when the defaults was #p"/". - TRANSLATE-PATHNAME signals an error if (PATHNAME-MATCH-P source from-wildcard) is not true. - ENOUGH-NAMESTRING was returning a pathname object instead of a string for logical pathnames. - ENOUGH-NAMESTRING no longer returns relative pathnames if the pathname and the defaults have nothing in common. - PARSE-NAMESTRING will accept a string for the DEFAULTS parameter, as specified by ANSI. * Numerous bugfixes: - Regression in MRG32K3A benchmark fixed. - (format t "~8,2f" -0.0) has the right length now. This happened because we didn't recognize -0.0 is negative. - Type derivation for FTRUNCATE is now consistent with what FTRUNCATE returns. Main problem was that -0.0 is now returned by ftruncate instead of +0.0. - Some errors during type derivation are fixed. We cause the offending function to return NIL to indicate unbounded. - Errors in callbacks for the ppc and sparc ports when the integer arg is shorter than an int have been fixed. - ASIN and ACOS returns NaN when given NaN args instead of signaling an error. - FTRUNCATE will return a quiet NaN when given a signaling NaN. It also properly handles infinity too. - Fixed a bug in handling of alien enum types in structures. - (MAKE-PATHNAME :DIRECTORY '(:RELATIVE)) now prints as #P"./" instead of #p"", which is the printed form of (MAKE-PATHNAME). - Relative directories for MAKE-PATHNAME now have all "." elements removed. This makes it consistent with the reader. - A warning is printed if an element of the directory component of a pathname consists of a string containing the "/" character. - Namestrings for pathnames with a NIL host will now be generated using the host from *DEFAULT-PATHNAME-DEFAULTS*, or *UNIX-HOST* instead of producing an error. - ENOUGH-NAMESTRING returns the pathname if the host for the pathname differs from the host for the defaults. - CMUCL recognizes multi-arch (fat) shared libs on Darwin/ppc. It's now possible to load libSystem.dylib. - #p".." is read as a directory instead of as a file with name #"." and type "". - #p"..." and similar forms with more dots is read as a file with name equal to the string and type nil. Previously, the name had one fewer dot with type "". - MAKE-PATHNAME with :name equal to ".." or "." will generate a warning because CMUCL cannot print that in a form that will be read back the same. - ENOUGH-NAMESTRING will work with search-lists, but only looks at the first path in the search-list. This is mostly to handle the home: search-list, which only has one path by default. - SXHASH will hash the components of a pathname object together instead of returning the same hash value for all pathname objects. - EQUAL for pathnames treats version NIL and version :NEWEST to be equal. - PPC callbacks were not preserving register values and therefore produced erroneous values. - PROBE-FILE for a pathname that is actually a directory returns a pathname indicating that it is a directory. - LISTEN on DUAL-CHANNEL-SIMPLE-STREAM should work now. * Other changes: - Due to some bugs in modular arithmetic, generating either wrong code or much slower code, you can now disable modular arithmetic by setting c::*enable-modular-arithmetic* to NIL. This is a workaround pending a better solution. - Support logical pathnames when using LOAD-OBJECT-FILE. - Namestrings that are being parsed will not produce a search-list if a logical host with the same name already exists. An error is signaled in this case. - Tracing with :encapsulate nil does not work very well on ppc. The default for tracing on ppc is to encapsulate. (Tracing functions with the known-return convention using :encapsulate nil works, however.) * Improvements to the PCL implementation of CLOS: * Changes to rebuilding procedure: - Build scripts should recognize FreeBSD automatically. - Should be able to build on either Mac OS X 10.2 or 10.4 using the default version of gcc. This release is not binary compatible with code compiled using CMUCL 19b; you will need to recompile FASL files. See for download information, guidelines on reporting bugs, and mailing list details. We hope you enjoy using this release of CMUCL!