libera/#commonlisp - IRC Chatlog
Search
19:49:22
dbotton
and want to browser for non-loaded "projects" too. I'll probably have to parse the asdf files to get the sub projects like clog/tools or load and unload them
6:42:51
Nilby
dbotton: Here's my highly unsatisfactory code for geting loadable systems https://plaster.tymoon.eu/view/3335#3335
6:49:46
Shinmera
dbotton: you can steal this https://github.com/Shirakumo/dist/blob/master/asdf.lisp
6:50:37
Shinmera
note that while what I do covers almost every case, in general what you're asking for is impossible. you need to load the ASDs (and thus potential systems) to determine what systems there are.
7:14:03
Nilby
Shinmera: A good demonstration that CL easy readability is convenient fiction. I feel like this could have been fixed a long time ago with few tweaks like a standard walker and *read-intern*, but how to fix stuff like eclector.reader:find-character => (code-char #xFFFD) ? Maybe more reader error conditions?
7:15:11
Shinmera
ASD files can be any arbitrary code, and system definitions could look like literally anything. The only way to get stuff out is to evaluate it.
7:16:49
beach
Nilby: Your code has several occurrences of incorrect indentation, and there are several violations of the rules stated on page 13 of the LUV slides.
7:18:09
Nilby
Shinmera: Yes. I completely agree, but even if everyone omitted any evaled code in ASD's it's trouble.
7:18:33
beach
Nilby: There are also some questionable practices in terms of software engineering, i.e., a function silently doing nothing when the input is not what it expects.
7:19:21
hayley
Now I wonder if there are enough hooks in ASDF, that just gleaning at the DEFSYSTEM form would give wrong results, even if the form fits the "shape" one expects.
7:24:50
Nilby
hayley: as you may know, ASDF was eventually made so you can do nearly everything without evaling, and it turns out it's possible to load much of quicklisp dist without eval, but still just the reading probalems that Shinmera has to work around. e.g. undefined package prefixes, unknown character names. I guess nobody puts structure literals in ASDs.
7:38:35
Nilby
but there's still things like :version (:read-file-form "version.sexp") or even the popular :long-description #.(uiop:read-file-string #P"README")