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 implemented: 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. See <http://clisp.cons.org/impnotes.html#netica> 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 <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; + 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>. * 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>. To update your installation, click on the "Install Cygwin now" link on the http://cygwin.com/ web page. This downloads setup.exe to your system. Then, run setup and answer all of the questions. -- Sam Steingold (http://www.podval.org/~sds) running w2k <http://www.camera.org> <http://www.iris.org.il> <http://www.memri.org/> <http://www.mideasttruth.com/> <http://www.honestreporting.com> (let ((a "(let ((a %c%s%c)) (format a 34 a 34))")) (format a 34 a 34)) -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/