GNU CLISP 2.34 (2005-07-20)

0 views
Skip to first unread message

Sam Steingold

unread,
Jul 21, 2005, 10:36:31 AM7/21/05
to
ANSI Common Lisp is a high-level, general-purpose programming language.
GNU CLISP is a Common Lisp implementation by Bruno Haible of Karlsruhe
University and Michael Stoll of Munich University, both in Germany.
It mostly supports the Lisp described in the ANSI Common Lisp standard.
It runs on most Unix workstations (Linux, FreeBSD, NetBSD, OpenBSD,
Solaris, Tru64, HP-UX, BeOS, NeXTstep, IRIX, AIX and others) and on
other systems (Windows NT/2000/XP, Windows 95/98/ME) and needs only
4 MB of RAM.
It is Free Software and may be distributed under the terms of GNU GPL,
while it is possible to distribute commercial proprietary applications
compiled with GNU CLISP.
The user interface comes in German, English, French, Spanish, Dutch
and Russian, and can be changed at run time.
GNU CLISP includes an interpreter, a compiler, a debugger, CLOS, MOP,
a foreign language interface, sockets, i18n, fast bignums and more.
An X11 interface is available through CLX, Garnet, CLUE/CLIO.
GNU CLISP runs Maxima, ACL2 and many other Common Lisp packages.

More information at
<http://clisp.cons.org/>,
<http://www.clisp.org/>,
<http://www.gnu.org/software/clisp/> and
<http://clisp.sourceforge.net/>.
Sources and selected binaries are available by anonymous ftp from
<ftp://ftp.gnu.org/pub/gnu/clisp/>
and its mirrors.


2.34 (2005-07-20)
=================

Important notes
---------------

* All .fas files generated by previous CLISP versions are invalid and
must be recompiled. This is caused by the addition of MOP, the DEFSETF
fixes, and the TRANSLATE-PATHNAME and MAKE-HASH-TABLE enhancements.
Set CUSTOM:*LOAD-OBSOLETE-ACTION* to :COMPILE to automate this.
See <http://clisp.cons.org/impnotes.html#loadfile> for details.

* The name of the Run-Control file has changed from '_clisprc' to
'.clisprc' on all platforms.
If you are using woe32, please rename your Run-Control file.

* Modules i18n, regexp, and syscalls are now present even in the base
linking set. Do not pass, e.g., "--with-module=regexp" to configure.

User visible changes
--------------------

