ASDF package-inferred-system and package-local nicknames
- date: 2026-05-14
- tags: commonlisp
- identifier: 20260514T210803
ASDF's :package-inferred-system class facilitates having one system and one package in each one file. one top-level system definition can suffice for the entire codebase.
then how can ASDF know what dependencies a package requires? it parses the package definition. but what if a package is not :use-d and therefore doesn't appear in the package definition?
i thought to solve this by giving every dependency package a package-local nickname. (i like to do so in general instead of :use-ing anything.)
ASDF doesn't support package-local nicknames in the :package-inferred-system mechanism until version 3.3.3.2 for SBCL, probably later for other implementations.
the commit adding SBCL local nickname support to ASDF's :package-inferred-system mechanism
modern SBCL packages an older ASDF than that. upgrade ASDF simply by building it in ~/common-lisp/. refer to the ASDF manual or that of your lisp implementation.
ASDF manual ยง3.4, replacing your implementation's ASDF
SBCL, at least, automatically loads the ~/common-lisp/ ASDF version on startup.