FFI is short for Foreign Function Interface, which is useful for linking to arbitrary C (and not only) library from Lisp code.

  • ah2cl - ah2cl (Another Header to Common Lisp converter) is a tool for parsing C header files and generating FFI bindings for CLISP and UFFI
  • c2ffi - The original c2ffi is no longer actively developed
  • cffi-j - cffi-j is a set of CFFI bindings for the J programming language (libj.so library)
  • cl-applescript - cl-applescript provides an FFI API for interfacing AppleScript and Common Lisp
  • cl-autowrap - cl-autowrap is a point-and-shoot tool for creating and distributing FFI wrappers
  • CL-ObjC - CL-OBJC is a portable common-lisp/objective-c bridge written using CFFI
  • cl-tk - CL-TK provides a simple bridge to Tcl/Tk
  • CLERIC - CLERIC (Common Lisp Erlang Interface) is an implementation of the Erlang distribution protocol, comparable with erl_interface and jinterface
  • CLLIB - CLLIB is a varied collection of Common lisp tools and routines in CLOCC
  • clTcl - clTcl provides an interface to Tcl/Tk via Tcl scripts embedded in Common Lisp
  • Cobstor - Cobstor is a tool and an API to seamlessly access legacy Cobol application files from Common Lisp
  • Common Lisp Library Audience Expansion Toolkit - FFI
  • cparse - cparse is a C header file parser for building FFIs
  • de.setf.thrift - de setf thrift is a binding for the Apache Thrift framework for scalable cross-language services development
  • de.setf.utility - de setf utility is a collection of Common Lisp utilities functions and several purpose-specific libraries
  • ffa - Foreign friendly arrays for Common Lisp
  • ffigen - FFIGEN (Foreign Function Interface GENerator) is a program suite that facilitates the writing of translators from C header files to foreign function interfaces for particular language implementations. -- FFIGEN Home Page
  • Foreign Structures By Value - Foreign Structures By Value (FSBV) is an FFI library that allows calling foreign functions that take or return foreign structures by value, as opposed to by reference (by pointer)
  • foreign-numeric-vector - foreign-numeric-vector is a package for working with numeric vectors stored in the foreign (non-Lisp) heap
  • IOlib-POSIX - This library is obsolete and should not be used
  • objcffi - objcffi is a library to allow the creation of objective-c classes and methods directly in Common Lisp
  • Objective-CL - Objective-CL is a Common-Lisp/Objective-C bridge currently supporting a range of Lisp implementations on Mac OS X and GNUstep
  • perl-in-lisp - Perl-in-Lisp is a Common Lisp FFI interface to the Perl 5 API
  • Pyffi - Pyffi, inspired by Python-on-Lisp, is a Python programming language FFI for Common Lisp
  • Python-On-Lisp - Python-On-Lisp is a Python programming language FFI for Common Lisp
  • RCL - RCL is an FFI to communicate with the R statistics environment
  • rclg - rclg is an R (statistics programming language) FFI for Common Lisp
  • SWIG - SWIG is a (non-CL) tool that can generate FFI binding code from C/C++ header file declarations
  • uffi - CFFI is recommended as the replacement for UFFI.
  • Verrazano - Verrazano is no longer actively developed; see cl-autowrap (which uses c2ffi) or maybe SWIG.
  • Virgil - Virgil is a high-level and extensible FFI, built on top of CFFI and oriented towards marshaling lisp data into raw memory and back
  • WAAF-CFFI - WITH-ARRAY-AS-FOREIGN-POINTER - Allows Lisp arrays to be passed to foreign functions by copying their contents to malloc'ed foreign space, using only CFFI

Integrating with Java: (main topic: Java)

  • ABCL - Armed Bear Common Lisp (aka ABCL) is a Common Lisp implementation that runs on a Java Virtual Machine; ABCL 1.5.0 was released on June 11, 2017
  • cloak - cloak is an experimental implementation of the JVM for SBCL on Linux/x86
  • CLplusJ - CL+J is an exact, safe and complete Common Lisp interface to Java through JNI
  • Foil - Foil (Foreign Object Interface for Lisp) consists of a protocol and a set of libraries that facilitate access to popular object runtimes, such as the JVM (Java) and the CLI/CLR (dotNET), and their libraries, from Lisp
  • JACOL - The JACOL system can be used to link Java and Common Lisp applications
  • Jatha - Jatha is a Java library that implements a fairly large subset of Common LISP, including most of the datatypes (e.g
  • jfli - jfli provides comprehensive, safe, dynamic and Lisp-y access to Java and Java libraries as if they were Lisp libraries, for use in Lisp programs, i.e
  • jss - jss is an extension for ABCL that makes it easier for me(AlanRuttenberg) to write lisp code that calls java libraries
  • LIJOS - The LIJOS system is a Lisp Implementation of the Java ObjectStream
  • LinJ - Linj is a Common Lisp-like language that tries to be as similar to
  • Lisplets - Lisplets are Java Servlets that forward their requests, and gather their response headers, using s-expressions over sockets

Integrating with .NET: (main topic: dotNET)

  • Foil - Foil (Foreign Object Interface for Lisp) consists of a protocol and a set of libraries that facilitate access to popular object runtimes, such as the JVM (Java) and the CLI/CLR (dotNET), and their libraries, from Lisp
  • RDNZL - RDNZL (pronounced "Redunzl") enables Common Lisp applications to interact with dot-NET libraries

Of interest to FFI implementors may be Reini Urban's survey and thoughts of various FFI implementations. (mirror)

One step beyond FFI is the programming language topic, which lists various programming languages implemented in Common Lisp.