* The CLOS MetaObject Protocol is supported:
+ New class METAOBJECT.
+ Classes:
New classes
STANDARD-READER-METHOD, STANDARD-WRITER-METHOD, FORWARD-REFERENCED-CLASS.
New functions
ENSURE-CLASS.
New generic functions
CLASS-DIRECT-SUPERCLASSES, CLASS-PRECEDENCE-LIST, CLASS-DIRECT-SLOTS,
CLASS-SLOTS, CLASS-DIRECT-DEFAULT-INITARGS, CLASS-DEFAULT-INITARGS.
New customizable generic functions
For class creation:
ENSURE-CLASS-USING-CLASS, VALIDATE-SUPERCLASS,
COMPUTE-DIRECT-SLOT-DEFINITION-INITARGS,
COMPUTE-CLASS-PRECEDENCE-LIST, COMPUTE-EFFECTIVE-SLOT-DEFINITION,
COMPUTE-EFFECTIVE-SLOT-DEFINITION-INITARGS, COMPUTE-SLOTS,
COMPUTE-DEFAULT-INITARGS, READER-METHOD-CLASS, WRITER-METHOD-CLASS.
For notification about subclasses:
CLASS-DIRECT-SUBCLASSES, ADD-DIRECT-SUBCLASS, REMOVE-DIRECT-SUBCLASS.
+ Generic Functions:
New classes
FUNCALLABLE-STANDARD-CLASS, FUNCALLABLE-STANDARD-OBJECT.
New functions
ENSURE-GENERIC-FUNCTION, SET-FUNCALLABLE-INSTANCE-FUNCTION,
COMPUTE-EFFECTIVE-METHOD-AS-FUNCTION.
New generic functions
GENERIC-FUNCTION-NAME, GENERIC-FUNCTION-METHODS,
GENERIC-FUNCTION-METHOD-CLASS, GENERIC-FUNCTION-LAMBDA-LIST,
GENERIC-FUNCTION-METHOD-COMBINATION,
GENERIC-FUNCTION-ARGUMENT-PRECEDENCE-ORDER, GENERIC-FUNCTION-DECLARATIONS.
New customizable generic functions
ENSURE-GENERIC-FUNCTION-USING-CLASS, COMPUTE-DISCRIMINATING-FUNCTION,
COMPUTE-APPLICABLE-METHODS, COMPUTE-APPLICABLE-METHODS-USING-CLASSES.
+ Methods:
New generic functions
METHOD-FUNCTION, METHOD-GENERIC-FUNCTION, METHOD-LAMBDA-LIST,
METHOD-SPECIALIZERS, ACCESSOR-METHOD-SLOT-DEFINITION.
New functions
EXTRACT-LAMBDA-LIST, EXTRACT-SPECIALIZER-NAMES.
+ Method-Combinations:
New generic function
FIND-METHOD-COMBINATION.
New customizable generic function
COMPUTE-EFFECTIVE-METHOD.
+ Slot-Definitions:
New classes
SLOT-DEFINITION, STANDARD-SLOT-DEFINITION,
DIRECT-SLOT-DEFINITION, STANDARD-DIRECT-SLOT-DEFINITION,
EFFECTIVE-SLOT-DEFINITION, STANDARD-EFFECTIVE-SLOT-DEFINITION.
New generic functions
SLOT-DEFINITION-NAME, SLOT-DEFINITION-INITFORM,
SLOT-DEFINITION-INITFUNCTION, SLOT-DEFINITION-TYPE,
SLOT-DEFINITION-ALLOCATION, SLOT-DEFINITION-INITARGS,
SLOT-DEFINITION-READERS, SLOT-DEFINITION-WRITERS,
SLOT-DEFINITION-LOCATION.
New customizable generic functions
DIRECT-SLOT-DEFINITION-CLASS, EFFECTIVE-SLOT-DEFINITION-CLASS.
+ Specializers:
New classes
SPECIALIZER, EQL-SPECIALIZER.
New generic functions
SPECIALIZER-DIRECT-GENERIC-FUNCTIONS, SPECIALIZER-DIRECT-METHODS.
New functions
EQL-SPECIALIZER-OBJECT, INTERN-EQL-SPECIALIZER.
New customizable generic functions
ADD-DIRECT-METHOD, REMOVE-DIRECT-METHOD.
+ Slot access:
New generic functions
SLOT-VALUE-USING-CLASS, (SETF SLOT-VALUE-USING-CLASS),
SLOT-BOUNDP-USING-CLASS, SLOT-MAKUNBOUND-USING-CLASS.
New functions
STANDARD-INSTANCE-ACCESS, FUNCALLABLE-STANDARD-INSTANCE-ACCESS.
+ Dependent object notification:
New functions
MAP-DEPENDENTS.
New customizable generic functions
ADD-DEPENDENT, REMOVE-DEPENDENT, UPDATE-DEPENDENT.
See <http://clisp.cons.org/impnotes.html#mop-chap> for details,
and <http://clisp.cons.org/impnotes.html#mop-clisp> for a list
of differences between CLISP and "The Art of the Metaobject Protocol".
*FEATURES* now contains :MOP.

* CLISP now supports programming with case sensitive symbols. This is the
default when CLISP is started with the new command line option "-modern".
See <http://clisp.cons.org/impnotes.html#package-case> for details.

