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.