On 3/30/10 Mar 30 -5:00 AM, Juan Jose Garcia-Ripoll wrote:
Some considerations:
- In order to achieve a declarative syntax in ASDF, the system that we
built it with should have the least knowledge about ASDF. In other words, it should work just the same if we bulid it with any other system.
- Following this reasoning, logical pathnames are a useful choice
because we do not force the application to invoke any functions on the system being built, for instance. Using special-purpose variables such as *asdf-system-location* are also not an option.
- A complementary action that ASDF might take is to load the libraries
with a different value of *default-pathname-defaults*, but this may have nasty effects if the library is expected to work in the directory where the user is going to invoke it.
- The user of the library should be given full choice over the logical
pathnames he / she wants to use, within margings. If we begin imposing ASDF-specific choices such as COMMON-LISP:ASDF;CL-PCRE;*.*.* then we are doomed.
- Logical hostname pollution is not such a big issue, as developers tend
to have a good sense of measure in choosing their hostnames, prefixing them with their actual hostnames (de.weitz.cl-ppcre: ...) or using other uniform conventions. We can recommend their use and even perform some sanity check: whether two systems use the same logical hostname, for instance.
- Logical hostname lookup is cheap, log(#hostnames) if using sorted
vectors or log(1) for hashes. Logical pathname translation is NOT CHEAP, it takes a time which is linear in the number of translations.
- Including logical pathnames in defsystem instead of just the name of
the host is going to be problematic. I know at least one implementation (SBCL) that complains when we try to build a logical pathname with a host name that has no logical translations. It is the fish eating its own tail: we can not define the logical pathname in defsystem and thus we can not define the translation and thus...
- We do not need to fix logical pathnames. We just have to offer them as
a portable solution for system distribution. Developers will have to care about the way they name their files and learning how logical pathnames work.
Juanjo's argument seems persuasive, since it does not require us to wait until the Messiah comes, bringing improved logical pathnames, but allows us to live with the logical pathnames that we have today.
Question: should we raise a style warning if the user supplies a logical pathname that does not comply with the ANSI spec? I would prefer that we do that.
Question: are we going to create a logical pathname translation for just the system sources? Or should we create also something like
CL-PPCRE;FASLS;*.*.*
in addition? This seems a little tricky, since it requires that we hook into the output name rewriting logic, but probably is The Right Thing.
Best, Robert