1
0
Fork 0
cl-sites/ecl.common-lisp.dev/static/manual/History.html

243 lines
9.3 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>History (ECL Manual)</title>
<meta name="description" content="History (ECL Manual)">
<meta name="keywords" content="History (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="Credits.html" rel="next" title="Credits">
<link href="What-is-ECL.html" rel="prev" title="What is ECL">
<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="History">
<div class="nav-panel">
<p>
Next: <a href="Credits.html" accesskey="n" rel="next">Credits</a>, Previous: <a href="What-is-ECL.html" accesskey="p" rel="prev">What is ECL</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="History-1">History</h3>
<p>The ECL project is an implementation of the Common Lisp language
inherits from many other previous projects, as shown in
<a class="ref" href="History.html#fig_003ahierarchy">Figure 1</a>.
</p>
<div class="float" id="fig_003ahierarchy">
<img class="image" src="figures/kcl-hierarchy.png" alt="figures/kcl-hierarchy">
<div class="caption"><p><strong class="strong">Figure 1: </strong>ECL&rsquo;s family tree</p></div></div>
<p>The oldest ancestor is the Kyoto Common Lisp (KCL), an implementation
developed in 1984 at the the Research Institute for Mathematical
Sciences, Kyoto University [see <a class="pxref" href="Bibliography.html">Yasa:85</a>] by Taiichi Yuasa and
Masami Hagiya. This implementation was developed partially in C and
partially in Common Lisp itself and featured a lisp to C translator.
</p>
<p>Richard W. Weyhrauch in 1985 founded a company Ibuki to sell its
version of KCL called Ibuki Common Lisp (IBCL) in the USA.
</p>
<p>Giuseppe Attardi learned about KCL from Richard Weyhrauch in 1986. At
the time he was working with the company DELPHI. He extended KCL by
adding a CLOS implementation and other improvements. The whole
combination was released in 1988 as DELPHI Common Lisp (DCL).
</p>
<p>William F. Schelter in 1987 started improving KCL in several areas and
developed Austin Kyoto Common-Lisp (AKCL). However, those changes had
to be distributed as patches over the proprietary KCL implementation.
</p>
<p>Much later in 1994, when KCL became open source (and by extension also
AKCL), William F. Schelter re-released AKCL as GNU Common Lisp (GCL),
implementation which primary purpose at the time was to support the
Maxima compute algebra system, which was also maintained by William
F. Schelter.
</p>
<p>In 1995 another AKCL descendant called HCL is released. This
commercial implementation is an extension language for the application
HP PE/SolidDesigner. A large part of the application&rsquo;s user interface
is written in Common Lisp.
</p>
<p>In 1994 Giuseppe Attardi left DELPHI and went back to the University
of Pisa, where he decided to build a version of DCL that would allow
integrating Lisp code with other languages[see <a class="pxref" href="Bibliography.html">Attardi:95</a>]. Since
Lisp had become less popular and Lisp programmers were diminishing in
number, he used the acronym ECL, which could be read as either the
Embeddable Common Lisp as well as ECoLisp, as a joke for the
ecological goal of preserving the disappearing species, the Lisp
programmer. The implementation achieved rather good compliance to the
informal specification of the language in CLTL2 [see <a class="pxref" href="Bibliography.html">Steele:90</a>],
and which run on a rather big number of platforms.
</p>
<p>The ECL project stagnated a little bit in the coming years. In
particular, certain dependencies such as object binary formats, word
sizes and some C quirks made it difficult to port it to new
platforms. Furthermore, ECL was not compliant with the ANSI
specification, a goal that other Common Lisps were struggling to
achieve.
</p>
<p>This is where the ECLS or ECL-Spain project began. Juanjo García-Ripoll
took the ECoLisp sources and worked on them, with some immediate goals
in mind: increase portability, make the code 64-bit clean, make it able
to build itself from scratch, without other implementation of Common
Lisp and restore the ability to link ECL with other C programs.
</p>
<p>Those goals were rather quickly achieved. ECL was then ported to a
number of platforms and with time the compatibility with the ANSI
specification became a more important goal. At some point the fork
ECLS, with agreement of Prof. Attardi, took over the original ECL
implementation and it became what it is nowadays, a community project.
</p>
<p>In 2013 once again project got unmaintained. In 2015 Daniel Kochmański
took the position of a maintainer with consent of Juanjo
García-Ripoll. In 2020 Marius Gerbershagen became the project
co-maintainer.
</p>
<p>The ECL project owes a lot to different people who have contributed in
many different aspects, from pointing out bugs and incompatibilities of
ECL with other programs and specifications, to actually solving these
bugs and porting ECL to new platforms.
</p>
<p>Current development of ECL is still driven by Daniel Kochmański and
Marius Gerbershagen with main focus on improving ANSI compliance and
compatibility with the Common Lisp libraries ecosystem, fixing bugs,
improving speed and the portability. The project homepage is located
at <a class="uref" href="https://common-lisp.net/project/ecl/">https://common-lisp.net/project/ecl/</a>.
</p></div>
<hr>
<div class="nav-panel">
<p>
Next: <a href="Credits.html" accesskey="n" rel="next">Credits</a>, Previous: <a href="What-is-ECL.html" accesskey="p" rel="prev">What is ECL</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>