Common Lisp, ASDF, and Quicklisp: packaging explained
by todsacerdoti on 12/10/2025, 11:10:58 AM
https://cdegroot.com/programming/commonlisp/2025/11/26/cl-ql-asdf.html
Comments
by: susam
Quicklisp is great and I recommend using it along with a brief introduction in both my Common Lisp setup guides for Vim and Emacs:<p><a href="https://susam.net/lisp-in-vim.html" rel="nofollow">https://susam.net/lisp-in-vim.html</a><p><a href="https://github.com/susam/emacs4cl" rel="nofollow">https://github.com/susam/emacs4cl</a><p>However, for my personal projects, I usually just download the package versions I need from GitHub with curl within a simple while loop:<p><a href="https://github.com/susam/susam.net/blob/0.4.0/Makefile#L83-L84" rel="nofollow">https://github.com/susam/susam.net/blob/0.4.0/Makefile#L83-L...</a><p><a href="https://github.com/susam/susam.net/blob/0.4.0/meta/cldeps/form.txt" rel="nofollow">https://github.com/susam/susam.net/blob/0.4.0/meta/cldeps/fo...</a><p>Then I point ASDF to the download directory with CL_SOURCE_REGISTRY and load it in my Lisp program using good old ASDF:LOAD-SYSTEM:<p><a href="https://github.com/susam/susam.net/blob/0.4.0/etc/form.service#L8" rel="nofollow">https://github.com/susam/susam.net/blob/0.4.0/etc/form.servi...</a><p><a href="https://github.com/susam/susam.net/blob/0.4.0/form.lisp#L5" rel="nofollow">https://github.com/susam/susam.net/blob/0.4.0/form.lisp#L5</a><p>The last four links I have shared above all get automated by a simple QL:QUICKLOAD call if we're using Quicklisp, and that's one of the reasons Quicklisp has become almost a de facto standard in the community.
12/11/2025, 2:34:04 AM
by: mtdewcmu
I started learning Common Lisp, but ASDF and Quicklisp threw me off. I couldn't tell if you were supposed to choose one or the other or they were used together. This might revive my interest in Common Lisp if I get around to reading it. But in the meantime I drifted off to Racket, which is relatively well documented and has extensive libraries and really unique features.
12/10/2025, 11:34:35 PM
by: vindarel
Pretty good, except and I don't share the advice to use package-inferred-systems, like, at all. It hides the third-party libraries you rely on, it prevents you from using one package in multiple files (a flexibility not common out there), you can't see the project's structure at first glance… just use a simple .asd file declaration, you'll be fine.<p>more: <a href="https://lispcookbook.github.io/cl-cookbook/" rel="nofollow">https://lispcookbook.github.io/cl-cookbook/</a><p>libraries: <a href="https://github.com/CodyReichert/awesome-cl/" rel="nofollow">https://github.com/CodyReichert/awesome-cl/</a>
12/11/2025, 10:46:37 AM
by: regularfry
What's missing from any of this, which has <i>really</i> confused me in the past, is any notion of dependency versioning. We get predefined dependencies as a distribution in quicklisp - which is great as far as it goes - but how do people manage without being able to say "this system depends on a version of that system greater than X"?
12/10/2025, 11:43:26 PM
by: brooke2k
I messed around with common lisp for a while a few months ago, and I remember the packaging/dependency situation was by far the most difficult and confusing part. So thanks for writing this article, bookmarked it for the next time I write some CL :)
12/10/2025, 11:44:47 PM
by: tmtvl
Quicklisp is great, it's the defacto standard, but compared to OCICL it kinda feels ancient. There's also CLPM, but last time I checked it was broken by a combination of dead links and missing functions.
12/11/2025, 1:19:22 AM
by: cvdub
ASDF (Another System Definition Facility) is my all time favorite name for a piece of software. Descriptive, funny, and easy to type!
12/11/2025, 4:38:13 AM
by: brabel
Another point that needs clarification is testing. Theres a lot of different test systems but they are all amateurish. Does anyone know something that works well? Stuff like rov, parachute, clunit is all really basic. Not even support for good html reports and tagging tests for example.
12/11/2025, 1:23:19 PM
by: librecell
thank you so kindly for sharing this it is very helpful!
12/11/2025, 2:39:39 AM