Bibliography
- Andrey Mokhov, Neil Mitchell and Simon Peyton Jones:
“Build Systems à la Carte”,
International Conference on Functional Programming, 2018.
https://www.microsoft.com/en-us/research/uploads/prod/2018/03/build-systems-final.pdf
This influential 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
defsystem-depends-on
mechanism
(and more generally, the ability to call ASDF from within an .asd
file)
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 it’s three bits plus the timestamp plus 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.
- Robert Goldman, Elias Pipping, and François-René Rideau:
“Delivering Common Lisp Applications with ASDF 3.3”,
European Lisp Symposium, 2017.
https://github.com/fare/asdf2017
This short article gives an overview of the changes in ASDF 3.2 and 3.3, including
improved application delivery, asynchronous subprocess management,
correct support for multi-phase builds, and enhanced source location configuration.
- Francois-Rene Rideau:
“ASDF 3, or Why Lisp is Now an Acceptable Scripting Language”,
European Lisp Symposium, 2014.
https://github.com/fare/asdf3-2013
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,
similar to faslpath
, in 182 lines of code
(117 of which are neither blank nor comments nor 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:
“Quicklisp”, 2011.
The Quicklisp blog and Xach’s personal blogs contain information on Quicklisp.
http://blog.quicklisp.org/
http://lispblog.xach.com/ (new)
http://xach.livejournal.com/ (old)
- Francois-Rene Rideau and Robert Goldman:
“Evolving ASDF: More Cooperation, Less Coordination”,
International Lisp Conference, 2010.
This article describes the main issues solved by ASDF 2,
and exposes its design principles.
https://common-lisp.net/project/asdf/ilc2010draft.pdf
http://rpgoldman.goldman-tribe.org/papers/ilc2010-asdf.pdf
- Francois-Rene Rideau and Spencer Brody:
“XCVB: an eXtensible Component Verifier and Builder for Common Lisp”,
International Lisp Conference, 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.
https://common-lisp.net/project/xcvb/
- Peter von Etter:
“faslpath”, 2009.
faslpath
is similar to the latter quick-build
and our yet latter asdf/package-system
extension,
except that it uses dot .
rather than slash /
as a separator.
https://code.google.com/p/faslpath/
- Drew McDermott:
“A Framework for Maintaining the Coherence of a Running Lisp,”
International Lisp Conference, 2005.
http://www.cs.yale.edu/homes/dvm/papers/lisp05.pdf
- 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 (
mk-defsystem
)
and defsystem (defsystem-4
, kmp’s Memo 801).
- Marco Antoniotti and Peter Van Eynde:
“
DEFSYSTEM
: A 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
defsystem-3.x
.
- Richard Elliot Robbins:
“BUILD: A Tool for Maintaining Consistency in Modular Systems”, MIT AI TR 874, 1985.
http://www.dtic.mil/dtic/tr/fulltext/u2/a162744.pdf
- Kent M. Pitman (kmp): “The Description of Large Systems”, MIT AI Memo 801, 1984.
Available in updated-for-CL form on the web at
http://nhplace.com/kent/Papers/Large-Systems.html
- 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)
http://bitsavers.org/pdf/mit/cadr/chinual_3rdEd_Mar81.pdf