All releases of ASDF
Releases starting with ASDF 2
Releases starting with ASDF 3 (including 2.27 and later pre-releases)
Furthermore, releases starting with ASDF 3.1.2 (May 2014),
though they count as ASDF 3, include enough progress that they
You may depend on the presence or absence of these features
to write code that takes advantage of recent ASDF functionality
but still works on older versions, or at least detects the old version and signals an error.
Additionally, all releases starting with ASDF 2
define a function
(asdf:asdf-version) you may use to query the version.
All releases starting with 2.013 display the version number prominently
on the second line of the asdf.lisp source file.
If you are experiencing problems or limitations of any sort with ASDF 1 or ASDF 2, we recommend that you should upgrade to the latest release, be it ASDF 3 or other.
Finally, here is a code snippet to programmatically determine what version of ASDF is loaded, if any, that works on all versions including very old ones:
(when (find-package :asdf) (let ((ver (symbol-value (or (find-symbol (string :*asdf-version*) :asdf) (find-symbol (string :*asdf-revision*) :asdf))))) (etypecase ver (string ver) (cons (with-output-to-string (s) (loop for (n . m) on ver do (princ n s) (when m (princ "." s))))) (null "1.0"))))
If it returns
nil then ASDF is not installed.
Otherwise it should return a string.
If it returns
"1.0", then it can actually be
any version before 1.77 or so, or some buggy variant of 1.x.
If it returns anything older than
you really need to upgrade your implementation or at least upgrade its ASDF.
See Replacing your implementation's ASDF.