[Ecls-list] [ANN] ECLS 0.3

Juan Jose Garcia Ripoll worm at arrakis.es
Tue Jul 31 20:11:21 UTC 2001

Announcement of ECLS v0.3

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.3

This release represents a major improvement over previous ones in
two aspects:

  - All special forms are implemented both in the compiler and in the
    interpreter. Handling of toplevel forms has been thoroughly fixed.

  - Loading of native code is handled with the "dlopen" routine, which
    means that ECLS should be easier to port. As usual, this may imply
    bugs which have not yet been discovered.

Changes in ECLS 0.3

* Errors fixed:

  - The dynamic linker in eval.d (link_call) truncated addresses
    larger than MOST_POSITIVE_FIXNUM.

  - The routine that outputs addresses as hexadecimal numbers, and
    which is used in print-unreadable, would only output the first

  - Make sure that the proclamations in Gabriel's benchmark are
    evaluated at compile time, too.

  - Fix the native compiler and the bytecodes compiler so that when
    they finds LOCALLY, MACROLET or SYMBOL-MACROLET at the top level,
    it processes their bodies as top level forms as well. For
    instance, this now works:

* Add name mangling to ECLS:

  - In the preprocessed files (*.d) @package::symbol can be used to
    refer to a lisp function, while @'package::symbol can be used to
    refer to a lisp symbol. The preprocessor translates these names
    into valid C names.

  - Function SI::MANGLE-NAME returns the C name for a lisp symbol
    or function, and tells whether that symbol has been defined as
    external C function already.

  - A new proclamation
	(proclaim '(si::c-export-fname union))
    advises the lisp->C translator to produce a C function with
    mangle named (clLunion in this case), that can be directly called
    from other translated files and from user written code.

* Visible changes and ANSI compatibility:

  - Remove variable si::*system-directory* and use logical hostname
    "SYS:" instead.

    make little sense when working in a early compilation environment.

  - Stepper removed until we figure out how to implement this using
    the bytecodes.

  - The library function eval() now accepts an environment as a third
    parameter. On top of this function, SI:EVAL-WITH-ENV, evaluates
    a form on a given environment.

  - New accessor ROW-MAJOR-AREF.

* System design and portability:

  - Code has been revised so that it works in environments where stack
    grows upwards, as well as in environments where the parameters to
    a function cannot be accessed as an array and only va_list/va_arg

  - Implement loading of object files using the native "dlopen"
    function which is present in most operating systems. Support for
    "dld" has been dropped and the whole of the CRS library has been

  - Remove use of alloca() when printing circular structures. In a

More information about the ecl-devel mailing list