About the Metaspec

The Common Lisp Metaspec is a translation of the TEX source files of the Common Lisp Standard rev 15.17R (X3J13/94-101R) into a s-expression document format structured around a (NODE-TYPE PROPERTY-PLIST NODE-CHILD*) form. Care has been taken to preserve the provenance of the original texts, and any deviations from the document have been mechanically applied and recorded as Errata.

The Metaspec Render is an HTML rendering of the Metaspec. As well as rendering the Metaspec sdoc into HTML, it also handles reference linking, search, and presentation. A link to the original Metaspec document is available on the bottom of every rendered page.

The MetaSpectre project is the code and archived inputs to create and render the Metaspec. It was started in 2015, abandoned for a long time, then completed in 2026.

Metaspec Versions

The top-level :metaspec node has the following properties:

The Metaspec Render has an HTML comment near the beginning of each page containing each field, as well as a timestamp of the rendering.

Searching the Metaspec Render

The Metaspec Render relies on JavaScript for its Search mechanism so that it can be distributed as a static collection of files. The nav search bar is only shown when JavaScript is available. The index is a rendered JSON file containing a search lookup table. If the Enter is pressed in the search box, the browser will either be redirected to the page (if there is a single match) or the dedicated search page.

The dedicated search page also functions entirely using JavaScript, and shares some code with the nav search box. It examines the q search parameter to pre-fill the query. If there is only one exact result on page load, it will redirect to the page. This makes it useful to create a search shortcut like https://metaspec.dev/search.html?q=%s.

There is an OpenSearch Description file which allows the browser to easily add this as a shortcut.

Metaspec Issues

In addition to the Common Lisp Standard, there are also Cleanup Issues, part of the X3J13 committee's deliberations over the standard. These are scraped from archived email threads, but the committee had the forethought to structure this information, so we are able to discover the final versions of these issues and relate them to the spec. Since these are plain-text emails, however, any styling in the render is heuristic and subject to change.

Both passed and failed issues are rendered and cross-referenced.

Additions to the Metaspec

Some supplementary information has been added to the Metaspec not in the original document. These are listed here: