Template language for generating Ruby bindings for C libraries
by Geoff Youngs <g@intersect-uk.co.uk>
A simple ruby-style bindings generator for Ruby. It allows bindings to
be laid out in a Ruby style, documentation to be included inline and
explicit type casts within C code. It’s somewhere between SWIG and pyrex.
It also allows features extconf.rb creation, including checks for headers,
pkg-config etc. The modules it creates currently depend on Ruby/GTK, but
it is planned to remove this dependency unless they genuinely require Ruby/GTK.
Other features include custom named type-maps, pre/post code inclusion within
functions and some rudimentary understanding of C code.
- 0.0.20 – 31st Jul 2013
– Auto-scan loaded gems for missing headers
– Add support for %include_dir gem:foo or gem:foo/path/in/gem
- 0.0.19 – 17th June 2013
– Ruby 1.9 changes arguments for rb_num_coerce_cmp() – fixed.
- 0.0.18 – 16th Nov 2012
– Fixes for finding ruby-gnome2 header in gems
– Improved error reporting
- 0.0.17 – 16th Nov 2012
– Ruby 1.9 fixes
- 0.0.16 – 20th Oct 2011
– Add GCC pragma to reduce warnings on unused variables
- 0.0.15 – 18th Oct 2011
– Add support for scanning gem directories for ruby-gnome2 headers
– Fix missing fileutils dependency
- 0.0.14 – 18th Oct 2011
– Add define_on_self to genum (allow constants to be defined within submodule rather than on parent module/class)
- 0.0.13 – 5th May 2011
– Bug fix for gcpool
- 0.0.12 – 3rd May 2011
– Add support for uint64 conversion
- 0.0.11 – 27th Apr 2011
– Fix parsing of %min-version numbers
- 0.0.10 – 27th Apr 2011
– Add —install flag
- 0.0.9 – 31st May 2010
– Add support for —build-dir switch to specify output directory
- 0.0.8 – 10th May 2010
– Add support for %min-version ..
- 0.0.7 – 7th May 2010
– Add support for array constants (including autmatic type detection) – e.g array = [ “Text”, NULL, 3 ]
– Add syntax_error function to parser which reports slightly more helpful syntax error messages for a .cr file
– Add tracking of code location so that C compiler throws errors which refer to the original line in the .cr file
– Add support for GSList{type} or GList{type} conversion to arrays as return values for functions
- 0.0.6 – 6th May 2010
– Flags class allows wrapping a bit field with slightly more information. Plus automatic conversion to/from ruby and support for integer values.
- Ruby 1.8 / Ruby 1.9 / Ruby 2.0
Sample file:
- example/vte.cr
Usage:
$ rubber-generate —generate —build —install vte.cr
Which should generate
[arch]/vte.c <- Source code for extension
[arch]/vte.rd <- RD documentation from vte.cr
[arch]/extconf.rb <- Config script
[arch]/vte.o <- Object file
[arch]/vte.so <- Compiled extension
$ sudo gem install rubber-generate
Author: Geoff Youngs
Contributors:
- Vincent Isambart