CLISP Changelog

What's new in CLISP 2.49

Jul 8, 2010
  • User visible changes:
  • New command line option -disable-readline lets working around bugs and incompatibilities between readline CLISP was built against and the library actually installed. See for details.
  • FFI:OPEN-FOREIGN-LIBRARY now accepts the :REQUIRE argument. See for details.
  • New user variable CUSTOM:*USER-LIB-DIRECTORY* is respected by REQUIRE and used by "clisp-link install". Dynamic modules are now the default build option. See and for details.
  • Function RENAME-FILE now accepts :IF-EXISTS argument which determines the action when the destination exists, unless, of course, *ANSI* is T. See for details.
  • The replacement value entered by the user in STORE-VALUE and USE-VALUE restarts is now EVALuated.
  • The old user variable CUSTOM:*PRINT-CLOSURE* now controls interpreted closure output too (RFE#3001956). This is a tricky feature, read up! See .
  • Module readline now supports readline 6.1. (Older versions are, of course, still supported). See for details.
  • Module pcre now supports pcre 8.01. (Older versions are, of course, still supported). See for details.
  • Module libsvm does not come with the upstream sources anymore, install locally and pass --with-libsvm-prefix to the top-level configure instead. All upstream versions up to 2.91 are supported. See for details.
  • Module berkeley-db now supports Berkeley-DB 4.8. (Older versions are, of course, still supported). See for details.
  • Module postgresql now supports PostgreSQL 8.4. (Older versions are, of course, still supported). See for details.
  • Module pari has been updated to support both 64 & 32 bit platforms with and without GMP. See for details.
  • New functions OS:VERSION-COMPARE et al call strverscmp. See for details.
  • Bug fixes:
  • Do not eliminate function calls which are advertised to have exceptional situation in unsafe code (bug#2868166).
  • Fix an internal error in DECLAIM on bad OPTIMIZE quality (bug#2868147).
  • CLEAR-INPUT now clears the EOF condition on file streams (bug#2902716).
  • When quitting on a signal, never enter the debugger (bug#2795278).
  • Respect :FULL T in DIRECTORY :WILD-INFERIORS (bug#3009966).
  • Handle TWO-WAY-STREAM and ECHO-STREAM correctly by (SETF STREAM-EXTERNAL-FORMAT) (bug#3020933).
  • Fix unbuffered output pipe stream initialization (bug#3024887).
  • ANSI compliance:
  • Implement the ANSI issue COMPILER-DIAGNOSTICS:USE-HANDLER: use the CL Condition System for compiler diagnostics.
  • STREAM-ELEMENT-TYPE on empty CONCATENATED-STREAMs now returns NIL because nothing can be read from such streams (bug#3014921).

New in CLISP 2.48 (Oct 16, 2009)

  • Multiple threads of execution are now experimentally supported
  • (not ready for prime time yet).
  • Thanks to Vladimir Tzankov .
  • See for details.
  • Module libsvm has been upgraded to the upstream version 2.89.
  • See for details.
  • Module Berkeley-DB now supports Berkeley DB 4.7.
  • (older versions 4.* are, of course, still supported).
  • See for details.
  • Module readline now supports readline 6.0.
  • (older versions 5.* are, of course, still supported).
  • See for details.
  • Passing :EXECUTABLE 0 to EXT:SAVEINITMEM results in an executable
  • image which delegates processing of all the usual CLISP command line
  • options to the :INIT-FUNCTION.
  • See for details.
  • Driver clisp accepts "-b" to print the installation directory.
  • See for details.
  • Add file clisp.m4 so that the packages which use CLISP can check
  • whether it is properly installed and has the required version.
  • POSIX:COPY-FILE now accepts :METHOD :HARDLINK-OR-COPY.
  • See for details.
  • New function POSIX:WAIT calls waitpid or wait4.
  • See for details.
  • New function EXT:TRIM-IF removes leading and trailing matches.
  • See for details.
  • New user command "LocalSymbols" (abbreviated ":ls").
  • See
  • for details.
  • Commands "add" and "create" replace "add-module-set", "add-module-sets" and
  • "create-module-set" in clisp-link.
  • See for details.
  • Bug fixes:
  • Better support of :START and :END arguments in NEW-CLX. [ 2159172 ]
  • Fix LOAD-LOGICAL-PATHNAME-TRANSLATIONS when *LOAD-PATHS* contains
  • wild pathnames (introduced in 2.47). [ 2198109 ]
  • Module NEW-CLX now has the XLIB:QUEUE-EVENT function,
  • implemented by Philippe Brochard .
  • Extend the domain of LOG to larger BIGNUMs and RATIOs. [ 1007358 ]
  • Avoid a segfault on (EXPT ). [ 2807311 ]
  • Fix interaction of finalizers and weak objects. [ 1472478 ]
  • ANSI compliance:
  • Implement the ANSI (IGNORE #'FUNCTION) declaration.

New in CLISP 2.47 (Oct 24, 2008)

  • New module DBUS interfaces to the D-Bus message bus system.
  • New function EXT:PROBE-PATHNAME can figure out whether the existing pathname refers to a file or a directory.
  • New function EXT:CANONICALIZE lets you easily canonicalize a value before processing it.
  • New user variable CUSTOM:*REOPEN-OPEN-FILE* controls CLISP behavior when opening an already open file.
  • New SETFable function OS:FILE-SIZE extends FILE-LENGTH to pathname designators and lets you change file size.
  • New function OS:USER-SHELLS returns the list of legal user shells.
  • New SETFable functions OS:HOSTID and OS:DOMAINNAME.
  • Module readline has been upgraded to readline 5.2 (older versions 5.0 and 5.1 are, of course, still supported).
  • LOAD now uses DIRECTORY only for wild *LOAD-PATHS* components, thus speeding up the most common cases and preventing the denial-of-service attack whereas CLISP would not start if a file with a name incompatible with *PATHNAME-ENCODING* is present in USER-HOMEDIR-PATHNAME.
  • ROOM now prints some GC statistics and returns the same values as GC.
  • New user variable CUSTOM:*HTTP-LOG-STREAM* controls EXT:OPEN-HTTP logging.
  • Bug fixes:
  • Comparison of floats and rationals never underflows. [ 2014262 ]
  • When failing to convert a huge LONG-FLOAT to a RATIONAL, signal an ARITHMETIC-ERROR instead of blowing the stack. [ 2015118 ]
  • Restored TYPECODES g++ compilation [ 2015118 ], which allowed fixing a few GC-safety bugs.
  • Fixed a segfault when signaling some UNBOUND-VARIABLE errors in some interpreted code on MacOS X (introduced in 2.46). [ 2020784 ] Thanks to Vladimir Tzankov .
  • Fixed input after switching a :DOS stream to binary. [ 2022362 ]
  • Support circular objects in EQUAL and EQUALP hash-tables. [ 2029069 ]
  • Avoid C namespace pollution. [ 2146126 ]
  • Fix timeout precision in NEW-CLX. [ 2188102 ]
  • ANSI compliance:
  • The sets of declaration and type names are disjoint.
  • FLET, LABELS and MACROLET respect declarations.

New in CLISP 2.46 (Jul 3, 2008)

  • CLISP built natively on 64-bit platforms (i.e., with 64-bit pointers)now has :WORD-SIZE=64 in *FEATURES*.
  • Module syscalls now offers OS:ERRNO and OS:STRERROR (for the sake of FFI modules).
  • Modules MIT-CLX and NEW-CLX export a new macro XLIB:WITH-OPEN-DISPLAY.
  • Module netica has been upgraded to the Netica C API version 3.25 (from 2.15).
  • Module libsvm has been upgraded to the upstream version 2.86.
  • Work around the absence of tgamma() on solaris. [ 1966375 ]Avoid a rare segfault on SIGHUP. [ 1956715 ]Improve module portability to systems with non-GNU make. [ 1970141 ]Fix GRAY:STREAM-READ-SEQUENCE and GRAY:STREAM-WRITE-SEQUENCE. [ 1975798 ]Fix the remaining bugs in special bindings in evaluated code on
  • TYPECODES (64-bit) platforms.Fix SOCKET:SOCKET-CONNECT with timeout to a dead port. [ 2007052 ]

New in CLISP 2.45 (May 16, 2008)

  • All .fas files generated by previous CLISP versions are invalid and must be recompiled. This is because the Just-In-Time Compiled code is kept with the closures. Set CUSTOM:*LOAD-OBSOLETE-ACTIONto :COMPILE to automate this. See for details.
  • The top-level configure option --build has been replaced by --cbc (Configure/Build/Check) to avoid conflict with the standard autoconf option.
  • Experimental Just-In-Time Compilation of byte-compiled closures is now done using GNU lightning (this is a configure-time option). Thanks to Yann Dauphin .
  • New command-line option -lp adds directories to *LOAD-PATHS*. See for details.
  • New function FFI:OPEN-FOREIGN-LIBRARY allows pre-opening of shared libraries. See for details.
  • New macro EXT:COMPILE-TIME-VALUE allows computing values at file compilation. See for details.
  • New function FFI:FOREIGN-POINTER-INFO allows some introspection. See for details.
  • Versioned library symbols are now accessible via the :VERSION argument of DEF-CALL-OUT and DEF-C-VAR. Thanks to Kaz Kylheku . See for details.
  • New functions GRAY:STREAM-READ-SEQUENCE and GRAY:STREAM-WRITE-SEQUENCE have been added for portability reasons. Suggested by Anton Vodonosov . See for details.
  • New user variable CUSTOM:*SUPPRESS-SIMILAR-CONSTANT-REDEFINITION-WARNINGcontrols whether the redefinition warning is issues when the new constant value is visually similar to the old one. See for details.
  • REPL commands can now accept arguments. See for details.
  • Updated the postgresql module to PostgreSQL 8.3. See for details.
  • Module syscalls now interfaces to (for the sake of FFI modules). See for details. There are others additions there also, but they are too numerous to be enumerated here.
  • Fix handling of quoted objects by READ-PRESERVING-WHITESPACE.
  • Fix argument handling in NEW-CLX XLIB:QUERY-COLORS. [ 1931101 ]
  • Fix compilation on systems not supporting returning void. [ 1924506 ]
  • Fix TANH floating point overflow for large floats. [ 1683394 ]
  • Avoid extra aggressive bignum overflow reporting in READ. [ 1928735 ]
  • Improved floating point number formatting. [ 1790496, 1928759 ]
  • COMPILE no longer discards MACRO doc strings. [ 1936255 ]
  • Improved accuracy of LOG on complex numbers. [ 1934968 ]
  • Fix COERCE for compound float result-types. [ 1942246 ]
  • Fix $http_proxy parsing. [ 1959436 ]
  • Fix LISTEN on buffered streams when the last character was CRLF. Cross-compilation process has been restored to its former glory, thanks to the valiant and persistent testing by Vladimir Volovich .

New in CLISP 2.44.1 (Feb 25, 2008)

  • Add a workaround against a gcc 4.2.x bug.
  • Fix error in compilation of floatparam.c during configuration with gcc 4.3 snapshots.

New in CLISP 2.44 (Feb 4, 2008)

  • CLISP does not come with GNU libffcall anymore.
  • CLOS now issues warnings of type CLOS:CLOS-WARNING.
  • The AFFI (simple ffi, originally for Amiga) code has been removed.
  • Speed up list and sequence functions when :TEST is EQ, EQL, EQUAL or EQUALP.
  • Rename EXT:DELETE-DIR, EXT:MAKE-DIR, and EXT:RENAME-DIR to EXT:DELETE-DIRECTORY, EXT:MAKE-DIRECTORY, and EXT:RENAME-DIRECTORY, respectively, for consistency with EXT:PROBE-DIRECTORY, EXT:DEFAULT-DIRECTORY and CL:PATHNAME-DIRECTORY. The old names are still available, but deprecated.
  • The :VERBOSE argument to SAVEINITMEM defaults to a new user variable *SAVEINITMEM-VERBOSE*, intial value T.
  • Bug fixes:
  • Fix FRESH-LINE at the end of a line containing only TABs.
  • PPRINT-LOGICAL-BLOCK no longer ignores *PRINT-PPRINT-DISPATCH-TABLE*.BYTE is now a full-fledged type.
  • Fix linux:dirent definition in the bindings/glibc module.
  • Symbolic links into non-existent directories can now be deleted.
  • DIRECTORY :FULL on directories now returns the same information as on files.
  • CLISP no longer hangs at the end of a script coming via a pipe ("clisp < script.lisp" or "cat script | clisp").
  • When *CURRENT-LANGUAGE* is incompatible with *TERMINAL-ENCODING*, CLISP no longer goes into an infinite recursion trying to print various help messages.
  • Fix the "Quit" debugger command.
  • Repeated terminating signals kill CLISP instantly with the correct exit code.
  • Stack inspection is now safer.
  • Errors in the RC-file and init files are now handled properly.
  • Avoid the growth of the restart set with each image save.
  • Handle foreign functions coming from the old image which cannot be validated.
  • Fix signal code in bindings/glibc/linux.lisp.