CLtL3: Codifying Modern Common Lisp

Common lisp has never been a static language. Originally, Common Lisp was "designed as a description of a family of languages"[1]. The Lisp systems at the time were largely incompatible with one another, and were often internally inconsistent, but shared many common features and saw wide use.

Through a grassroots effort, users and developers of these systems were able to agree on a "common dialect to which each implementation makes any necessary extensions[2]". It was deliberately left under-specified in many areas, so that the "various dialects that are super-sets of Common Lisp may serve as laboratories within which to test language extensions[3]". This is the language described in "Common LISP: The Language (first edition)".

Once this new dialect was in wide use, many of these language extensions became de facto standards. A desire for stricter standardisation brought about the ANSI effort, during which users and implementors were able to again come to a consensus. This new language was first described in "Common LISP: The Language (second edition)".

At that time, it was noted that "moving large bodies of Lisp code from one computer to another is now routine"[4]. The Common Lisp effort was a success. The ANSI effort made a Common Lisp an internationally recognized standard. Once again, many parts of the language were left unspecified to allow for differences in architectures, and for experimentation with language extensions.

With the growth of ANSI Common Lisp, the time has again come when it is apparent that many language extensions have become de facto standards and could benefit by being a part of the "Common Lisp". The description of the language has been static since ANSI, but the language itself has not.

CLtL3 is another grassroots effort that will attempt to unify widely used language extensions and update some of the core language components. We wish to create a common lisp "standard library" that includes the features modern lisp programmers have deemed necessary. In most cases, various implementations and existing libraries already provide these features, we simply wish to codify and document them in order to promote portability and enable widespread distribution and use of Common Lisp code.

Drew Crampsie - drewc at tech.coop Stelian Ionescu - stelian.ionescu-zeus at poste.it

[1] _The Common Lisp HyperSpec_ section 1.1.2 http://www.lispworks.com/documentation/HyperSpec/Body/01_ab.htm [2] [3] [4] _Common Lisp the Language, Second edition_ by Guy L. Steele Jr. - section 1.1 http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node6.html