Creating a Common Lisp Implementation
Being dissatisfied with the way current Common Lisp implementations are written, and with the duplication of system code between different implementations, we started the SICL project in 2008. The initial idea was to create modules that the creators of Common Lisp implementations could use to create a complete system from an initial minimal core. But this idea was unsatisfactory because it required each module to be written in a subset of Common Lisp. So instead, we decided to use the full language to implement these modules, effectively making them useless to an implementation using traditional bootstrapping techniques. We therefore decided to also create a new Common Lisp implementation (also named SICL), that could use those modules. A crucial element is a bootstrapping technique that can handle these modules. In this spirit, we have developed several modules, including an implementation of CLOS which is also an important element of bootstrapping. Lately, we have increased our level of ambition in that we want to extract those modules as separate (and separately maintained) repositories, which requires us to deal with code during bootstrapping that was not specifically written for SICL. In our talk, we describe this evolution of ambition, and its consequences to bootstrapping, in more detail. We also give an overview of several new techniques we created, some of which have been published (at ICL and ELS) and some of which have not. Finally, we discuss the future of the project, and other projects for which we imagine SICL to be a base.