GNU CLISP 2.31
GNU CLISP 2.31 (2003-09-01) is now available from the usual
distribution sites. GNU CLISP is an ANSI Common Lisp
implementation. 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://ftp2.cons.org/pub/lisp/clisp/,
ftp://ftp.gnu.org/pub/gnu/clisp/
and their mirrors.
SUMMARY
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 microcomputers (OS/2, Windows NT/2000/XP, Windows
95/98/ME, Amiga 500-4000, Acorn RISC PC) as well as on Unix
workstations (Linux, SVR4, Sun4, DEC Alpha OSF, HP-UX, BeOS,
NeXTstep, SGI, AIX, Sun3 and others) and needs only 2 MB of
RAM.
It is Free Software and may be distributed under the terms of
GNU GPL, while it is possible to distribute commercial applications
compiled with GNU CLISP.
The user interface comes in German, English, French, Spanish,
Dutch and Russian.
GNU CLISP includes an interpreter, a compiler, a debugger, a
large subset of CLOS, a foreign language interface and a socket
interface.
An X11 interface is available through CLX, Garnet,
CLUE/CLIO.
GNU CLISP runs Maxima, ACL2 and many other Common Lisp
packages.
NEWS
2.31 (2003-09-01)
Important notes
- All .fas files generated by previous CLISP versions are invalid
and must be recompiled. This is not as bad as it was before: the
invalid files will be ignored and the sources will be loaded
instead of signaling an error unless you set
CUSTOM:LOAD-OBSOLETE-ACTION. See <http://clisp.cons.org/impnotes.html#loadfile>;
for details. - All custom-written external modules must be updated to reflect
changes in the C definitions, e.g. many C types were renamed to a
trailing _t (subr_t, object_initdata_t) and LISPFUN takes an
additional side-effect class (seclass) parameter.
User visible changes
- Added a new module – “fastcgi”: an interface to the FastCGI Web
server CGI-compatible protocol (see http://www.fastcgi.com/) Thanks to
John K. Hinsdale <[email protected]>. - External modules now work on win32 (when used with cygwin or
mingw). See <http://clisp.cons.org/impnotes.html#mod-win32>;
for details. - DIRKEY is now a standard module: use `–with-module=dirkey’
instead of `–with-dir-key’ when configuring. See <http://clisp.cons.org/impnotes.html#dirkey>;
for details. - SYSCALLS is now a standard module: use `–with-module=syscalls
instead of `–with-export-syscalls’ when configuring. See
<http://clisp.cons.org/impnotes.html#syscalls>;
for details. - New module netica interfaces to <http://norsys.com/netica_c_api.htm>;
and allows working with Bayesian belief networks and influence
diagrams. - READ-BYTE-SEQUENCE now accepts :NO-HANG keyword argument.
- LOAD now takes an additional keyword argument :OBSOLETE-ACTION
which specifies what to do with the obsolete .fas files. See
<http://clisp.cons.org/impnotes.html#loadfile>;
for details. - EXT:SPECIAL-VARIABLE-P now accepts a second optional
ENVIRONMENT argument. See <http://clisp.cons.org/impnotes.html#spe-var-p>;
for details. - You can now set socket options using new function
SOCKET:SOCKET-OPTIONS. See <http://clisp.cons.org/impnotes.html#so-opt>;
for details. Suggested by Dave Richards <[email protected]>. - SOCKET:SOCKET-STATUS now distinguishes between :EOF and :INPUT.
Also, it does not have to cons up a fresh list even for multiple
streams. See <http://clisp.cons.org/impnotes.html#so-status>;
for details. - CLISP character set now uses Unicode 3.2. See <http://clisp.cons.org/impnotes.html#characters>;
for details. - DIRECTORY now accepts a new keyword argument :IF-DOES-NOT-EXIST
which controls treatment of links pointing to non-existent files.
It defaults to :DISCARD which is fully backward compatible. See
<http://clisp.cons.org/impnotes.html#dir>;
for details. - DELETE-FILE no longer calls TRUENAME on its argument, which
enables you to delete symbolic links. This is an incompatible
change. You can get the old behavior by doing (DELETE-FILE
(TRUENAME path)). See <http://clisp.cons.org/impnotes.html#del-file>;
for details. - DRIBBLE now works by redefining TERMINAL-IO instead of
a host of i/o variables. This allows DRIBBLE to be started and
stopped in different break loops. See <http://clisp.cons.org/impnotes.html#dribble>;
for details. - Weak hash tables can now remove key/value pairs when either or
both are garbage collected. See <http://clisp.cons.org/impnotes.html#make-hash>;
for details. - You can use (SETF WEAK-POINTER-VALUE) to change the object to
which the given weak pointer point to. See <http://clisp.cons.org/impnotes.html#weak>;
for details. - New macro EXT:DEFINE-HASH-TABLE-TEST allows user-defined hash
table tests. See <http://clisp.cons.org/impnotes.html#defhash>;
for details. - ANSI CL compliance issues:
- MAPC, MAPCAR, MAPCAN, MAPL, MAPLIST, MAPCON now require their
list arguments to be proper lists; - TAILP uses EQL, not EQ, to compare the sublists;
- LOOP was fixed in many many ways, including
- using ATOM as the end test for ON iteration,
- returning the SUMs (and alike) of the specified type (if
any), - checking that the THEREIS return value is not shadowed,
- treating keyword IT in an inappropriate place as a
variable, - signaling SOURCE-PROGRAM-ERROR errors at macroexpansion
time, - not requiring the package argument for symbol iteration,
- making local variables accessible in the INITIALLY
clauses, - initializing accumulation variables after iteration variables
to avoid shadowing, - using forward consing for APPEND/NCONC because
REVAPPEND/NRECONC drop the last atom in dotted lists, - checking for duplicate variables in iteration clauses;
- DOCUMENTATION is now a generic function;
- implemented CHANGE-CLASS, UPDATE-INSTANCE-FOR-DIFFERENT-CLASS,
MAKE-INSTANCES-OBSOLETE, UPDATE-INSTANCE-FOR-REDEFINED-CLASS, and
ENSURE-GENERIC-FUNCTION; - DEFCLASS no longer requires that direct superclasses already
exist; - sequence functions (MAP, LENGTH and such) no longer accept
dotted lists and treat NULL as LIST of length 0 and CONS as LIST of
positive length; - COERCE accepts CLOS class object as a type-spec (second
argument) and coerces FLOAT to COMPLEX by returning a COMPLEX
number; - DEFSTRUCT uses the slot name as is for the accessor when
:CONC-NAME is NIL (i.e., does not intern the name in
PACKAGE), and does not bind slot names in the arglist of
keyword constructors; - MAPCAN and MAPCON now correctly handle functions returning
ATOMs; - removed macro definition from GENERIC-FUNCTION;
- MAPC, MAPCAR, MAPCAN, MAPL, MAPLIST, MAPCON now require their
- APPEND, COPY-ALIST, REVAPPEND, NRECONC, PAIRLIS, GET, GETF,
REMPROP, GET-PROPERTIES no longer accept dotted lists;- implemented arrays with ARRAY-ELEMENT-TYPE NIL;
- implemented ANSI CL Issues
<CONDITION-RESTARTS:PERMIT-ASSOCIATION>,
<DEBUGGER-HOOK-VS-BREAK:CLARIFY>,
<DOCUMENTATION-FUNCTION-BUGS:FIX>,
<EXTERNAL-FORMAT-FOR-EVERY-FILE-CONNECTION:MINIMUM>,
<IMPORT-SETF-SYMBOL-PACKAGE>,
<SETF-FIND-CLASS:ALLOW-NIL>,
<SUBTYPEP-ENVIRONMENT:ADD-ARG>,
<THE-VALUES:RETURN-NUMBER-RECEIVED>,
<ADJUST-ARRAY-NOT-ADJUSTABLE:IMPLICIT-COPY>; - EQUALP on HASH-TABLEs now correctly descends the
structure; - macro definitions now respect the lexical environment;
- more thorough lambda list matching check;
- DEFINE-CONDITION now return the condition name;
- a character is now accepted as a package designator. Thanks to
Paul F. Dietz <[email protected]> and his ANSI
compliance suite, which helped detect some of these
deficiencies.
- FUNCTION-LAMBDA-EXPRESSION now always returns the correct
function name. See <http://clisp.cons.org/impnotes.html#fle>;
for details. - CONSTANTP now detects many more constant forms. See
<http://clisp.cons.org/impnotes.html#constantp>;
for details. - The code walker has now a public interface: EXT:EXPAND-FORM.
See <http://clisp.cons.org/impnotes.html#code-walk>;
for details. - Renamed macro SPACE to EXT:TIMES because SPACE is an ANSI
Common Lisp symbol without a macro definition. See <http://clisp.cons.org/impnotes.html#time>;
for details. - New function EXT:XOR checks that exactly one of its arguments
is non-NIL. See <http://clisp.cons.org/impnotes.html#xor>;
for details. - New function EXT:MAKE-STREAM creates a stream out of a file
descriptor and facilitates CGI scripting. See <http://clisp.cons.org/impnotes.html#make-stream>;
and <http://clisp.cons.org/impnotes.html#bin-stdio>;
for details. - New function EXT:MODULE-INFO provides information about the
CLISP modules that comprise the running image. See <http://clisp.cons.org/impnotes.html#modinfo>;
for details. - New generic function CLOS:CLASS-PROTOTYPE from MOP. See
<http://clisp.cons.org/impnotes.html#class-proto>;
for details. - New generic functions CLOS:CLASS-FINALIZED-P and
CLOS:FINALIZE-INHERITANCE from MOP. See <http://clisp.cons.org/impnotes.html#def-class>;
for details. - New FFI functionality:
- functions FFI:FOREIGN-ALLOCATE and FFI:FOREIGN-FREE and macros
FFI:ALLOCATE-DEEP and FFI:ALLOCATE-SHALLOW permit heap allocation;
see <http://clisp.cons.org/impnotes.html#foreign-heap>;
for details; - functions FFI:FOREIGN-ADDRESS-UNSIGNED and
FFI:UNSIGNED-FOREIGN-ADDRESS, see <http://clisp.cons.org/impnotes.html#faddr-u>;
for details; - function FFI:FOREIGN-ADDRESS, see <http://clisp.cons.org/impnotes.html#faddr>;
for details; - functions FFI:FOREIGN-POINTER and (SETF FFI:FOREIGN-POINTER),
see <http://clisp.cons.org/impnotes.html#fptr>;
for details; - macros FFI:C-VAR-ADDRESS, FFI:C-VAR-OBJECT and FFI:OFFSET, see
<http://clisp.cons.org/impnotes.html#offset>;
and <http://clisp.cons.org/impnotes.html#c-var-addr>;; - function (SETF FFI:VALIDP) invalidates foreign objects see
<http://clisp.cons.org/impnotes.html#validp>;
for details; - macros FFI:WITH-FOREIGN-STRING, and macro FFI:WITH-C-PLACE, see
<http://clisp.cons.org/impnotes.html#foreign-stack-string>;
and <http://clisp.cons.org/impnotes.html#with-c-place>;.
Thanks to Jorg Hohle <[email protected]>. - FFI:DEF-CALL-OUT and FFI:DEF-C-VAR now accept a :LIBRARY option
which allows you to specify the dynamic library which contains the
object. See <http://clisp.cons.org/impnotes.html#def-call-out>;
and <http://clisp.cons.org/impnotes.html#def-c-var>;. - Introduced a bit of polymorphism: FFI:C-POINTER can be NIL and
will be treated as NULL; NULL return value of type FFI:C-POINTER is
returned as NIL. See <http://clisp.cons.org/impnotes.html#c-pointer>;. - You can now map between numeric and symbolic C enum values
using functions FFI:ENUM-FROM-VALUE and FFI:ENUM-TO-VALUE. See
<http://clisp.cons.org/impnotes.html#def-c-enum>;.
- functions FFI:FOREIGN-ALLOCATE and FFI:FOREIGN-FREE and macros
- FFI does not output extern variable and function declarations
unless you set FFI:OUTPUT-C-VARIABLES and/or
FFI:OUTPUT-C-FUNCTIONS to T. Please use FFI:C-LINES to
include the appropriate headers instead. See <http://clisp.cons.org/impnotes.html#ffi-extern-output>;
for details. - Regexp module functions now support more options, e.g.,
:EXTENDED to use extended regular expressions, and do not rely on
FFI. In particular, REGEXP:REGEXP-COMPILE now accepts keyword and
not optional arguments (this is not backwards compatible). When the
system library provides a regexp implementation, it is used instead
of the GNU regexp distributed with CLISP. The number of
subexpressions is now unlimited (the limit was 10). See
<http://clisp.cons.org/impnotes.html#regexp>;
for details. - Unified modules postgresql632 and postgresql642 into
postgresql. The postgresql module works with PostgreSQL 6 and 7
now. - Removed obsolete module linuxlibc5 and renamed module
linuxlibc6 to glibc. - New module: bindings/win32 (highly incomplete, patches are
welcome). - The BACKQUOTE reader has been reimplemented from scratch by Kaz
Kylheku <[email protected]>. - New function EXT:MAKE-XTERM-IO-STREAM creates an input-output
stream that uses a separate X terminal. UNIX platforms only. See
<http://clisp.cons.org/impnotes.html#separate-io>;
for details. - Fixed a bug in PEEK-CHAR with non-NIL peek-type on
ECHO-STREAMS. - Fixed a bug in FILE-POSITION after UNREAD-CHAR (or
PEEK-CHAR). - Fixed a bug in bit operations on multi-dimensional arrays.
- CLISP/MIT-CLX now compiles CLOCC CLUE/CLIO. See <http://clocc.sourceforge.net/clocc/src/gui/clue/>;
and <http://clisp.cons.org/impnotes.html#included-modules>;. - CLISP/NEW-CLX on win32 with Cygwin X server compiles garnet.
See <http://article.gmane.org/gmane.lisp.clisp.devel/10093>;. - Command line interface: allow multiple -x options. New options
-repl <http://clisp.cons.org/clisp.html#opt-repl>;
and -v (–verbose) <http://clisp.cons.org/clisp.html#opt-verbose>;.
—
Sam Steingold