ffi / ffi

Ruby FFI

This URL has Read+Write access

blaxter (author)
Wed Nov 11 13:38:38 -0800 2009
wmeissner (committer)
Thu Nov 12 16:38:24 -0800 2009
commit  3c24e984b321338de4798ddcbe7d214c3b0c9b58
tree    0ea3e1f7f74a5d4f6c46dd35c60a85bb9ff92e3f
parent  0db1df99466117a0dfb7b8a6062bb0e7d3d6f858
ffi /
name age message
file .autotest Thu Dec 04 15:38:11 -0800 2008 Add support for autotest. Patch from Andrea Fa... [wmeissner]
file .gitignore Fri Aug 07 01:52:04 -0700 2009 Add core to ignored files [wmeissner]
file .hgignore Fri Jun 05 05:38:54 -0700 2009 Add some spec for NULL pointer. Add ^# pattern ... [Andrea Fazzi]
file History.txt Tue Oct 06 12:32:49 -0700 2009 Tweak History.txt [Andrea Fazzi]
file LICENSE Wed Oct 29 18:25:22 -0700 2008 Add Rubinius license to LICENSE, and switch to ... [wmeissner]
file README.rdoc Fri Aug 21 15:26:52 -0700 2009 Eradicate references to kenai.com [wmeissner]
file Rakefile Wed Dec 09 22:05:29 -0800 2009 Adding a 'pre' suffix to the version apparently... [wmeissner]
directory bench/ Sun Sep 20 01:35:45 -0700 2009 change title of pre-allocated callable bench [wmeissner]
directory ext/ Loading commit data...
file ffi.gemspec Sat Oct 10 22:55:16 -0700 2009 Bump version to 0.6.0 [wmeissner]
directory gen/ Thu May 07 17:52:59 -0700 2009 Mr. Bones totally ignores gem.extensions and on... [wmeissner]
directory lib/
directory libtest/
directory nbproject/ Fri Sep 18 05:23:54 -0700 2009 Sync netbeans metadata [wmeissner]
file ruby-ffi-Makefile.mk Wed Nov 05 00:51:18 -0800 2008 Clear out attempts to create Makefile, just use... [wmeissner]
directory samples/ Thu Dec 25 15:11:00 -0800 2008 Build the extension lib in build/#{RUBY_VERSION... [wmeissner]
directory spec/
directory tasks/ Thu Nov 05 10:52:29 -0800 2009 Disable git tagging during release [wmeissner]
README.rdoc

ruby-ffi

    by Wayne Meissner
    http://wiki.github.com/ffi/ffi

DESCRIPTION:

Ruby-FFI is a ruby extension for programmatically loading dynamic libraries, binding functions within them, and calling those functions from Ruby code. Moreover, a Ruby-FFI extension works without changes on Ruby and JRuby. Discover why should you write your next extension using Ruby-FFI here.

FEATURES/PROBLEMS:

  • It has a very intuitive DSL
  • It supports all C native types
  • It supports C structs (also nested), enums and global variables
  • It supports callbacks
  • It has smart methods to handle memory management of pointers and structs

SYNOPSIS:

  require 'ffi'

  module MyLib
    extend FFI::Library
    attach_function :puts, [ :string ], :int
  end

  MyLib.puts 'Hello boys using libc!'

For less minimalistic and more sane examples you may look at:

  • the samples/ folder
  • the examples on the wiki
  • the projects using FFI listed on this page

REQUIREMENTS:

  • You need a sane building environment in order to compile the extension.

DOWNLOAD/INSTALL:

From rubyforge:

  [sudo] gem install ffi

or from the git repository on github:

  git clone git://github.com/ffi/ffi.git
  cd ffi
  rake gem:install

CREDITS:

Special thanks to:

  • Yehuda Katz
  • Luc Heinrich
  • Andrea Fazzi
  • Mike Dalessio
  • Hongli Lai
  • Evan Phoenix
  • Aman Gupta
  • Beoran

LICENSE:

See LICENSE file.