Rice is a C++ header-only library that serves dual purposes. First, it makes it much
easier to create Ruby bindings for existing C++ libraries. Second, it provides an
object oriented interface to Ruby's C API that makes it easy to embed Ruby and write
Ruby extensions in C++.
Rice is similar to Boost.Python and pybind11 in that it minimizes boilerplate code needed
to interface with C++. It does this by automatically determining type information allowing
Ruby object to be converted to C++ and vice versa.
What Rice gives you:
- A simple C++-based syntax for wrapping and defining classes
- Automatic type conversions between C++ and Ruby
- Automatic exception conversions between C++ and Ruby
- Smart pointers for handling garbage collection
- Wrappers for most builtin types to simplify calling code
The source is hosted on GitHub: http://github.com/jasonroelofs/rice
Bug tracking: http://github.com/jasonroelofs/rice/issues
## What's new?
Where as Rice 3 and earlier required some pre-compilation on installation, Rice 4 is now a header-only
library, drastically improving the usability of the library and expanding the places Rice can be used.
Rice 4 also includes built-in support for many of the common STL libraries!
This was a significant amount of work and required some backwards incompatible changes. See the
documentation for more information. Due to this, for those who prefer to stay on Rice 3 we will keep
that version maintained as well.