1
0
Fork 0
cl-sites/ecl.common-lisp.dev/static/manual/What-is-ECL.html

193 lines
7.2 KiB
HTML
Raw Permalink Normal View History

2024-12-24 19:15:49 +01:00
<!DOCTYPE html>
<html>
<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>What is ECL (ECL Manual)</title>
<meta name="description" content="What is ECL (ECL Manual)">
<meta name="keywords" content="What is ECL (ECL Manual)">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link href="index.html" rel="start" title="Top">
<link href="Indexes.html" rel="index" title="Indexes">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Introduction.html" rel="up" title="Introduction">
<link href="History.html" rel="next" title="History">
<link href="About-this-book.html" rel="prev" title="About this book">
<style type="text/css">
<!--
/* colors */
span.r {font-family: initial; font-weight: normal; font-style: normal}
@media (prefers-color-scheme: dark) {
/* dark theme */
html { color: seashell;
background: #1A1A1A; }
body { background: #1A1A1A; }
th { border-bottom: 2px solid lightgray; }
h1, h2, h3, h4, h5 { background-image: linear-gradient(to left, #202020, #3A3A3A); }
code, var, code a { color: darkorange;
background: #2A2A2A; }
a { color: seashell; }
pre { background: #2A2A2A;
color: seashell;
/* mark longer code block with stripe on the left */
border-left: 5px solid darkorange;
padding-left: 10px; }
pre.screen { background: #2A2A2A;
border: 1px solid lightgray; }
pre.programlisting { background: #2A2A2A;
border-left: 1px solid lightgray;
border-top: 1px solid lightgray; }
/* we need a light background in order for the images to be readable */
img { background: white }
}
@media (prefers-color-scheme: light) {
/* light theme */
html { background: white }
body { background: white }
th { border-bottom: 2px solid gray; }
h1, h2, h3, h4, h5 { background: lightgray; }
code, var, code a { color: darkred;
background: whitesmoke; }
a { color: #000; }
pre { background: whitesmoke;
color: black;
/* mark longer code block with stripe on the left */
border-left: 5px solid darkred;
padding-left: 10px; }
pre.screen { background: #EEE;
border: 1px solid black; }
pre.programlisting { background: #EEEEEE;
border-left: 1px solid black;
border-top: 1px solid black; }
}
body {
margin: 1em 125px 0 10%;
line-height: 1.5em;
padding: 0 2em 1em 2em;
font: 13px Verdana,Arial, sans-serif
}
ul, dd, dl, dt { margin-top: 0; margin-bottom: 0; }
p, code, td, dl, dt {
line-height: 1.5em;
}
table {
font: inherit;
border-collapse: collapse;
}
th, td {
vertical-align: top;
}
h1, h2, h3 { padding-left: 15px; }
h4, h5 { padding-left: 5px; }
code, pre {
font-size: 1em;
font-family: monospace;
}
var {
font-size: 1em;
}
/* links inside code appear the same as the code itself */
code a {
font-weight: normal;
text-decoration: none;
}
/* but get an underline when hovering */
code a:hover {
text-decoration: underline;
}
/* ordinary links appear in bold */
a { font-weight: bold; }
pre.verbatim {
margin: 0 0 0 0;
}
pre {
overflow: auto;
}
pre.screen {
font-weight: bold;
padding: 0.5em;
}
pre.programlisting {
padding: 0.5em;
}
div p { padding: 0 2em }
li p { padding: 0; margin: 0 }
hr { display: none; }
div.funcsynopsis p {
text-indent: -2em;
}
div.variablelist {
padding: 0 2em;
}
.type, .funcsynopsis, .symbol {
font-family: monospace;
}
.type, .symbol, .replaceable {
white-space: nowrap;
}
-->
</style>
</head>
<body lang="en">
<div class="section-level-extent" id="What-is-ECL">
<div class="nav-panel">
<p>
Next: <a href="History.html" accesskey="n" rel="next">History</a>, Previous: <a href="About-this-book.html" accesskey="p" rel="prev">About this book</a>, Up: <a href="Introduction.html" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Indexes.html" title="Index" rel="index">Index</a>]</p>
</div>
<h3 class="section" id="What-is-ECL-1">What is ECL</h3>
<p><span class="r">Common-Lisp</span> is a general purpose programming language. It lays its roots in
the <abbr class="acronym">LISP</abbr> programming language [see <a class="pxref" href="Bibliography.html">LISP1.5</a>] developed by
John McCarthy in the 80s. <span class="r">Common-Lisp</span> as we know it <span class="r">ANSI Common-Lisp</span> is the result
of an standardization process aimed at unifying the multiple lisp
dialects that were born from that language.
</p>
<p><b class="b"><span class="r">Embeddable Common Lisp</span></b> is an implementation of the <span class="r">Common-Lisp</span> 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
[see <a class="pxref" href="Bibliography.html">Yasa:85</a>]. <a class="ref" href="History.html">History</a> for the history of the code you are
about to use.
</p>
<p><b class="b"><span class="r">Embeddable Common Lisp</span></b> (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>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. A runtime version of ECL can
be built with just the modules which are required by the application.
</p>
<p>The ECL compiler compiles from Lisp to C, and then invokes the C
compiler to produce binaries. Additionally portable bytecode compiler is
provided for machines which doesn&rsquo;t have C compiler. While former
releases of ECL adhere to the the reference of the language given in
<em class="emph"><span class="r">Common-Lisp</span>: The Language II</em> [see <a class="pxref" href="Bibliography.html">Steele90</a>], the ECL is now compliant with X3J13 ANSI
Common Lisp [see <a class="pxref" href="Bibliography.html">ANSI</a>].
</p></div>
<hr>
<div class="nav-panel">
<p>
Next: <a href="History.html" accesskey="n" rel="next">History</a>, Previous: <a href="About-this-book.html" accesskey="p" rel="prev">About this book</a>, Up: <a href="Introduction.html" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Indexes.html" title="Index" rel="index">Index</a>]</p>
</div>
</body>
</html>