libffi users

I'm getting close to releasing libffi 3.0 (thanks to lots of help from many people). Out of curiosity, I poked around to generate a partial list of libffi users. Most of these projects contain their own fork of libffi, sometimes with local patches. Hopefully the 3.0 and subsequent releases will improve this situation.

Here's the list. Please add more in the comments if you're aware of any...


  • EEP 007 - a standard proposal for foreign function interfaces in Erlang
  • g-wrap - call C code from Guile Scheme
  • gambas - a Basic implementation
  • GNUstep - an object-oriented framework for desktop application development
  • GNU smalltalk - a smalltalk-80 implementation
  • IcedTea - the Free Software OpenJDK build
  • JNA - Pure java access to native libraries
  • js-ctypes - a bridge between javascript and C for XPCOM
  • jslibs - more C interfaces from javascript
  • libgcj - the GNU java runtime library
  • Objective-CL - a bridge between CommonLisp and Objective-C for Mac OS X
  • PLT Scheme - provides MzScheme, which hosts ARC, Paul Graham's lisp.
  • Python - call C code using ctypes
  • PyObjC - a bridge between Python and Objective-C for Mac OS X
  • RubyCocoa - a bridge between Ruby and Objective-C for Mac OS X
  • SXEmacs - call C code from emacs lisp in this emacs derivative. seriously.

Update:

  • DotGNU Portable.NET - a Free Software CLI implementation
  • ffi - an ffi package for php.
  • ffidl - call native functions from tcl
  • gobject-introspection - "the future of GNOME language bindings".
  • Gtk-Server - a stream-oriented interface to the GTK libraries.
  • Kaffe - the legendary Free Sofware JVM.
  • JamVM - another excellent Free Software JVM.
  • Lua-Gtk - provides a complete binding to Gtk 2.x for Lua.
  • Pawn - a scripting language used to mod games such as Grand Theft Auto:San Andreas and Half-Life.
  • Nu - an interpreted object-oriented language. Its syntax comes from Lisp, but Nu is semantically closer to Ruby than Lisp.
  • SableVM - another Free Software JVM
  • Squeak - an implementation of smalltalk

Trackbacks

    No Trackbacks

Comments

Display comments as (Linear | Threaded)

  1. Albert Strasheim says:

    Have you got the patches from Python ctypes to build with Visual Studio on Win32 and Win64 in there? JNA will definitely benefit from this.

  2. Anthony Green says:

    Not yet. It looks like ctypes contains 3 forks of libffi! I'm going to try to tackle this after the 3.0 release.

  3. Albert Strasheim says:

    Another question: how is this release of libffi related to the code being maintained in the GCC SVN repository?

  4. Anthony Green says:

    The official stance from the FSF is that libffi is not part of the GCC project, but is bundled with GCC for convenience. So, in theory, this tree is the upstream project although I fully expect most future changes to continue to come from the GCC developers. I am hoping to do two-way merging between the two projects going forward.

    I had no idea that libffi was so widely used outside of libgcj. That, combined with the immediate need for libffi by IcedTea, and recognition that there's value is decoupling the libffi release cycle from that of GCC has inspired me to revive independent libffi releases.

  5. Robert Lougher says:

    Hi,
    JamVM can optionally use libffi, but will use "handcoded" routines if available. These are obviously faster.

    Thanks,
    Rob.

  6. Mark Wielaard says:

    JamVM http://jamvm.sourceforge.net/

    From the NEWS file:

    - LibFFI is now supported. Upto now, all ports required the native
    calling convention to be written "by hand" for each new architecture/
    platform. Generic calling-convention code is now supported via libffi.
    Currently this is only used for AMD64/Linux, but can be enabled for
    all platforms using --enable-ffi.

  7. Robert Lougher says:

    Hi Mark,

    > Currently this is only used for AMD64/Linux, but can be enabled for
    all platforms using --enable-ffi.

    Anthony doing a new standalone version of libffi after several years is a really strange coincidence!

    Needing to support the platform calling convention was a brick wall in porting JamVM to a new architecture so I added support for libffi. The next port I decided not to bother handcoding it and just relied on libffi.

    Then two months ago I installed Fedora (to stop using Ubuntu after Phillip resigned). And found it was next to impossible to get libffi installed (Debian has a package for it)!

    So I've added support for AMD64. And a couple of days later I saw Anthony's announcement... Oh well.

    Thanks,
    Rob.

  8. gbenson says:

    And these were all bundling it? Ouch!


Add Comment


You can use [geshi lang=lang_name [,ln={y|n}]][/lang] tags to embed source code snippets
Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

 
Submitted comments will be subject to moderation before being displayed.