The libffi library is useful in building a bridge between interpreted and natively compiled code. Some notable users include:
D :; libffi-d :: Bindings to the libffi library for D. Primarily used for the MCI (Managed Compiler Infrastructure).
F-Script :;
F-Script :: Dynamically generates Cocoa classes written in F-Script.
Guile :;
GNU Guile :: libffi is used in Guile 1.9.8 and onwards
Haskell :;
GHC :: libffi has been used for the majority of the FFI performed by the GHC since late 2009.
Java :;
OpenJDK :: The open-source implementation of the Java Platform Standard Edition uses libffi to bridge between the interpreter and native code for Zero-Assembly port. :;
Dalvik :: Dalvik is the virtual machine which runs the Java platform on
Android mobile devices. libffi is used on Android ports for which no custom bridging code has been written. :;
Java Native Access (JNA) :: The JNI-free way to call native code from Java. :;
gcj :: The runtime library for the GNU Compiler for the Java Programming Language uses libffi to handle calls back and forth between interpreted and natively compiled code. gcj was a part of the GCC, the
GNU Compiler Collection.
JavaScript :; JSCocoa :: Call Objective-C code from javascript on Mac OS X and the iPhone (via the libffi-iphone port). :;
Mozilla :: libffi is used in the
js-ctypes library (previously known as ctypes.jsm) to call C functions within
JavaScript code (available in
XULRunner applications,
Firefox extensions etc). :; node-ffi :: A
Node.js addon for loading and calling dynamic libraries from JavaScript.
Lisp :; cffi-libffi :: The standard foreign function interface library for Common Lisp CFFI includes the cffi-libffi system to include support for passing and returning structure arguments by value. :; pixie :: pixie (a
Clojure inspired Lisp dialect) uses libffi as the default foreign function interface mechanism.
Perl :; FFI::Raw :: A thin wrapper around libffi. :; FFI::Platypus :: Newer, more convenient wrapper around libffi.
Python :;
CPython :: The default, most-widely used implementation of the Python programming language uses libffi in the standard ctypes library. :;
PyObjC :: Call Objective-C code from Python on Mac OS X.
Racket :;
Racket :: Call C code from this popular Scheme implementation.
Ruby :; Fiddle :: A libffi wrapper in the Ruby Standard Library :; Ruby-FFI :: A Foreign Function Interface extension for Ruby. :;
RubyCocoa :: Call Objective-C code from Ruby on Mac OS X. == References ==