SBCL 1.2.14 came out last week. I test all Quicklisp libraries on SBCL, so when there is a change in how SBCL works, it can have an effect on which libraries build and which don’t.

SBCL has had package locks for a long, long time. Among other things, they enforce the restrictions of section 11.1.2.1.2 of the spec. The COMMON-LISP package is locked by default, so SBCL will signal an error if e.g. you try to define a function named CL:CAR .

1.2.14 updates package locking to include 11.1.2.1.2’s prohibition on defining CL symbols as constants. This triggered build failures in a number of Quicklisp projects; they had constants defined for CL:DO , CL:ERROR , CL:QUOTE , and other symbols. The error looks like this:

Lock on package COMMON-LISP violated when defining DO as a constant while in package COMMON-LISP-USER. [Condition of type SYMBOL-PACKAGE-LOCKED-ERROR] See also: SBCL Manual, Package Locks [:node] Common Lisp Hyperspec, 11.1.2.1.2 [:section]

These projects were not intentionally using CL symbols; the symbol names were natural for the task at hand (e.g. supporting a non-Lisp protocol or API that used those names).

Most of the broken projects have been fixed. But a few (cl-gearman, read-csv) remain broken under SBCL 1.2.14.

Just something to be aware of if you upgrade to SBCL 1.2.14.