Re: Naive DEFSYSTEM replacement
"Robert Goldman (as rpgoldman at sift dot net)" <[email protected]>
| Newsgroups | gmane.lisp.lispworks.general |
|---|---|
| Message-ID | <[email protected]> |
On 26 Jul 2025, at 19:55, Adam Weaver (as adam at cleversure dot com dot au) wrote: > Anyway, thanks Tim. I'm going to go back to ASDF, because I do like > its > configuration file format. And although MK:DEFSYSTEM looks interesting > too, ASDF2 is the one bundled with LW. And I'm wedded to LW. One big advantage of ASDF over `MK-DEFSYSTEM` is the key Dan Barlow idea of using `*load-truename*` to find the source files for a system. `MK-DEFSYSTEM` still leaves you without any way to load libraries without laboriously setting up logical pathnames or something. I remember the bad old days when if you wanted to install a new system, you had to edit a bunch of files to tell CL where to find the source. Honestly, in the bad old days before ASDF there really were not commonly used libraries in the CL world! I can remember when almost the only libraries were code libraries shared among members of a single lab. Or, as in the case of *Paradigms of AI Programming*, one set of source files for a single textbook. Not 100% true, but mostly true. It's hard to overstate how important Barlow's development of ASDF was to the CL community. For example, here's a piece of the Garnet graphical UI system: ``` ;;; This file basically moves all of the moving parts of garnet-loader ;;;into one place, it also establishes a few other options which may ;;;be useful when working in Garnet. As the corresponding constants ;;;are defined in garnet-loader with a defvar statement, you can ;;;modify this and then load garnet-loader. ;;; ;;; ;;; This next variable should be set to the location of all ;;; garent sources, libs, binaries. If for some reason this load form ;;; does not work for you, set this variable appropriately. This form ;;; is also loaded (as a defvar) in garnet-loader so you can comment ;;; this line out if your config-garnet is in a different directory ;;; than your garnet-loader. (setq Your-Garnet-Pathame (namestring (make-pathname :directory (pathname-directory *load-truename*)))) ``` This is for a system that has *no external dependencies*. Now imagine trying to assemble a set of libraries as in modern programming, where there might be dependencies you don't even know! No ASDF: no quicklisp. It would be like Python without PyPi.