The CFFI library is composed of a Lisp-implementation-specific backend in the CFFI-SYS package, and a portable frontend in the CFFI package.
The CFFI-SYS backend package defines a low-level interface to the native FFI support in the Lisp implementation. It offers operators for allocating and dereferencing foreign memory, calling foreign functions, and loading shared libraries. The CFFI frontend provides a declarative interface for defining foreign functions, structures, typedefs, enumerated types, etc... It is implemented in portable ANSI CL making use of the low-level operators exported by CFFI-SYS.
A UFFI compatibility layer is also included.
SWIG can also generate CFFI code from headers.