ASDF

Another System Definition Facility

ASDF 2

We released ASDF 2 on May 31st 2010. It has since been widely adopted by the CL community.

What it is

ASDF is a tool for describing how source files are organized: what depends on which and when.

It is roughly what Common Lisp hackers use to build software where C hackers would use say GNU Make.

ASDF stands for Another System Definition Facility, in the continuity of the Lisp DEFSYSTEM of yore.

What it is not

ASDF will not download missing software components for you. For that, you want Quicklisp, that builds upon ASDF, and is great for pulling and installing tarballs of packages you may depend upon; we also recommend clbuild, that now builds upon Quicklisp, as a great tool for pulling from version control packages you need to modify or want to contribute to. We recommend you should not use ASDF-Install anymore, as it is another such piece of software that is both unmaintained and obsolete.

Supported Implementations

ASDF 2 now supports all CL implementations that seem to have any current user base.

Most implementations provide ASDF 2 as a module, and you can simply (require :asdf) or (require "asdf"). Note that most implementations accept :asdf, "ASDF" and "asdf" indiscriminately, but that as exceptions, CMUCL accepts only upper-case (or a case-converted symbol), whereas CLISP accepts only lower-case (in a string, or again a case-converted symbol again).

A few implementations don't provide ASDF yet, but have announced they will in their next release. As for remaining implementations, they are obsolete or mostly unmaintained, ASDF 2 supports them if you load it manually, though there might never be a next release to provide it through require.

Provide "asdf" Will provide it Obsolete
Free abcl ccl clisp cmucl ecl sbcl xcl gcl mcl
Proprietary allegro lispworks scl cormanlisp genera

If there is an old or new implementation that we are missing, it shouldn't hard to adapt ASDF to support it. Ask us!

Documentation

You can read our manual:

Regarding the internal design of ASDF in general and the work we did on ASDF 2, see the last draft version of our paper for ILC 2010, Evolving ASDF: More Cooperation, Less Coordination

Finally, while the manual covers all the basics, some advanced or new features remain underdocumented. Please contact our mailing-list (see below) for any issue that isn't well-documented enough.

Getting it

Though they may lag behind the version here, ASDF comes bundled with most Lisps. To get the greatest and latest, you can:

Reporting Bugs

To report bugs, you can use our launchpad project. If you're unsure about the bug or want to discuss how to fix it, you can send email to the project mailing-list below.

Mailing Lists

Contributing

Join our mailing list, check the code out from git, send questions, ideas and patches!

What is happening

Since December 2009
François-René Rideau is de facto maintainer, with notable contributions from Robert P. Goldman, Juanjo Garcia-Ripoll and James Anderson. ASDF 2 released with many clean-ups, better configurability and updated documentation.
May 2006 to November 2009
Gary King is de facto maintainer, with notable contributions from Robert P. Goldman, Nikodemus Siivola, Christophe Rhodes, Daniel Herring. Many small features and bug fixes, making the project more maintainable, moving to using git and common-lisp.net. Last version: 1.369.
May 2004 to April 2006
Christophe Rhodes is de facto maintainer, with notable contributions from Nikodemus Siivola, Peter Van Eynde, Edi Weitz, Kevin Rosenberg. The system made more robust, a few more features. Last version: 1.97.
August 2001 to May 2004
Developed by Daniel Barlow, with notable contributions from Christophe Rhodes, Kevin Rosenberg, Edi Weitz, Rahul Jain. Last version: 1.37.
August 2001
Created by Daniel Barlow