* Several new datatypes that manage weak references:
WEAK-LIST, WEAK-AND-RELATION, WEAK-OR-RELATION,
WEAK-MAPPING, WEAK-AND-MAPPING, WEAK-OR-MAPPING, WEAK-ALIST.
New functions
- for WEAK-LIST:
MAKE-WEAK-LIST, WEAK-LIST-P, WEAK-LIST-LIST, (SETF WEAK-LIST-LIST),
- for WEAK-AND-RELATION:
MAKE-WEAK-AND-RELATION, WEAK-AND-RELATION-P, WEAK-AND-RELATION-LIST,
- for WEAK-OR-RELATION:
MAKE-WEAK-OR-RELATION, WEAK-OR-RELATION-P, WEAK-OR-RELATION-LIST,
- for WEAK-MAPPING:
MAKE-WEAK-MAPPING, WEAK-MAPPING-P, WEAK-MAPPING-PAIR, WEAK-MAPPING-VALUE,
(SETF WEAK-MAPPING-VALUE),
- for WEAK-AND-MAPPING:
MAKE-WEAK-AND-MAPPING, WEAK-AND-MAPPING-P, WEAK-AND-MAPPING-PAIR,
WEAK-AND-MAPPING-VALUE, (SETF WEAK-AND-MAPPING-VALUE),
- for WEAK-OR-MAPPING:
MAKE-WEAK-OR-MAPPING, WEAK-OR-MAPPING-P, WEAK-OR-MAPPING-PAIR,
WEAK-OR-MAPPING-VALUE, (SETF WEAK-OR-MAPPING-VALUE),
- for WEAK-ALIST:
MAKE-WEAK-ALIST, WEAK-ALIST-P, WEAK-ALIST-TYPE, WEAK-ALIST-CONTENTS,
(SETF WEAK-ALIST-CONTENTS), WEAK-ALIST-ASSOC, WEAK-ALIST-RASSOC,
WEAK-ALIST-VALUE, (SETF WEAK-ALIST-VALUE).
See <http://clisp.cons.org/impnotes.html#weak> for details.

* You can create formatting streams of class EXT:FILL-STREAM.
See <http://clisp.cons.org/impnotes.html#fill-stream> for details.

* SUBTYPEP can determine subtype relationship and type equivalence much better
than it could before.

* When *PRINT-READABLY* is true, symbols are now printed with package marker
and vertical bars.

