X3J13 is the name of a technical committee which was part of INCITS (known at the time as X3). The X3J13 committee was formed in 1986 to draw up an ANSI Common Lisp standard based on the first edition of the book Common Lisp the Language (also known as "CLtL", or "CLtL1"), by Guy L. Steele, Jr., which was previously a de facto standard for the language. The primary output of X3J13 was an American National Standard for programming language Common Lisp (X3.226/1994), approved December 8, 1994. X3J13 later worked with ISO working group SC22/WG16 on an internationally standardised dialect of Lisp named ISLISP.
The original chair of the committee was Doctor Robert Mathis of Ohio State University, with Mary van Deusen as secretary. Guy L. Steele, Jr. was originally the vice-chair. In later years, Mathis stepped down as chair and Steele assumed that role.
The efforts of the committee were guided by its charter, the successful creation of which is credited to the coordinating efforts of Susan P. Ennis, a representative of Amoco Production Company. The charter lays out the committee's goals and priorities, as well as a broadly defined list of some topics to be addressed.
The committee formed several subcommittees to help its members better concentrate their efforts.
The Cleanup Subcommittee, chaired by Larry Masinter, established a standardised format for the submission of proposals for voting. These issue writeups, while not themselves part of the standard, were deemed sufficiently useful for the Common Lisp HyperSpec to include and cross-reference them for the benefit of readers, providing information about the original intent of the committee in its decisions. These writeups also serve as a historical record of those alternate solutions to problems which were, ultimately, not adopted.
Chaired by Sandra Loosemore, this subcommittee created proposals for issues relating to Lisp compilation. Guy Steele acknowledged in the second edition of Common Lisp the Language the large contribution of the Compiler Subcommittee toward clarifying the compilation process described in the first edition, parts of which Steele himself describes as "vague".
Jon L. White was the chair of the Iteration Subcommittee. Among the issues dealt with by this subcommittee was the generalized
LOOP macro — a domain-specific language to which the second edition of CLtL devoted an entire chapter. The "ALGOL-like" syntax of this macro, differing from Lisp's more usual S-expression syntax, was and remains somewhat controversial.
The Character Subcommittee, chaired by Thom Linden, had the task of defining how the standard would deal with the issues surrounding different character sets. The resolution of these matters — particularly the ability to use any character in the name of a symbol — was intended to make Common Lisp simpler for international users.
Error handling subcommittee
Chaired by Kent Pitman, the Error Handling Subcommittee plugged what was described as "the biggest outstanding hole in Common Lisp" with the condition system, a general mechanism for handling errors, warnings, and other exceptional situations.
The committee referred to the resulting specification as a "condition system" rather than an "error system" in order to accommodate a single system for handling exceptional situations of various kinds, whether fatal or non-fatal, whether continuable or not, and whether the result of program error or mere resource limitation (such as stack overflow). Conditions are "signaled" at one point in the code and may be handled at another point. This usage of the term "signal" is different from the typical operating system's notion of signals (except on Lisp machines where this variant usage of the term evolved); the operating system notion of signaling was out of scope for this committee, and consequently was not addressed in the ANSI Common Lisp standard. Asynchronous interrupts and IEEE floating point trapping was also out of scope for this committee's work and was not addressed in the standard.
Kathy Chapman was the chair for the Drafting Subcommittee, which was responsible for the drafting of the actual standard document. In addition, the subcommittee oversaw efforts to keep terminology consistent and accurate throughout the committee's activities.
Relation to "Common Lisp the Language"
The book Common Lisp the Language, although mostly authored by Guy L. Steele, Jr., was the product of an ad hoc committee that had formed around 1980 and had worked collaboratively to produce the original de facto standard for Common Lisp prior to the formation of X3J13. X3J13 began its work with Common Lisp the Language as a base document and proceeded from there in the design of what would become ANSI Common Lisp. Steele himself served on the committee and gave them permission to use any or all parts of its first edition in their efforts.
Documents published by X3J13 were later used, together with quotations from certain committee members, in the production of the Second Edition, which was released in 1990, allowing the Common Lisp community a way to preview many features that were expected to appear in the committee's final standard document. The Second Edition of Common Lisp the Language bears similarity to the standard in content, though not in form. However, substantive changes were made, in the form of both additions and deletions, between the publication of the book and the final draft of the ANSI standard.
In sum, the original edition of Common Lisp the Language was the document upon which X3J13 originally based its work. The Second Edition, by contrast, was Steele's personal work, not a committee product and had no official status within X3J13 or ANSI. As acknowledged in the Second Edition preface, it was not authorized by X3J13, the choice of content as a snapshot of the work in progress was not formally synchronized with X3J13, and the final version was not reviewed or approved by X3J13.
- Common Lisp
- INCITS (formerly known as X3), X3J13's parent body
- Common Lisp the Language - Guy L. Steele, Jr.'s book
- Common Lisp HyperSpec - the hypertext version of the standard
- Lisp FAQ, http://www.faqs.org/faqs/lisp-faq/part4/section-10.html
- Kent Pitman: "X3J13 Charter" (annotated), http://www.nhplace.com/kent/CL/x3j13-sd-05.html
- Larry Masinter's repository of X3J13 passed cleanup issues at Xerox PARC, ftp://ftp.parc.xerox.com/pub/cl/cleanup/passed/
- Guy L. Steele, Jr.: "Common Lisp the Language" (second edition), Acknowledgments. Digital Press, 1984; ISBN 0-932376-41-X
- Richard P. Gabriel and Guy L. Steele, Jr.: "The Evolution of Lisp", page 85. ACM SIGPLAN Notices, vol. 28, no. 3, pp. 231-270, 1993.
- Common Lisp Condition System, Revision #18
- Exceptional Situations in Lisp by Kent Pitman, MIT AI Laboratory Working Paper 268, February 1985]
- Signalling and Handling Conditions, a hardcopy publication of Symbolics, Inc., 1983 (with technical contributions by David L. Andre, Bernard Greenberg, David A. Moon, Mike McMahon, Daniel Weinreb)