History

The ECL project is an implementation of the Common Lisp language inherits from many other previous projects, as shown in Figure 1.

figures/kcl-hierarchy

Figure 1: ECL’s family tree

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 Yasa:85] 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.

Richard W. Weyhrauch in 1985 founded a company Ibuki to sell its version of KCL called Ibuki Common Lisp (IBCL) in the USA.

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).

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.

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.

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’s user interface is written in Common Lisp.

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 Attardi:95]. 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 Steele:90], and which run on a rather big number of platforms.

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.

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.

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.

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.

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.

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 https://common-lisp.net/project/ecl/.