* ANSI CL compliance issues:
+ Issue <DECLARATION-SCOPE:NO-HOISTING> is implemented: The scope of
declarations that do not apply to bindings, such as free SPECIAL, NOTINLINE
or OPTIMIZE declarations, includes only the body forms and no longer
includes the initforms of the LAMBDA/LET/LET*/MULTIPLE-VALUE-BIND bindings.
+ Vectors of element type NIL are now strings in all aspects. But the type
BASE-STRING does _not_ include vectors of element type NIL.
+ TYPE-OF now returns STANDARD-CHAR instead of CHARACTER when possible.
+ The type COMPILED-FUNCTION no longer encompasses generic functions.
+ TYPE-OF now returns COMPILED-FUNCTION or STANDARD-GENERIC-FUNCTION instead
of FUNCTION when possible.
+ The space character is printed as "#\ " if CUSTOM:*PRINT-SPACE-CHAR-ANSI*
is true.
+ The #<PACKAGE KEYWORD> no longer has the nickname "". The syntax :FOO for
keywords still works, but is now special cased in the reader.
+ Class redefinition with DEFCLASS no longer modifies the previous class if
it doesn't have a "proper name".
+ Class redefinition with DEFCLASS removes accessor methods that have been
installed through the previous DEFCLASS definition of the same class.
+ Generic function redefinition with DEFGENERIC removes methods that have
been installed through the previous DEFGENERIC definition of the same
function.
+ The set of qualifiers allowed for methods that are combined with a method
combination defined through the short form of DEFINE-METHOD-COMBINATION
now includes the name of the method combination instead of the operator.
+ FIND-METHOD now gives an error if the list of specializers has a wrong
length.
+ ARRAY-TOTAL-SIZE-LIMIT, ARRAY-DIMENSION-LIMIT, ARRAY-RANK-LIMIT are now
fixnums.
+ SHORT-FLOATs whose absolute value is an integer in the range between 10^5
and 10^7 are now printed with full precision.
+ Operations combining rational and floating-point numbers now return a
floating-point result if CUSTOM:*FLOATING-POINT-RATIONAL-CONTAGION-ANSI*
is true. When the mathematical result in a situation is rational, a
warning is issued if CUSTOM:*WARN-ON-FLOATING-POINT-RATIONAL-CONTAGION* is
true.
+ Class redefinition with DEFCLASS now updates existing instances as
specified.
+ An ABORT restart is now always installed.
+ UPDATE-INSTANCE-FOR-DIFFERENT-CLASS does the required argument checking.
+ Passing invalid initialization arguments to MAKE-INSTANCE and similar
now generates a PROGRAM-ERROR instead of just an ERROR.
+ Documentation strings are now attached to class objects, not just to
their name.
+ Arrays with total array size 0 are printed in a lossy way if
CUSTOM:*PRINT-EMPTY-ARRAYS-ANSI* is true and *PRINT-READABLY* is false.
+ Allow () to match NIL in destructuring lambda lists.
+ Documentation strings at a place where only declarations and forms are
allowed now give a warning, not an error.
+ LAST, BUTLAST and NBUTLAST check their list argument for circularity.
+ Different LOAD-TIME-VALUE forms that are EQUAL but not EQ are no longer
coalesced by COMPILE-FILE.
+ DEFSETF lambda-lists now support &ENVIRONMENT.
+ DEFSETF lambda-lists are no longer destructuring lambda-lists.
+ NAMESTRING no longer accepts an optional second argument.
+ SETF of VALUES now uses only the first value of each subform.
+ SPECIAL declarations of variables are now correctly respected inside
macro expanders defined through MACROLET within the declaration's scope.
+ (EXPORT NIL), (UNEXPORT NIL), (IMPORT NIL), (SHADOWING-IMPORT NIL),
(SHADOW NIL) are now nops.
+ An attempt to create a condition from an invalid condition designator now
always results in a TYPE-ERROR being signalled.
+ The reader's errors are now of type READER-ERROR when they should be.
+ READ-DELIMITED-LIST now returns NIL when *READ-SUPPRESS* is true.
+ Printing of multidimensional arrays now respects *PRINT-LEVEL*.
+ As required by 19.2.3, *DEFAULT-PATHNAME-DEFAULTS* is merged into
pathnames before accessing the file system.
+ LOGICAL-PATHNAME now gives an error if the argument string does not
contain a host specification.
+ The PRINT-UNREADABLE macro prints extraneous spaces if
CUSTOM:*PRINT-UNREADABLE-ANSI* is true.
+ In the #n= and #n# reader syntax, the integer n may now be larger than
7 digits.
+ IN-PACKAGE forms with constant arguments are no longer executed by the
compiler if they occur in a non-null lexical environment.
+ COMPILE-FILE now always returns the TRUENAME of its output file.
+ GET-SETF-EXPANSION now accepts NIL as the environment argument to
mean null lexical environment
Thanks to Paul F. Dietz <di...@dls.net> and his ANSI compliance
suite, which helped detect some of these deficiencies.
Thanks to Yuji Minejima <ggb0...@nifty.ne.jp> and his ANSI compliance
suite, which helped detect some of these deficiencies.

* Global error handlers can now be installed and removed using
EXT:SET-GLOBAL-HANDLER, EXT:WITHOUT-GLOBAL-HANDLERS,
and -on-error command line option.
See <http://clisp.cons.org/impnotes.html#global-handler> and
<http://clisp.cons.org/clisp.html#opt-on-error> for details.

* TRANSLATE-PATHNAME and TRANSLATE-LOGICAL-PATHNAME accept a new keyword
argument :ABSOLUTE which makes them convert their return values to
absolute pathnames.
See <http://clisp.cons.org/impnotes.html#translate-pathname> and
<http://clisp.cons.org/impnotes.html#translate-logpath> for details.

* New function EXT:ABSOLUTE-PATHNAME.
See <http://clisp.cons.org/impnotes.html#absolute-pathname> for details.

* New function EXT:ELASTIC-NEWLINE and new FORMAT directive "~.".
See <http://clisp.cons.org/impnotes.html#elastic-newline>
and <http://clisp.cons.org/impnotes.html#format-dot> for details.
Through this function, CLISP no longer produces spurious blank lines when
a program uses the convention of printing a #\Newline before each line.

* TRACE has a new option :MAX-DEPTH, that is useful to avoid infinite
recursions in the tracer.
See <http://clisp.cons.org/impnotes.html#trace> for details.

