Introduction

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

ECL combines a bytecodes compiler/interpreter and a translator to C. The first one is specially suited for prototyping and debugging. The second one produces fast code that can be dynamically loaded into the interpreter or statically linked to build standalone executables.

ECL is distributed under the GNU Library General Public License (GNU LGPL).

ECL vs other implementations

ECL is not a brand new product. It has evolved from the EcoLisp implementation by Giuseppe Attardi which in turn was based on the Kyoto Common-Lisp implementation done by Taiichi Yuasa and Masami Hagiya, with contributions from several people. Nevertheless the program has been seriously modified and the current code base bears little resemblance to the previous implementations and the author of those implementations should not be blamed for the faults of ECL.

I have received several questions concerning why I work on ECL instead of improving GCL. The main reason for this is the simplicity of the code base. The EcoLisp implementation on which ECL is based already was Cltl2 compliant. It had low level support for CLOS, a LOOP package, DEFPACKAGE and the code in general was much more readable and easier to maintain. It would be a huge task to get all these improvements back and the code I put into ECL back into GCL.

Project goals