[asdf-devel] asdf source registry

Faré fahree at gmail.com
Fri Dec 18 15:09:25 UTC 2009

2009/12/18 Nikodemus Siivola <nikodemus at random-state.net>:
> Some questions and notes:
> How do I instrospect *SOURCE-REGISTRY*? The outlined API only puts
> stuff there, but doesn't tell me how to read it.
For the moment, I don't have a good story for a public API on how to do that.
But considering that only ASDF and XCVB currently will use that registry,
and that I can commit in both, I don't think this is a big issue for now:
whatever good API I find should do, and won't be exported until it's good
and/or someone asks.

> I would like to be able to mutate *SOURCE-REGISTRY* (even if by
> cloning without actual destructive operations) at runtime to isolate
> things.
What about a (defmacro with-source-registry ((registry) &body body) ...) ?

> Under which circumstances one is expected to use which of the
> configuration methods: are libraries that are composed of multiple
> systems allowed/expected to ship with configuration files? In
> particular, the purpose of the environment variable seems unclear to
> me.
Configuration files would probably not be shipped with libraries or programs
but possibly generated by scripts that build and/or install the
libraries or programs.
Indeed, these configuration files contain paths that change from
machine to machine
(relative paths don't make sense).

> Being able to specify individual files seems important to me.
Do you have a use case? It would mean that the source registry would
contain things
that are very specific to the build system being used. Then again, so
will it be if you
use the "symlink a bunch of .asd files" pattern.

> COMMON-LISP-CONFIGURATION: Who will maintain this? What other things
> belong in there?
I'd say community consensus, starting on the ASDF mailing-list.
Other things that belong there would be anything that portably configures
the general installation of Lisp software.

> Having -SOURCE-REGISTRY-CONFIGURATION as a suffix in all the names
> seems excessive. Maybe just -SOURCE-REGISTRY?

> I'm not sure I see the point of having both INITIALIZE- and ENSURE-,
> especially given CLEAR-.
Initialize is expensive. Ensure is cheap in amortized costs.
For backwards compatibility, ASDF will call ensure a lot.

> PROCESS-SOURCE-REGISTRY-CONFIGURATION seems like a bad name, since it
> doesn't do that. PROCESS-FOR-SOURCE-REGISTRY maybe?

> Caching: you mean caching by ASDF, not by the config system?

> I think I might have a better overall idea of what you intend if you
> described this configuration system separately from the ways ASDF
> would use it -- in particular since it seems to me several things
> might want to use this to manage their own external resources.
Well, apart from the package, I don't see exactly how other programs
would use it.

Maybe the package should be COMMON-LISP-SOURCE-REGISTRY instead.

If you could ask a unique question to a computer during a Turing test,
what would you ask?
        — Douglas Hofstadter, Metamagical Themas

More information about the asdf-devel mailing list