libffi

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
Developer(s)Anthony Green
Initial releaseOctober 7, 1996 (1996-10-07)
Stable release
3.4.5 / February 15, 2024 (2024-02-15)
Repository
Written inC, Assembly language
Operating systemUnix-like, Microsoft Windows, OS X, iOS, bare metal
TypeRuntime library
LicenseMIT License
Websitesourceware.org/libffi/ 

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, Embeddable Common Lisp and Mozilla.

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.

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.