libffi is free software. It has a very liberal license.
Some programs may not know at the time of compilation what arguments are to be passed to a function. For instance, an interpreter may be told at run-time about the number and types of arguments used to call a given function. Libffi can be used in such programs to provide a bridge from the interpreter program to compiled code.
The libffi library provides a portable, high level programming interface to various calling conventions. This allows a programmer to call any function specified by a call interface description at run-time.
FFI stands for Foreign Function Interface. A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language. The libffi library really only provides the lowest, machine dependent layer of a fully featured foreign function interface. A layer must exist above libffi that handles type conversions for values passed between the two languages.
You can also check out the very latest version via anonymous cvs. Here's how:
cvs -d :pserver:anoncvs@sources.redhat.com:/cvs/libffi login (password is ``anoncvs'') cvs -d :pserver:anoncvs@sources.redhat.com:/cvs/libffi co libffiOnce you have it checked out, you can update it with cvs update.
You can also view the cvs archive via cvsweb.
To subscribe to the libffi-announce
mailing list, enter your
e-mail address:
libffi-discuss
mailing list, enter your
e-mail address:
The developers of the GNU Compiler Collection project have made innumerable valuable contributions. See this ChangeLog files in the source distribution for details.
Some of the ideas behind libffi were inspired by Gianni Mariani's free gencall library for Silicon Graphics machines.
The closure mechanism was designed and implemented by Kresten Krab Thorup.
Major processor architecture ports were contributed by the following developers:
alpha Richard Henderson arm Raffaele Sena cris Simon Posnjak, Hans-Peter Nilsson frv Anthony Green ia64 Hans Boehm m32r Kazuhiro Inaoka m68k Andreas Schwab mips Anthony Green, Casey Marshall mips64 David Daney pa Randolph Chung, Dave Anglin, Andreas Tobler powerpc Geoffrey Keating, Andreas Tobler, David Edelsohn, John Hornkvist powerpc64 Jakub Jelinek s390 Gerhard Tonn, Ulrich Weigand sh Kaz Kojima sh64 Kaz Kojima sparc Anthony Green, Gordon Irlam x86 Anthony Green, Jon Beniston x86-64 Bo Thorsen
Jesper Skov and Andrew Haley both did more than their fair share of stepping through the code and tracking down bugs.
Thanks also to Tom Tromey for bug fixes, documentation and configuration help.
Thanks to Jim Blandy, who provided some useful feedback on the libffi interface.
Andreas Tobler has done a tremendous amount of work on the testsuite.
Alex Oliva solved the executable page problem for SElinux.
The list above is almost certainly incomplete and inaccurate. I'm happy to make corrections or additions upon request.
If you have a problem, or have found a bug, please send a note to libffi-discuss@sources.redhat.com or to me directly (green@redhat.com).