* The function LENGTH and a few other sequence functions now signal a
TYPE-ERROR when a circular list has been given as argument.

* Function UPGRADED-COMPLEX-PART-TYPE is now as precise as possible.
See <http://clisp.cons.org/impnotes.html#ucpt> for details.

* In non-interactive batch mode, *ERROR-OUTPUT* now uses the system's
standard error stream, instead of the standard output stream.

* The macros MUFFLE-CERRORS, APPEASE-CERRORS and EXIT-ON-ERROR now treat
CONTINUE restarts which require interactive user intervention like other
restarts. Only non-interactive CONTINUE restarts are silently invoked.

* LOAD :OBSOLETE-ACTION can now also be :COMPILE to automatically
recompile the obsolete *.fas file.
LOAD can now ignore erroneous forms using SKIP and STOP restarts.
See <http://clisp.cons.org/impnotes.html#loadfile> for details.

* References from within macros defined through MACROLET to variables or
functions defined in the lexical environment outside the MACROLET form
now signal an error. Previously, this resulted in undefined behavior.

* The FFI recognizes the c-type declaration (FFI:C-POINTER <c-type>) to
handle references without conversion to/from Lisp structures.
See <http://clisp.cons.org/impnotes.html#c-pointer> for details.

* The FFI variable FFI:*FOREIGN-ENCODING* can now be a multibyte encoding.
The warning "*FOREIGN-ENCODING*: reset to ASCII" at startup is gone.

* New FFI constructor functions FFI:FOREIGN-VARIABLE and FFI:FOREIGN-FUNCTION,
more operators are now exported (FFI:FOREIGN-VALUE, FFI:PARSE-C-TYPE).
See <http://clisp.cons.org/impnotes.html#dffi-make-var>
and <http://clisp.cons.org/impnotes.html#dffi-make-func> for details.

* FFI macro FFI:C-LINES can now be used to fine-tune
initialization and finalization.
See <http://clisp.cons.org/impnotes.html#c-lines> for details.

* New FFI function FFI:CLOSE-FOREIGN-LIBRARY can be used to unload a library.
See <http://clisp.cons.org/impnotes.html#dffi-close-lib> for details.

* New FFI low-level accessor FFI:MEMORY-AS.
See <http://clisp.cons.org/impnotes.html#memory-as> for details.

* Foreign functions and variables can now be documented using the
:DOCUMENTATION option to FFI:DEF-CALL-OUT and FFI:DEF-C-VAR.

* Buffered streams now are suitable for interactive streams. It is no longer
necessary to use :BUFFERED NIL to avoid blocking in various situations.

* Function EXT:READ-BYTE-SEQUENCE takes a new keyword argument :INTERACTIVE.
See <http://clisp.cons.org/impnotes.html#rd-by-seq> for details.

* Methods on GRAY:STREAM-READ-BYTE-SEQUENCE and GRAY:STREAM-WRITE-BYTE-SEQUENCE
now need to accept a second optional argument.

* The possible values of the :WEAK argument of MAKE-HASH-TABLE are changed:
Use :KEY-AND-VALUE instead of :EITHER, :KEY-OR-VALUE instead of :BOTH now.

* The :LIBRARY option argument to EXT:DEF-CALL-OUT and EXT:DEF-C-VAR is now
evaluated (i.e., it can now be a variable) and may take a value of
:DEFAULT and :NEXT in addition to being a string as before.
See <http://clisp.cons.org/impnotes.html#def-c-var> and
<http://clisp.cons.org/impnotes.html#def-call-out> for details.

* New user variable CUSTOM:*PRINT-SYMBOL-PACKAGE-PREFIX-SHORTEST*
allows using the shortest package (nick)name as the symbol prefix.
See <http://clisp.cons.org/impnotes.html#pr-sym-pack-prefix> for details.

* The user commands can now be extended using CUSTOM:*USER-COMMANDS*.
See <http://clisp.cons.org/impnotes.html#user-commands> for details.

* Initialization and finalization of the CLISP process can now be
augmented with CUSTOM:*INIT-HOOKS* and CUSTOM:*FINI-HOOKS*.
See <http://clisp.cons.org/impnotes.html#init-hooks> and
<http://clisp.cons.org/impnotes.html#fini-hooks> for details.

