X3J13
# X3J13

X3J13 is the name of a technical committee which was part of the International Committee for Information Technology Standards (INCITS, then named X3). The X3J13 committee was formed in 1986 to draw up an American National Standards Institute (ANSI) Common Lisp standard based on the first edition of the book Common Lisp the Language (also termed CLtL, or CLtL1), by Guy L. Steele Jr., which was formerly 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 International Organization for Standardization (ISO) working group SC22/WG16 on an internationally standardised dialect of Lisp named ISLISP.

## Organisation

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, and a broadly defined list of some topics to be addressed.

## Subcommittees

The committee formed several subcommittees to help its members better concentrate their efforts.

### Cleanup subcommittee

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.

### Compiler subcommittee

Chaired by Sandra Loosemore, this subcommittee created proposals for issues relating to Lisp compiling. Guy Steele acknowledged in the second edition of Common Lisp the Language the large contribution of the Compiler Subcommittee toward clarifying the compiling process described in the first edition, parts of which Steele describes as "vague".

### Iteration subcommittee

Jon L. White was the chair of the Iteration Subcommittee. Among the issues dealt with by this group was the generalized LOOP macro – a domain-specific language to which the second edition of CLtL devotes a full chapter. The "ALGOL-like" syntax of this macro, differing from Lisp's more usual s-expression syntax, was and remains somewhat controversial.

### Character subcommittee

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" to accommodate one 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 simple resource limit (such as stack overflow). Conditions are signaled at one point in the code and may be handled at another point. This use of the term "signal" is different from the typical operating system's notion of signals (except on Lisp machines where this variant use 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.

### Drafting subcommittee

Kathy Chapman was the chair for the Drafting Subcommittee, which was responsible for the drafting of the actual standard document. Further, the subcommittee oversaw efforts to keep terminology consistent and accurate throughout the committee's activities.

## Final document

The final standard produced by the X3J13 committee was published as American National Standard X3.226, and also in hypertext form as the Common Lisp HyperSpec.

### Relation to Common Lisp the Language

The book Common Lisp the Language, although authored mostly 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 before 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 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 Common Lisp the Language Second Edition, which was released in 1990, giving the Common Lisp community a way to preview many features that were expected to appear in the committee's final standard document. That edition 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 on which X3J13 originally based its work. The Second Edition, by contrast, was Steele's own 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.

