Expand description
§rb-sys
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, then this crate if for you!
§Usage
§Writing a Ruby gem
Ruby gems require a bit of boilerplate to be defined to be usable from Ruby. rb-sys
makes this process painless by
doing the work for you, by simply enabling the gem
feature.
rb-sys = "0.9"
Under the hood this ensures we do not link libruby (unless on Windows), and defines a ruby_abi_version
function for
Ruby 3.2+.
See this example of creating a Ruby gem in Rust
§Embedding libruby in your Rust app
IMPORTANT: If you are authoring a Ruby gem, you do not need to enable this feature.
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:
rb-sys = { version = "0.9", features = ["link-ruby"] }
§Static libruby
You can also force static linking of libruby:
rb-sys = { version = "0.9", features = ["ruby-static"] }
Alternatively, you can set the RUBY_STATIC=true
environment variable.
§Other features
global-allocator
: Report Rust memory allocations to the Ruby GC (recommended).ruby-static
: Link the static version of libruby.link-ruby
: Link libruby.bindgen-rbimpls
: Include the Ruby impl types in bindings.bindgen-deprecated-types
: Include deprecated Ruby methods in bindings.
§License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
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.
Re-exports§
pub use bindings::*;
pub use special_consts::*;
pub use value_type::*;
Modules§
- Raw bindings to libruby, generated by bindgen.
- Definitions for Ruby’s special constants.
- Support for reporting Rust memory usage to the Ruby GC.
- Definitions for Ruby’s special constants.
Macros§
- Prevents premature destruction of local objects.
- Finds or creates a symbol for the given static string. This macro will memoize the ID to avoid repeated calls to libruby. You should prefer this macro over [
rb_intern3
] when the string is known at compile time. - ruby_
abi_ version Deprecated - Set the global allocator to
TrackingAllocator
.