* SET functions (like UNION et al) are now much faster on large lists.

* The second, optional argument of EXT:SPECIAL-VARIABLE-P can no longer be T;
please use (THE-ENVIRONMENT) instead.

* New function EXT:FEATUREP - the run-time version of read-time #+/#-.
See <http://clisp.cons.org/impnotes.html#featurep> for details.

* Bug fixes:
+ The interpreter no longer executes the body of (EVAL-WHEN (COMPILE) ...)
forms.
+ Fixes to internationalized error messages.
+ When an interpreted INITIALIZE-INSTANCE method uses CALL-NEXT-METHOD with
a modified argument list, MAKE-INSTANCE could in some cases initialize
the new object three times instead of just once.
+ Fixed a compiler bug that could lead to incorrect code when a LAMBDA
with SPECIAL-declared optional variables was compiled inline and the
initforms of the optional variables depended on the values of the previous
optional variables.
+ Passing a package as second argument of RENAME-PACKAGE led to an
unjustified error.
+ Passing a displaced vector as argument to REVERSE could lead to an
unjustified error.
+ FRESH-LINE did not work in some situations.
+ Fixed ATANH on complex numbers.
+ The macros EXT:LETF and EXT:LETF* now work correctly on symbol-macros.
+ Fixed a spurious crash of MULTIPLE-VALUE-SETQ in interpreted code.
+ Fixed a crash of (COPY-READTABLE NIL some-readtable).
+ Fixed a crash when using a hash-table as hash-table key.
+ Fixed a crash triggered by the READ-BYTE function on streams with
element type ([UN]SIGNED-BYTE n), 24 < n < 32, on big-endian platforms.
+ Fixed a crash that occurred on glibc platforms when writing Unicode
characters in the range #\U000E0000..#\U000E007F on a stream with an
encoding other than UTF-8.
+ An invalid bignum could be returned by GET-INTERNAL-RUN-TIME on 64-bit
platforms.
+ Third party code walkers can now handle HANDLER-BIND et al.

* Woe32 distribution now comes with a binary driver clisp.exe.
Do not copy it anywhere - create a shortcut to it instead!
Use install.bat to automate shortcut creation.

Modules
-------

* New module matlab interfaces to <http://www.mathworks.com/products/matlab/>
and allows complicated matrix computations.
See <http://clisp.cons.org/impnotes.html#matlab> for details.

* New module rawsock offers low-level socket access.
Thanks to Fred and Don Cohens.
See <http://clisp.cons.org/impnotes.html#rawsock> for details.

* New module zlib interfaces to <http://www.zlib.org> and allows
compression and uncompression of vectors.
See <http://clisp.cons.org/impnotes.html#zlib> for details.

* New module i18n now contains the GNU gettext interface as well as
other functionality for Lisp program internationalization.
See <http://clisp.cons.org/impnotes.html#i18n-mod> for details.

* New module PARI interfaces to <http://pari.math.u-bordeaux.fr/>.
See <http://clisp.cons.org/impnotes.html#pari> for details.

* Module syscalls is significantly expanded.
See <http://clisp.cons.org/impnotes.html#syscalls> for details.

* Module berkeley-db is vastly expanded.
See <http://clisp.cons.org/impnotes.html#berkeley-db> for details.
Added support for Berkeley DB 4.3.

* Modules now have an exit function.
See <http://clisp.cons.org/impnotes.html#modexit> for details.

Portability
-----------

* Heaps and memory images larger than 4 GB are now supported on 64-bit
platforms.

* Support files larger than 2 GB or 4 GB also on Windows.

* Weak pointers now also work on platforms without mmap().

* Weak hash tables now also work on platforms without mmap().

* Dynamic modules now work on woe32 too.

* On most 64-bit platforms, fixnums are now 49 bits wide (including the sign
bit), instead of 33 bits wide.


--
Sam Steingold (http://www.podval.org/~sds) running w2k
<http://www.dhimmi.com/> <http://www.honestreporting.com>
<http://www.openvotingconsortium.org/> <http://www.jihadwatch.org/>
Lisp: it's here to save your butt.

Reply all
Reply to author
Forward
0 new messages