James Bielman wrote:
This is emphatically *not* a reimplementation of UFFI's library code.
Ok. I'll shut up until I have time to investigate what it looks like.
For system libraries, there should not ever be a need to specify a directory in DEFINE-FOREIGN-LIBRARY.
Please emphasize this in the documentation! I've seen enough software documentation that does not explain how to actually use the software: what functions are important, which are helpers, etc.
*FOREIGN-LIBRARY-DIRECTORIES* exists as an escape hatch for users that want to extend this behavior
Same plead. Please state that in the documentation, so hopefully people will not make wrong assumptions (e.g. "I need to set the directory because that's what I'm used to with language XYZ" would be wrong here).
(:linux (:or "libGL.so.1" "libGL.so")) The "libGL.so" entries are there as a fallback,
That makes a lot of sense. Please provide such examples/recommendations in the documentation. (which of course raises the problem of untested code: the developer probably has libGL.so.1 on his machine and may not test the other case. So the other case is an "educated guess" :).
I disagree---these aren't wild guesses; the developer of a library should know what version of a library he is linking against, and document this information for each platform he's tested on.
[similar idea as here:]
IMHO, if I'm going to link against symbols in a shared library, I had better be aware of what major version I'm loading.
My experience is different, perhaps because I've seen mostly bindings, not applications. Bindings may have the property that they want to be as little restrictive as possible. E.g. Bindings for postgres 7 may still work with postgresql8, and vice-versa.
Regards, Jorg Hohle.
"Hoehle, Joerg-Cyril" Joerg-Cyril.Hoehle@t-systems.com writes:
My experience is different, perhaps because I've seen mostly bindings, not applications. Bindings may have the property that they want to be as little restrictive as possible. E.g. Bindings for postgres 7 may still work with postgresql8, and vice-versa.
Yeah, this is a good point. It's tough though, because in some Linux distributions, the user may not have a plain ".so" without a version unless he installs the *-dev package. Coming from the viewpoint of someone who might want to ship applications that used such a binding, and doesn't want his users to need development packages installed, I'm not sure what the best way to do this would be, other than list all the versions the library has been tested with.
James