Developer(s) | Anthony Green |
---|---|
Initial release | October 7, 1996 |
Stable release | 3.4.6[1]
/ 18 February 2024 |
Repository |
|
Written in | C, Assembly language |
Operating system | Unix-like, Microsoft Windows, OS X, iOS, bare metal |
Type | Runtime library |
License | MIT License[2] |
Website | sourceware |
libffi is a foreign function interface library. It provides a C programming language interface for calling natively compiled functions given information about the target function at run time instead of compile time. It also implements the opposite functionality: libffi can produce a pointer to a function that can accept and decode any combination of arguments defined at run time.
libffi is most often used as a bridging technology between compiled and interpreted language implementations. libffi may also be used to implement plug-ins, where the plug-in's function signatures are not known at the time of creating the host application.
Notable users include Python, Haskell, Dalvik, F-Script, PyPy, PyObjC, RubyCocoa, JRuby, Rubinius, MacRuby, gcj, GNU Smalltalk, IcedTea, Cycript, Pawn, Squeak, Java Native Access, Common Lisp (via CFFI), Racket,[3] Embeddable Common Lisp and Mozilla.[4]
On Mac OS X, libffi is commonly used with BridgeSupport, which provides programming language neutral descriptions of framework interfaces, and Nu which binds direct Objective-C access from Lisp.
libffi has been widely ported and is released under a MIT license.
{{cite web}}
: CS1 maint: archived copy as title (link)