rb-sys

Join the discussion

Autogenerated Rust bindings for Ruby. Uses the rust-bindgen crate to generate bindings from the ruby.h header.https://github.com/rust-lang/rust-bindgen

⚠️ Notice

This is a very low-level library. If you are looking to write a gem in Rust, you should probably use https://github.com/matsadler/magnus crate, with the rb-sys-interop feature.

If you actually need raw/unsafe bindings to libruby, the this crate if for you!

Usage

  1. Add the following to your Cargo.toml:

    toml [dependencies] rb-sys = "0.9"

  2. See this example of creating a Ruby gem in Rust

Linking libruby

If you need to link libruby (i.e. you are initializing a Ruby VM in your Rust code), use can enable the link-ruby feature:

rust rb-sys = { version = "0.9", features = ["link-ruby"] }

If you are authoring a Ruby gem, you do not need to enable this feature.

Static libruby

You can also force static linking of libruby:

rust rb-sys = { version = "0.9", features = ["ruby-static"] }

Alternatively, you can set the RUBY_STATIC=true environment variable.

Other features

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.