new package: clisp-2.31-2

Sam Steingold sds@gnu.org
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
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 <hin@alma.com>.

* 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 <dave@synergy.org>.

* 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 <dietz@dls.net> 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 <hoehle@users.sourceforge.net>.
  + 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 <kaz@ashi.footprints.net>.

* 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))



More information about the Cygwin-announce mailing list