new package: clisp-2.31-2

Sam Steingold
Thu Sep 18 20:40:00 GMT 2003

CLISP is an ANSI Common Lisp implementation.
Common Lisp is a high-level, general-purpose programming language.

CLISP is a new cygwin package (even though it has been running under
cygwin for years).

2.31 is a major recent release, with many bugs fixed and new features

User visible changes

* Added a new module - "fastcgi": an interface to the FastCGI
  Web server CGI-compatible protocol (see
  Thanks to John K. Hinsdale <>.

* External modules now work on win32 (when used with cygwin or mingw).
  See <> for details.

* DIRKEY is now a standard module: use `--with-module=dirkey'
  instead of `--with-dir-key' when configuring.
  See <> for details.

* SYSCALLS is now a standard module: use `--with-module=syscalls
  instead of `--with-export-syscalls' when configuring.
  See <> for details.

* New module netica interfaces to <>
  and allows working with Bayesian belief networks and influence diagrams.
  See <> for details.

* 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 <> for details.

* EXT:SPECIAL-VARIABLE-P now accepts a second optional ENVIRONMENT argument.
  See <> for details.

* You can now set socket options using new function SOCKET:SOCKET-OPTIONS.
  See <> for details.
  Suggested by Dave Richards <>.

* 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 <> for details.

* CLISP character set now uses Unicode 3.2.
  See <> 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 <> 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 <> 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 <> for details.

* Weak hash tables can now remove key/value pairs when either or both
  are garbage collected.
  See <> for details.

* You can use (SETF WEAK-POINTER-VALUE) to change the object to which
  the given weak pointer point to.
  See <> for details.

* New macro EXT:DEFINE-HASH-TABLE-TEST allows user-defined hash table tests.
  See <> 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;
  + 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;
    REMPROP, GET-PROPERTIES no longer accept dotted lists;
  + implemented arrays with ARRAY-ELEMENT-TYPE NIL;
  + 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 <> and his ANSI compliance
  suite, which helped detect some of these deficiencies.

* FUNCTION-LAMBDA-EXPRESSION now always returns the correct function name.
  See <> for details.

* CONSTANTP now detects many more constant forms.
  See <> for details.

* The code walker has now a public interface: EXT:EXPAND-FORM.
  See <> for details.

* Renamed macro SPACE to EXT:TIMES because SPACE is an ANSI Common Lisp
  symbol without a macro definition.
  See <> for details.

* New function EXT:XOR checks that exactly one of its arguments is non-NIL.
  See <> for details.

* New function EXT:MAKE-STREAM creates a stream out of a file descriptor
  and facilitates CGI scripting.
  See <> and
  <> for details.

* New function EXT:MODULE-INFO provides information about the CLISP
  modules that comprise the running image.
  See <> for details.

* New generic function CLOS:CLASS-PROTOTYPE from MOP.
  See <> for details.

* New generic functions CLOS:CLASS-FINALIZED-P and
  See <> 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 <> for details;
    see <> for details;
    see <> for details;
    see <> for details;
    see <> and
  + function (SETF FFI:VALIDP) invalidates foreign objects
    see <> for details;
    see <> and
  Thanks to Jorg Hohle <>.
  + 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 <> and
  + 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 <>.
  + You can now map between numeric and symbolic C enum values using
    See <>.

* FFI does not output extern variable and function declarations unless
  Please use FFI:C-LINES to include the appropriate headers instead.
  See <> 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 <> 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 <>.

* New function EXT:MAKE-XTERM-IO-STREAM creates an input-output stream
  that uses a separate X terminal.  UNIX platforms only.
  See <> 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.

  See <> and

* CLISP/NEW-CLX on win32 with Cygwin X server compiles garnet.
  See <>.

* Command line interface: allow multiple -x options.
  New options -repl <>
  and -v (--verbose) <>.

To update your installation, click on the "Install Cygwin now" link on
the web page.  This downloads setup.exe to your
system.  Then, run setup and answer all of the questions.

Sam Steingold ( running w2k
<> <> <>
<> <>
(let ((a "(let ((a %c%s%c)) (format a 34 a 34))")) (format a 34 a 34))

More information about the Cygwin-announce mailing list