23b4c7c8c27f51f02d7a6ab5afabc62e53be6f1d
[uffi.git] / doc / intro.sgml
1 <!-- -*- DocBook -*- -->
2
3 <chapter>
4   <title>Introduction</title>
5   <sect1>
6     <title>Purpose</title>
7     <para> This reference guide describes
8       &uffi;, a Lisp package that provides persistent cross-implementation
9       support of C-language compatible libraries.
10     </para>
11   </sect1>
12
13   <sect1>
14     <title>Background
15     </title>
16     <para>
17       Every Common Lisp implementation has
18       a method for interfacing to C-language compatible
19       libraries. Unfortunately, these method vary widely amongst
20       implementations. Currently, to support multiple implementations,
21       developers must write a different interface library for each Common
22       Lisp implementation.
23     </para>
24     <para>
25       &uffi; gathers a common subset of functionality between Common Lisp
26       implementations. &uffi; wraps this common subset of functionality with
27       it's own syntax and provides macro translation of uffi functions into
28       the specific syntax of supported Common Lisp implementations.
29     </para>
30     <para>
31       Developers who use &uffi; to interface with C libraries will
32       automatically have their code function in each of uffi's supported
33       implementations.
34     </para>
35   </sect1>
36
37   <sect1>
38     <title>Supported Implementations</title> 
39     <para> The primary tested and supported platforms for &uffi; are: 
40     </para>
41     <itemizedlist mark="opencircle">
42       <listitem><para>&acl; v6.1 on Redhat Linux 7.2 and Microsoft Windows.</para></listitem>
43       <listitem><para>&lw; v4.2 on Redhat Linux 7.2 and Microsoft Windows.</para></listitem>
44       <listitem><para>&cmucl; 18c on Redhat Linux 7.2.</para></listitem>
45     </itemizedlist>
46   </sect1>
47
48     <sect1>
49       <title>Design Overview</title>
50       <para>
51         &uffi; was designed as a cross-implementation compatible 
52         <emphasis>Foreign Function Interface</emphasis>. Necessarily,
53         only a common subset of functionality can be
54         provided. Likewise, not every optimization for that a specific
55         implementation provides can be supported. Wherever possible,
56         though, implementation-specific optimizations are invoked.
57       </para> 
58     </sect1>
59
60 </chapter>