# ruby-ffi 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](http://wiki.github.com/ffi/ffi/why-use-ffi). ## Features/problems * Intuitive DSL * Supports all C native types * C structs (also nested), enums and global variables * Callbacks from C to ruby * Automatic garbage collection of native memory ## Synopsis ```ruby require 'ffi' module MyLib extend FFI::Library ffi_lib 'c' attach_function :puts, [ :string ], :int end MyLib.puts 'Hello, World using libc!' ``` For less minimalistic and more sane examples you may look at: * the samples/ folder * the examples on the [wiki](http://wiki.github.com/ffi/ffi) * the projects using FFI listed on this page (http://wiki.github.com/ffi/ffi/projects-using-ffi) ## Requirements * You need a sane building environment in order to compile the extension. ## Installation From rubygems: [sudo] gem install ffi or from the git repository on github: git clone git://github.com/ffi/ffi.git cd ffi rake gem:install ## License See LICENSE file. ## Credits The following people have submitted code, bug reports, or otherwide contributed to the success of this project: * Alban Peignier * Aman Gupta * Andrea Fazzi * Andreas Niederl * Andrew Cholakian * Antonio Terceiro * Brian Candler * Brian D. Burns * Bryan Kearney * Charlie Savage * Chikanaga Tomoyuki * Hongli Lai * Ian MacLeod * Jake Douglas * Jean-Dominique Morani * Jeremy Hinegardner * Jesús García Sáez * Joe Khoobyar * Jurij Smakov * KISHIMOTO, Makoto * Kim Burgestrand * Lars Kanis * Luc Heinrich * Luis Lavena * Matijs van Zuijlen * Matthew King * Mike Dalessio * NARUSE, Yui * Park Heesob * Shin Yee * Stephen Bannasch * Suraj N. Kurapati * Sylvain Daubert * Victor Costan * beoran@gmail.com * ctide * emboss * hobophobe * meh * postmodern * wycats@gmail.com * Wayne Meissner