X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=doc%2Fintro.xml;h=f9e05c60eff8d1fb0bbfdeb12cf37c5b1b7e25dc;hb=895cdddc64ad069c4d8173a21d0d5ce47b79e919;hp=6f3863b092dd417bba0873721b487bc047774569;hpb=92b7399d3a71e78e821f3baf42507d22ff25c31b;p=uffi.git diff --git a/doc/intro.xml b/doc/intro.xml index 6f3863b..f9e05c6 100644 --- a/doc/intro.xml +++ b/doc/intro.xml @@ -1,33 +1,38 @@ - + + +%myents; +]> - + Introduction - + Purpose - This reference guide describes - &uffi;, a package that provides a cross-implementation - interface from Common Lisp to C-language compatible libraries. + + This reference guide describes &uffi;, a package that provides a + cross-implementation interface from Common Lisp to C-language + compatible libraries. - - + + Background - Every Common Lisp implementation has - a method for interfacing to C-language compatible - libraries. These methods are often termed a - Foreign Function Library Interface - (&ffi;). Unfortunately, these methods vary widely - amongst - implementations, thus preventing the writing of a portable FFI to a -particular C-library. + Every Common Lisp implementation has a method for interfacing to + C-language compatible libraries. These methods are often termed + a Foreign Function Library Interface + (&ffi;). Unfortunately, these methods vary widely amongst + implementations, thus preventing the writing of a portable FFI + to a particular C-library. - &uffi; gathers a common subset of functionality between Common Lisp - implementations. &uffi; wraps this common subset of functionality with - it's own syntax and provides macro translation of uffi functions into - the specific syntax of supported Common Lisp implementations. + &uffi; gathers a common subset of functionality between Common + Lisp implementations. &uffi; wraps this common subset of + functionality with it's own syntax and provides macro + translation of uffi functions into the specific syntax of + supported Common Lisp implementations. Developers who use &uffi; to interface with C libraries will @@ -36,13 +41,13 @@ particular C-library. - + Supported Implementations The primary tested and supported platforms for &uffi; are: &acl; v6.2 on Debian GNU/Linux -FreeBSD 4.5, Solaris v2.8, and Microsoft Windows XP. + FreeBSD 4.5, Solaris v2.8, and Microsoft Windows XP. &lw; v4.2 on Debian GNU/Linux and Microsoft Windows XP. &cmucl; 18d on Debian GNU/Linux, FreeBSD 4.5, and Solaris 2.8 &sbcl; 0.7.8 on Debian GNU/Linux @@ -56,53 +61,53 @@ FreeBSD 4.5, Solaris v2.8, and Microsoft Windows XP. - - Design - - Overview - - &uffi; was designed as a cross-implementation - compatible Foreign Function Interface. - Necessarily, - only a common subset of functionality can be - provided. Likewise, not every optimization for that a specific - implementation provides can be supported. Wherever possible, - though, implementation-specific optimizations are invoked. - - + + Design + + Overview + + &uffi; was designed as a cross-implementation + compatible Foreign Function Interface. + Necessarily, + only a common subset of functionality can be + provided. Likewise, not every optimization for that a specific + implementation provides can be supported. Wherever possible, + though, implementation-specific optimizations are invoked. + + - - Priorities - - The design of &uffi; is dictated by the order of these priorities: - - - - - Code using &uffi; must operate correctly on all - supported implementations. - - - - - Take advantage of implementation-specific optimizations. Ideally, - there will not a situation where an implementation-specific - &ffi; will be chosen due to lack of optimizations in &uffi;. - - - - Provide a simple interface to developers using -&uffi;. This priority is quite a bit lower than the above priorities. -This lower priority is manifest by programmers having to pass types in -pointer and array dereferencing, needing to use -cstring wrapper functions, and the use of -ensure-char-character and ensure-char-integer functions. My hope is -that the developer inconvenience will be outweighed by the generation -of optimized code that is cross-implementation compatible. - - - - - + + Priorities + + The design of &uffi; is dictated by the order of these priorities: + + + + + Code using &uffi; must operate correctly on all + supported implementations. + + + + + Take advantage of implementation-specific optimizations. Ideally, + there will not a situation where an implementation-specific + &ffi; will be chosen due to lack of optimizations in &uffi;. + + + + Provide a simple interface to developers using + &uffi;. This priority is quite a bit lower than the above priorities. + This lower priority is manifest by programmers having to pass types in + pointer and array dereferencing, needing to use + cstring wrapper functions, and the use of + ensure-char-character and ensure-char-integer functions. My hope is + that the developer inconvenience will be outweighed by the generation + of optimized code that is cross-implementation compatible. + + + + +