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 - 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
  • abcl-jazz - Code examples on to call the Java Swing API under ABCL to program GUIs
  • 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
  • snow - Snow is a GUI description language for Java and Common Lisp, currently supporting the Swing UI library

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 (last modified: 2004-05-04).

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