ECL is an implementation of the Common-Lisp language that was developed by Giuseppe Attardi's up from the Kyoto Common-Lisp. See Credits for the history of the code you are up 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 [see Steele:84], the aim of ECL is now to achieve maximum compliance with ANSI Common-Lisp, the most up to date standard for Common-Lisp.
Throughout this manual we will describe the ECL implementation and how it differs from [see ANSI] and [see Steele:84]. In general, as work in ECL is completed section by section, we will drop compatibility with [see Steele:84] and the corresponding chapter will be updated to document only the differences with [see ANSI].