Libffi

libffi
Developer(s)Anthony Green
Initial releaseOctober 7, 1996 (1996-10-07)
Stable release
3.5.1[1] Edit this on Wikidata / 10 June 2025 (10 June 2025)
Repository
Written inC, Assembly language
Operating systemUnix-like, Microsoft Windows, OS X, iOS, bare metal
TypeRuntime library
LicenseMIT License[2]
Websitesourceware.org/libffi/ Edit this on Wikidata

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, 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.

  1. ^ "Release 3.5.1". 10 June 2025. Retrieved 23 June 2025.
  2. ^ "Status". GitHub. 25 April 2022.
  3. ^ "Archived copy" (PDF). Archived from the original (PDF) on 2009-09-02. Retrieved 2009-08-02.{{cite web}}: CS1 maint: archived copy as title (link)
  4. ^ "Mozilla-central @ 2dc00d4b379a files manifest".

© MMXXIII Rich X Search. We shall prevail. All rights reserved. Rich X Search