2. What is ECL?

Common Lisp is a general purpose programming language. It lays its roots in the LISP programming language LISP1.5 developed by John McCarthy in the 80s. Common Lisp as we know it ANSI is the result of an standarization process aimed at unifying the multiple lisp dialects that were born from that language.

ECL is an implementation of the Common-Lisp language. As such it derives from the implementation of the same name developed by Giuseppe Attardi, which itself was built using code from the Kyoto Common-Lisp KCL. See Section 3 for the history of the code you are about to use.

ECL (ECL for short) uses standard C calling conventions for Lisp compiled functions, which allows C programs to easily call Lisp functions and vice versa. No foreign function interface is required: data can be exchanged between C and Lisp with no need for conversion.

ECL is based on a Common Runtime Support (CRS) which provides basic facilities for memory management, dynamic loading and dumping of binary images, support for multiple threads of execution. The CRS is built into a library that can be linked with the code of the application. ECL is modular: main modules are the program development tools (top level, debugger, trace, stepper), the compiler, and CLOS. A native implementation of CLOS is available in ECL: one can configure ECL with or without CLOS. A runtime version of ECL can be built with just the modules which are required by the application.

The ECL compiler compiles from Lisp to C, and then invokes the GNU C compiler to produce binaries. While former releases of ECL adhere to the the reference of the language given in CLTL2, the aim of ECL is now to achieve maximum compliance with ANSI Common-Lisp, the most up to date standard for Common-Lisp.