Nikodemus Siivola <[EMAIL PROTECTED]> writes: > Pascal Bourguignon <[EMAIL PROTECTED]> writes: > >> We'd still have to resolve the version problem first. > > Easy. (Feel free to utilize, mangle, and ignore -- as suits > the project.)...
An explicit versioning mechanism for Lisp packages is neither sufficient nor necessary. Suppose you've got two versions of a package whose un-versioned name is FOO in your Lisp image; one version of FOO exports a symbol with name BAR, the other exports a symbol QUUX, and neither BAR nor QUUX is exported by both. AFAICT, there will always be files that won't be readable depending on which package the reader knows as FOO at read-time: a file containing the syntax "foo:bar" won't be readable one way, a file containing the syntax "foo:quux" won't be readable the other way. All the above also applies to the loader and load-time, too, except that the loader isn't as programmable as the reader. There are ways to work around this: (0) patch all sources before the reader gets at them, and never distribute fasls, (1) make a version-aware reader, (2) ensure that the required versions of packages be the default during processing of files. I think option (2) is a lot simpler than either (0) or (1). For asdf, it amounts to fairly small extension that munges the package-version space around compile-op and load-op [*], and then some bookkeeping in .asd files of systems distributed, to declare relationships between systems and packages. But if you do need to rejigger the package-version space around compile and load operations, why not just temporarily rearrange the package namespace itself, instead? This way, you don't need to do as much patching in order to integrate systems into distributions, and CL can be saved one more weird wrinkle. Using package names as implicit designators of versioning also has the advantage that people can start doing it now, without any in-advance agreements about how package versioning is supposed to work. -- RmK [*] Ideally, the frobbing would be an :around method on asdf systems, but asdf doesn't support :around or :before methods on systems in any useful way. _______________________________________________ Gardeners mailing list [email protected] http://www.lispniks.com/mailman/listinfo/gardeners
