Re: CVS commit: uffi
Kevin Rosenberg <kevin-HJRc7zDS/[email protected]> Mon, 18 Mar 2002 14:46:15 -0700 (MST)
| Newsgroups | gmane.lisp.uffi.devel |
|---|---|
| Message-ID | <[email protected]> |
> Just a short announce that I plan to add cormanlisp support > as soon as my schedule permits. probably mid of april. Great -- glad to hear that. John Desoi is planning on adding MCL support. With then 5 platforms being supported, I think that the current technique of placing all of the implementations in one file is getting unwieldy. Further, since the interface is stabilizing, I think it may soon be time to split each implementation into it's own set of source files. Mid-april sounds like a good time to start. I hope that by that time the interface will be stable. > BTW: I agree that cstrings should be automatically translated. > (If you wanted to say that) String handling is problematic due to implementation variance. CMUCL supports automatically translation to and from functions the best. ACL handles it pretty well, but I've not found a way to prevent a run-time warning about translating NIL values into NULL pointers. LW doesn't handle automatic conversion at all. Thus, for cross-platform support, UFFI users must call routines to translate strings to and from functions. Unless, at some point, I add a wrapper around a function definition that does string translation. For CMUCL, currently, with-cstring and convert-from-cstring doesn't do anything to the arguments. So, I have a different set of routines (foreign-string) which always allocates space and copies strings. My thought is to make CMUCL use foreign-string type functionality in it's function calls. Then, I can get rid of the set of routines that, for some implementations translation and for other implementations (CMUCL) do nothing. I'm open to suggestions. The main design criteria is 1) cross-platform compatibility and 2) take advantage of implementation optimizations. Whereever possible, I want to prevent someone from writing to an implementation-specific FFI because they thought UFFI added too much overhead or doesn't take advantage of implementation-specific optimizations. Kevin