ECL stands for Embeddable Common-Lisp. The ECL project is an effort to
modernize Giusseppe Attardi's ECL environment to produce an
implementation of the Common-Lisp language which complies to the ANSI
X3J13 definition of the language.
ECL is currently hosted at SourceForge. The home page of the project
is http://ecls.sourceforge.net, and in it you will find source code
releases, a CVS tree and an up to date documentation.
Notes about ECLS 0.6
This release adds two new platforms
- Mac OSX (statically linked)
- RedHat 7.3 on Intel
to the list of supported ones
- Debian Linux on Intel
- Debian Linux on PowerPC
- FreeBSD 4.x on Intel
- Cygwin on Microsoft Windows 2000
* Supported platforms:
- ECL now compiles and runs in static mode under MacOSX.
* Errors fixed:
- Code for handling :IMPORT-FROM in DEFPACKAGE was bogus
- The arguments of GENSYM should not be remembered by ECLS. The
current behaviour was wrong:
> (gensym "F")
* System design:
- Function SI:NANI has been removed. Its purpose was to provide an
object which could not be printed or readed so that it could be
used to mark unbound slots in classes. Now the function SI:UNBOUND
performs the same task.
- Mathematical functions which deal with matisas, exponents, etc,
now make use of the ISO-C99 facilities which are almost
- Global function pointer output_ch_fun and read_ch_fun
disappear. Now the differences between ordinary streams and CLOS
streams are handled in file.d. Optimizations for synonym streams
also disappear from read.d and print.d.
- All information used by FORMAT is kept in stack-allocated
structures. Now FORMAT is reentrant and can be safely called from
- Most symbols belonging to the LISP package and to the C core, are
kept in a single array, "cl_symbols". The translator "dpp" and the
routine SI::MANGLE-NAME, output the right name for any symbol
which is in this array.
- ECL relies fully on the Boehm-Weiser garbage collector
(v. 6.1). The old garbage collector is known to reclaim too much
data, resulting in heap corruption. Help is welcome on this field.
- The headers of the Boehm-Weiser garbage collector are installed
together with ECL.
* Visible changes and ANSI compatibility:
- New configuration flag --with-clos-streams, enables the user to
define CLOS objects which behave as lisp streams. Such object must
have the following methods defined: STREAM-INPUT-P,
STREAM-OUTPUT-P, STREAM-READ-CHAR, STREAM-UNREAD-CHAR,
STREAM-LISTEN, STREAM-CLEAR-INPUT, STREAM-WRITE-CHAR,
STREAM-CLEAR-OUTPUT, STREAM-FORCE-OUTPUT, STREAM-CLOSE.
- LOAD accepts now a stream as input parameter. However, in this
case it only tolerates lisp source files, not compiled files or
libraries. For example, (LOAD (OPEN "foo.lsp")) is equivalent
to (LOAD "foo.lsp").
- ECL now uses a hashtable to store objects when *PRINT-CIRCLE* is
on. This hashtable is not cleared when calling PRINT-OBJECT, so
that circularities are also detected inside these methods.
- *PRINT-CIRCLE* defaults to NIL.
please check this:
(set-syntax-from-char #\] #\) ) ; => T
(set-syntax-from-char #\[ #\( ) ; => T
[+ 3 2] ;ncs => 5
> - Mac OSX (statically linked)
> - RedHat 7.3 on Intel
> - Debian Linux on Intel
> - Debian Linux on PowerPC
> - FreeBSD 4.x on Intel
> - Cygwin on Microsoft Windows 2000
In case you care about eventually supporting Sun Solaris (5.8) on Sparc,
here is the error I got in the build:
gcc -c -I../h -I/var/rtmp/cadet/ecl-0.6/src/c -I/var/rtmp/cadet/ecl-0.6/src/h -I/var/rtmp/cadet/ecl-0.6/src/gc/include -g -O2 -Dsun4sol2 -o main.o main.c
In file included from /var/rtmp/cadet/ecl-0.6/src/h/ecl.h:25,
/var/rtmp/cadet/ecl-0.6/src/h/object.h:227: parse error before `u_int8_t'
/var/rtmp/cadet/ecl-0.6/src/h/object.h:227: warning: no semicolon at end of struct or union
/var/rtmp/cadet/ecl-0.6/src/h/object.h:233: parse error before `}'
/var/rtmp/cadet/ecl-0.6/src/h/object.h:242: field `self' has incomplete type
/var/rtmp/cadet/ecl-0.6/src/h/object.h:256: field `self' has incomplete type
*** Error code 1
make: Fatal error: Command failed for target `main.o'
Current working directory /var/rtmp/cadet/ecl-0.6/build/c
*** Error code 1
make: Fatal error: Command failed for target `libecl.a'
Current working directory /var/rtmp/cadet/ecl-0.6/build
*** Error code 1
make: Fatal error: Command failed for target `all'
next I'll try OS X and Linux.