- Andrey Mokhov, Neil Mitchell and Simon Peyton Jones:
“Build Systems à la Carte”, 2018.
This article provides axes along which to describe build systems in general;
ASDF, in addition to being in-image (an axis not considered by these authors),
has the following characteristics:
ASDF’s persistent build information is file modification times
(the way ASDF is written, it should be easy enough to write an extension that modifies it
to use a “cloud cache” à la Bazel,
but that would involve using some database, network and cryptographic libraries,
which cannot reasonably be included in the base ASDF,
that must remain a minimal bootstrappable system with no external dependencies).
The object model of ASDF was initially designed for “static” dependencies
with a “topological” scheduler, but its
(and more generally, the ability to call ASDF from within an
allows for multiple phases of execution resulting
in “dynamic” dependencies with a “suspending” scheduler.
The rebuilder essentially uses a “dirty bit”, except that the in-image model
and the multiple phase support mean that’s actually more than a bit:
instead three bits, the timestamp and a phase depth level.
The build is guaranteed “minimal” in number of steps computed.
It is local; it assumes but does not enforce determinism;
it does not assume early cutoff of the build when rebuild dependencies didn’t change.
- Francois-Rene Rideau:
“ASDF 3, or Why Lisp is Now an Acceptable Scripting Language”, 2014.
This article describes the innovations in ASDF 3 and 3.1,
as well as historical information on previous versions.
- Alastair Bridgewater:
“Quick-build” (private communication), 2012.
quick-build is a simple and robust one file, one package build system,
faslpath, in 182 lines of code
(117 of which are not blank, not comments, not docstrings).
Unhappily, it remains unpublished and its IP status is unclear as of April 2014.
asdf/package-system is mostly compatible with it,
modulo a different setup for toplevel hierarchies.
- Zach Beane:
The Quicklisp blog and Xach’s personal blogs contain information on Quicklisp.
- Francois-Rene Rideau and Robert Goldman:
“Evolving ASDF: More Cooperation, Less Coordination”, 2010.
This article describes the main issues solved by ASDF 2,
and exposes its design principles.
- Francois-Rene Rideau and Spencer Brody:
“XCVB: an eXtensible Component Verifier and Builder for Common Lisp”, 2009.
This article describes XCVB, a proposed competitor for ASDF;
many of its ideas have been incorporated into ASDF 2 and 3,
though many other ideas still haven’t.
- Peter von Etter:
faslpath is similar to the latter
and our yet latter
except that it uses dot
. rather than slash
/ as a separator.
- Drew McDermott:
“A Framework for Maintaining the Coherence of a Running Lisp,”
International Lisp Conference, 2005, available in pre-print form at
- Dan Barlow: “ASDF Manual”, 2004.
Older versions of this document from the days of ASDF 1;
they include ideas laid down by Dan Barlow,
and comparisons with older defsystems (
and defsystem (
defsystem-4, kmp’s Memo 801).
- Marco Antoniotti and Peter Van Eynde:
make for Common Lisp, A Thoughtful Re-Implementation of an Old Idea”, 2002.
The defsystem-4 proposal available in the CLOCC repository.
- Mark Kantrovitz: “Defsystem: A Portable Make Facility for Common Lisp”, 1990.
The classic mk-defsystem, later variants of which
are available in the CLOCC repository as
- Richard Elliot Robbins:
“BUILD: A Tool for Maintaining Consistency in Modular Systems”, MIT AI TR 874, 1985.
- Kent M. Pitman (kmp): “The Description of Large Systems”, MIT AI Memo 801, 1984.
Available in updated-for-CL form on the web at
- Dan Weinreb and David Moon:
“Lisp Machine Manual”, 3rd Edition MIT, March 1981.
The famous CHINE NUAL describes one of the earliest variants of DEFSYSTEM.
(NB: Not present in the second preliminary version of January 1979)