X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;ds=sidebyside;f=doc%2Fintro.sgml;h=d71f92a041525f7a3d64881a9033146970acb00a;hb=eb03e5da9d2a2918aff4004597205b36a32f7f6e;hp=d432b9f218ff03fa9f237913cd45e99046046c56;hpb=737a3e3a8d18dd80f4cda0d93bc20a3b5677dbee;p=uffi.git
diff --git a/doc/intro.sgml b/doc/intro.sgml
index d432b9f..d71f92a 100644
--- a/doc/intro.sgml
+++ b/doc/intro.sgml
@@ -5,8 +5,8 @@
Purpose
This reference guide describes
- &uffi;, a Lisp package that provides persistent cross-implementation
- support of C-language compatible libraries.
+ &uffi;, a package that provides a cross-implementation
+ interface from Common Lisp to C-language compatible libraries.
@@ -16,10 +16,12 @@
Every Common Lisp implementation has
a method for interfacing to C-language compatible
- libraries. Unfortunately, these method vary widely amongst
- implementations. Currently, to support multiple implementations,
- developers must write a different interface library for each Common
- Lisp implementation.
+ 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
@@ -36,29 +38,71 @@
Supported Implementations
- The primary tested and supported platforms for &uffi; are:
+ The primary tested and supported platforms for &uffi; are:
- &acl; v6.1 on Redhat Linux 7.2 and Microsoft Windows.
- &lw; v4.2 on Redhat Linux 7.2 and Microsoft Windows.
- &cmucl; 18c on Redhat Linux 7.2.
+ &acl; v6.2 on Debian GNU/Linux
+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
+ &scl; 1.1.1 on Debian GNU/Linux
+ &openmcl; 0.13 on Debian GNU/Linux for PowerPC
-
-
-
- Installation
-
- Installation is fairly simple. The main requirement is that you
- have a copy of &defsystem;. You can download the latest version
- of &defsystem; from the
- CLOCC
- CVS tree. After installing &defsystem;, simply
- push the
- directory containing &uffi; into
- mk:*central-registry*. Whenever you
-want to load the &uffi; package, use the function
- (mk:load-system :uffi).
+ Beta code is included with &uffi; for
+
+ &openmcl; and &mcl; with MacOSX
+
+
+
+ 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.
+
+
+
+
+
+