The first edition of the book Common Lisp The Language, written by the lispers
at CMU (Carnegie-Mellon University)[1] and published in 1984, served as a basis
for ANSI Common Lisp the standard. The second edition (published in 1990)
reflected the current state of the standardisation process that was still
ongoing.
In 1994, the ANSI Common Lisp standard was finally published. It differed in
certain ways from the dialects described by the two editions of Common Lisp The
Language but acknowledged the practical importance of both editions by
suggesting that the keywords :cltl1 and :cltl2 be included in the *features*
list, allowing for conditionals to be added to code that must interoperate
between ANSI Common Lisp and these other two dialects.
CLTL1 (as it is known) is ancient history today and most, if not all,
implementations have settled on something somewhere in between ANSI and CLTL2.
However, the ANSI standard suffered from a bigger problem that had nothing to do
with the language per se; it failed to address one or two important practical
aspects of everyday programming and discrepancies arose in the way
implementations addressed these practical needs. As a result of this (not the
minor language differences between ANSI and CLTL2) lispers talk toady about
portable versus non-portable code.
So, to summarise, the core language (the fixed set of 24 special forms[2] which
every implementation must include if it wants to call itself Common Lisp) is
absolutely rock solid and cast in stone, but practical shortcomings in the ANSI
standard have lead to discrepancies in the way implementations make up for them.
[1] SBCL builds on the original CMU code base, hence the name Steel Bank Common
Lisp. (Carnegie was a steel magnate and Mellon was a Wall Street financier).
[2] Common Lisp special forms