Re: Naive DEFSYSTEM replacement
"Adam Weaver (as adam at cleversure dot com dot au)" <[email protected]>
| Newsgroups | gmane.lisp.lispworks.general |
|---|---|
| Message-ID | <[email protected]> |
On Sun, 2025-07-27 at 20:08 -0500, Robert Goldman wrote: > 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 loadform > ;;; 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. Thanks RG! That sort of history is awesome. It certainly explains the accretion of cruft in older systems. To me it speaks of CL's longevity :) I hadn't realised how old ASDF must be. CL.dev says "2001" but I'm guessing a lot of the design came from much much earlier systems. I still don't really get UIOP though. Sure, there are inconsistencies between implementations (vagaries in the standard?) but Peter Seibel wrote a 100-odd-line shim FAD for his textbook to paper over the PATHNAME differences. This was the reason I asked the question in the first place. I have no doubts that all the stuff in ASDF/UIOP/Whatevs are there for a *reason*, it was just that the *reason* eluded me. Anyway, thanks again for the Garnet example, really fascinating stuff. It's not quite "in my day we programmed using a magnetic needle and a steady hand" type history, but it is enlightening :) A. _______________________________________________ Lisp Hug - the mailing list for LispWorks users [email protected] http://www.lispworks.com/support/lisp-hug.html