[Ecls-list] ECL-0.9c bugfix release (with open bugs)

Juan Jose Garcia-Ripoll worm at arrakis.es
Thu Oct 30 11:09:08 UTC 2003

Announcement of ECL v0.9c

ECL stands for Embeddable Common-Lisp. The ECL project is an effort to
modernize Giusseppe Attardi's ECL (ECoLisp) 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 for this release

This is mainly a bugfix release for developers. It has been succesfully 
compiled and run on Intel ix86 with Windows+Cygwin, Linux, FreeBSD and 
NetBSD, and on Alpha under Linux. It does not work on Solaris/SPARC because 
of problems that need to be debugged.

ECL 0.9c

* System design:

  - The data structures of the lisp->C translator are being changed
    from pure lists, to lisp structures, and the routines for handling
    them have now more meaningful names.

  - In different systems, dlopen() handles files with name "lib*.so"
    differently, causing ECL to crash. To avoid this problem, compiled
    code that can be dynamically loaded has the extension "fas".

  - COMPILE-FILE-PATHNAME now acquires the functionality of
    provides information about the usual name conventions for
    executables, libraries, object files, C files, etc.

  - Many internal types, such as those used to represent arrays,
    vectors, etc, and which do not need to be used directly, have
    received the prefix "ecl" to avoid name clashes with C/C++

  - New tools and makefile rules for building RPM files kindly
    contributed by Robert Lehr.

  - The interpreter now uses by default 16-bit bytecodes. This avoids
    pointer misalignments and SIGBUS signals on architectures which
    are sensitive to this, and does not cost too much space. A
    fallback option for the Intel, --enable-opcode8, has been

  - The GMP Library is updated to 4.1.2.

* Errors fixed:

  - The compiler was too eager when replacing variables, so that
	(let ((exit *exit*) (*exit* (1+ *exit*)))
	     (declare (special *exit*))
	     (print exit))
    would be changed into
        (let ((*exit* (1+ *exit*)))
	     (declare (special *exit*))
	     (print *exit*))

  - Fix a bug that prevented ECL from compiling under CYGWIN.

  - Remove spurious references that prevented loaded libraries to be
    garbage collected. Unfortunately, this also means that the
    Boehm-Weiser garbage collector cannot scan the data sections of
    any libraries, and that register_root must be used everywhere.

  - READ/WRITE-SEQUENCE would read or write one element more than

  - LOAD-TIME-VALUE was broken.

  - Invoking finalizers during GC could trash the environment of a
    running function, either interpreted or compiled.

* ANSI compatibility:

  - Hashtables can now have EQUALP as test function.

  - The compiler no longer handles IN-PACKAGE and DEFPACKAGE specially.
    When a symbol is loaded from a compiled file, and the home package
    of this symbol does not exist, a new incomplete package is
    created. If MAKE-PACKAGE is invoked subsequently in this binary
    file, the incomplete package is finished and returned. If at the
    end of the load process there are still incomplete packages, a
    correctable error is signaled.

More information about the ecl-devel mailing list