[Ecls-list] [ANN] ECLS 0.4

Juan Jose Garcia Ripoll worm at arrakis.es
Sat Sep 29 07:19:02 UTC 2001

Announcement of ECLS v0.4

ECLS stands for Embeddable Common-Lisp "Spain", and I usually read it
as "e-klos". It is a an implementation of the Common-Lisp language
which aims to comply to the ANSI X3J13 definition of the language.

ECLS 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.4

This release represents a major improvement over previous ones in
the number of supported platforms:

	- Debian Linux on Intel
	- Debian Linux on PowerPC
	- FreeBSD 4.x on Intel
	- Cygwin on Microsoft Windows 2000

Besides, the code has been revised and porting should now be easier.

ECLS 0.4

* Errors fixed:

  - Fixnum product would overflow: (* 65536 32768) => negative number.

  - Bit fiddling operations with negative fixnums now work (i.e.

  - When a PRINT-OBJECT method prints a circular structure which is itself
    in another circular structure, the stack that keeps temporary data
    may get deleted.

  - Format clause "~<" now accepts any number of text segments.

  - Format clause "~E" should not add spurious zeros past the decimal
    dot. I.e. (format nil "~13,6,2,7E" 3.14159) should output "
    3141590.E-06", not "3141590.0E-06". Similar problem happened to
    "~F", which added a traling zero even when number of decimal
    positions was specified as zero.

* System design and portability:

  - Ported to Debian Linux PPC and Cygwin.

  - Small changes allow a static build of the executable in platforms
    where either dlopen() does not work, or ld does not allow
    undefined symbols in libraries.

  - Remove unportable code of the type "va_list d = cs".

  - Simplify gathering of &rest and &key arguments in compiled code.

  - Make the interpreter stack public, with variables and functions
    prefixed with "cl_stack*".

  - Remove the Invocation History Stack, and implement it as a "linked
    list" of frame records on top of the interpreter stack. This
    avoids previous size limitations.

  - Compile code onto the interpreter stack instead of using a stack
    of its own.

  - Use the interpreter stack to simplify the implementations of the
    printer and of the formater.

* Visible changes and ANSI compatibility:

  - MAKE-PATHNAME now accepts all combinations denoted by ANSI. Namely,
    (MAKE-PATHNAME :directory :wild), etc.

  - :UNSPECIFIC is only allowed in pathname's version and in a logical
    pathname's device.

  - MSDOS style namestrings, such as "c:/my/path/to/this/file.txt" and
    "//c/my/path/to/this/file.txt" finally work. Beware that these
    paths are also allowed under Unix, even though they cause errors
    when trying to access files. Besides (EQUALP #P"c:/foo/file.txt"
    #P"//c/path/file.txt") => NIL

  - (DECLARE (OPTIMIZE DEBUG)) is ignored, but no warning is printed.


More information about the ecl-devel mailing list