December 23rd, 2011

Finding SBCL sources

You can get SBCL binaries from and that works pretty nicely. However, if you use M-. in slime to jump to the definition of a SBCL-defined function (e.g. sb-ext:run-program or cl:car), you might get something like this:

Error: failed to find the WRITE-DATE of /Users/jwise/proj/sbcl/clean/1.0.54/sbcl-1.0.54-x86-64-darwin/src/code/list.lisp:
         No such file or directory

That's because the sources are located based on the definition of the SYS logical host, and that host can get carried over from the environment used to bundle up the binary release.

One longtime solution is to download the sources and set up your own logical pathname translations for the SYS logical host. As of 1.0.53, you can now do this:

    (sb-ext:set-sbcl-source-location "/path/to/sbcl/source/")

That takes care of establishing a mapping to the SBCL sources for you, and after that M-. will work as expected.