Mail Archives: cygwin-announce/2003/09/18/16:41:10
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 AT alma DOT 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 AT synergy DOT 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 AT dls DOT 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 AT users DOT sourceforge DOT 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 AT ashi DOT footprints DOT 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))
- Raw text -