Re: Naive DEFSYSTEM replacement
"joswig (as joswig at lisp dot de)" <[email protected]>
| Newsgroups | gmane.lisp.lispworks.general |
|---|---|
| Message-ID | <[email protected]> |
The CMU AI Repository has quite a bunch of libraries and applications shared pre ASDF. For example Portable Common LOOPS (PCL) was available on 10+ implementations. Gabriel Benchmarks. ITERATE. SERIES. CLX, CLUE, CLIO. ZEBU, ILU,, Kantrowith contribs, ... > Am 28.07.2025 um 03:08 schrieb Robert Goldman (as rpgoldman at sift dot net) <[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. >