Purpose and objectives

The SICL project aims to supply building blocks for implementers of Common Lisp systems. These building blocks come in the form of modules, implementing some part of the HyperSpec.

Most modules are implemented in entirely portable Common Lisp, making it easy to use them as drop-in modules in any standard-conforming Common Lisp implementation. In order to avoid circular dependencies, we implicitly define a hierarchy of modules where higher-level modules only use the functionality of lower-level modules.

Contrary to similar projects in the past, the SICL cares about performance. For that, we use compiler macros and other techniques to detect common special use cases that can be implemented more efficiently than the general case.

While performance is important, so is understandability. We would like for the code to be easy to read and understand, so that it can serve as teaching material for people interested in implementing Common Lisp. In cases where performance is not considered important, such as in macro expanders, we instead put considerable effort into making the code very clear and general. In particular, we use more object-oriented techniques than are typically used in traditional Common Lisp implementations.

The building blocks will eventually be used to construct a complete implementation of Common Lisp.

Download releases

There only two releases available, but that is only because we have not put much effort into releasing modules. Many additional modules are almost finished.


The SICL GIT repository is located at this GitHub address.


The subdirectory named Specification in the repository contains a LaTeX document (currently more than 150 pages) that explains many of the features and ideas of SICL. The document may not reflect the absolute latest ideas, but we try to keep it up to date as much as possible.


At the moment, we are not actively soliciting contributions, mainly because many aspects of the system are still not completely firmed up.

This page was last updated 2014-03-27.

Valid XHTML 1.0 Strict

Back to

Valid XHTML 1.0 Strict