The system foo is loaded (and compiled, if necessary) by evaluating the following Lisp form:
On some implementations (namely recent versions of
ABCL, Allegro CL, Clozure CL, CMUCL, ECL, GNU CLISP,
LispWorks, MKCL, SBCL and XCL),
ASDF hooks into the
and you can just use:
In older versions of ASDF, you needed to use
(asdf:oos 'asdf:load-op :foo
If your ASDF is too old to provide
we recommend that you upgrade to ASDF 3.
See Loading an otherwise installed ASDF.
Note the name of a system is specified as a string or a symbol.
If a symbol (including a keyword), its name is taken and lowercased.
The name must be a suitable value for the
make-pathname in whatever filesystem the system is to be
The lower-casing-symbols behaviour is unconventional, but was selected after some consideration. The type of systems we want to support either have lowercase as customary case (Unix, Mac, Windows) or silently convert lowercase to uppercase (lpns).
ASDF provides three commands for the most common system operations:
It also provides
require-system, a version of
that skips trying to update systems that are already loaded.
Because ASDF is an extensible system
for defining operations on components,
it also provides a generic function
(which is usually abbreviated by
oos whenever you want to do something beyond
compiling, loading and testing.
Output from ASDF and ASDF extensions are sent
to the CL stream
so rebinding that stream around calls to
should redirect all output from ASDF operations.
For advanced users, note that
with keyword arguments
already-loaded-systems returns a list of the names of loaded systems.
operate with the operation from
*load-system-operation*, which by default is
the system, and any provided keyword arguments.
That's all you need to know to use ASDF to load systems written by others. The rest of this manual deals with writing system definitions for Common Lisp software you write yourself, including how to extend ASDF to define new operation and component types.