106个版本

新版本 0.9.102 2024年8月20日
0.9.99 2024年7月25日
0.9.90 2024年3月1日
0.9.85 2023年12月27日
0.9.28 2022年7月28日

#72内存管理

Download history 17698/week @ 2024-05-05 17693/week @ 2024-05-12 14962/week @ 2024-05-19 14725/week @ 2024-05-26 15189/week @ 2024-06-02 31015/week @ 2024-06-09 23317/week @ 2024-06-16 14699/week @ 2024-06-23 17900/week @ 2024-06-30 14434/week @ 2024-07-07 20793/week @ 2024-07-14 13931/week @ 2024-07-21 26674/week @ 2024-07-28 12736/week @ 2024-08-04 16875/week @ 2024-08-11 14613/week @ 2024-08-18

71,302 每月下载量
用于 7 个crate(5个直接使用)

MIT/Apache

110KB
2.5K SLoC

rb-sys

Join the discussion

Ruby的自动生成Rust绑定。使用rust-bindgen crate从ruby.h头文件生成绑定。https://github.com/rust-lang/rust-bindgen

⚠️ 注意

这是一个非常底层的库。如果您想用Rust编写gem,您可能需要使用https://github.com/matsadler/magnus crate,并启用rb-sys-interop功能。

如果您确实需要原始/不安全的libruby绑定,那么这个crate就是为您准备的!

用法

编写Ruby gem

Ruby gems需要一些样板代码才能在Ruby中使用。通过简单地启用gem功能,rb-sys使这个过程变得无缝,因为它为您完成了工作。

rb-sys = "0.9"

在底层,这确保我们不会链接libruby(除非在Windows上),并为Ruby 3.2+定义了一个ruby_abi_version函数。

请参阅此Rust中创建Ruby gem的示例

在您的Rust应用程序中嵌入libruby

重要:如果您正在编写Ruby gem,您不需要启用此功能。

如果您需要链接libruby(即在您的Rust代码中初始化Ruby VM),您可以使用启用link-ruby功能。

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

静态libruby

您还可以强制静态链接libruby。

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

或者,您可以将环境变量RUBY_STATIC=true设置为。

其他功能

  • global-allocator:将Rust内存分配报告给Ruby GC(推荐)。
  • ruby-static:链接libruby的静态版本。
  • link-ruby:链接libruby。
  • bindgen-rbimpls:在绑定中包含Ruby实现类型。
  • bindgen-deprecated-types:在绑定中包含已弃用的Ruby方法。

许可证

许可协议为以下之一:

您可选择其中之一。

贡献

除非您明确表示,否则根据Apache-2.0许可证定义的,您有意提交给作品以包含在内的任何贡献,将按上述方式双重许可,不附加任何额外条款或条件。

依赖

~0–2.3MB
~36K SLoC