1 <!-- -*- DocBook -*- -->
4 <title>Introduction</title>
7 <para> This reference guide describes
8 &uffi;, a package that provides a cross-implementation
9 interface from Common Lisp to C-language compatible libraries.
17 Every Common Lisp implementation has
18 a method for interfacing to C-language compatible
19 libraries. These methods are often termed a
20 <emphasis>Foreign Function Library Interface</emphasis>
21 (&ffi;). Unfortunately, these methods vary widely
23 implementations, thus preventing the writing of a portable FFI to a
27 &uffi; gathers a common subset of functionality between Common Lisp
28 implementations. &uffi; wraps this common subset of functionality with
29 it's own syntax and provides macro translation of uffi functions into
30 the specific syntax of supported Common Lisp implementations.
33 Developers who use &uffi; to interface with C libraries will
34 automatically have their code function in each of uffi's supported
40 <title>Supported Implementations</title>
41 <para> The primary tested and supported platforms for &uffi; are:
43 <itemizedlist mark="opencircle">
44 <listitem><para>&acl; v6.1 on Redhat Linux 7.2 and Microsoft Windows.</para></listitem>
45 <listitem><para>&lw; v4.2 on Redhat Linux 7.2 and Microsoft Windows.</para></listitem>
46 <listitem><para>&cmucl; 18c on Redhat Linux 7.2.</para></listitem>
51 <title>Design Overview</title>
53 &uffi; was designed as a cross-implementation compatible
54 <emphasis>Foreign Function Interface</emphasis>. Necessarily,
55 only a common subset of functionality can be
56 provided. Likewise, not every optimization for that a specific
57 implementation provides can be supported. Wherever possible,
58 though, implementation-specific optimizations are invoked.