<html><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968"><title>2. What is ECL?</title><link rel="stylesheet" type="text/css" href="ecl.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="The ECL manual"><link rel="up" href="pr01.html" title="Preface"><link rel="prev" href="pr01.html" title="Preface"><link rel="next" href="pr01s03.html" title="3. History"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2. What is <span class="application">ECL</span>?</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pr01.html">Prev</a> </td><th width="60%" align="center">Preface</th><td width="20%" align="right"> <a accesskey="n" href="pr01s03.html">Next</a></td></tr></table><hr></div><div class="section" title="2. What is ECL?"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="preface.what.is.ecl"></a>2. What is <span class="application">ECL</span>?</h2></div></div></div><p>Common Lisp is a general purpose programming language. It lays its roots in the <acronym class="acronym">LISP</acronym> programming language <a class="xref" href="bi01.html#bib.LISP1.5">[LISP1.5]</a> developed by John McCarthy in the 80s. Common Lisp as we know it <a class="xref" href="bi01.html#bib.ANSI">ANSI</a> is the result of an standarization process aimed at unifying the multiple lisp dialects that were born from that language.</p><p><span class="application">ECL</span> 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 <a class="xref" href="bi01.html#bib.KCL">KCL</a>. See <a class="xref" href="pr01s03.html" title="3. History">Section 3</a> for the history of the code you are about to use.</p><p><span class="application">ECL</span> (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.</p><p><span class="application">ECL</span> 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. <span class="application">ECL</span> 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 <span class="application">ECL</span>: one can configure <span class="application">ECL</span> with or without CLOS. A runtime version of <span class="application">ECL</span> can be built with just the modules which are required by the application.</p><p>The <span class="application">ECL</span> 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 <a class="xref" href="bi01.html#bib.CLTL2">CLTL2</a>, the aim of <span class="application">ECL</span> is now to achieve maximum compliance with ANSI Common-Lisp, the most up to date standard for Common-Lisp.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="pr01.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="pr01.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="pr01s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Preface </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 3. History</td></tr></table></div></body></html>