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 在 内存管理
71,302 每月下载量
用于 7 个crate(5个直接使用)
110KB
2.5K SLoC
rb-sys
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应用程序中嵌入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版本(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
您可选择其中之一。
贡献
除非您明确表示,否则根据Apache-2.0许可证定义的,您有意提交给作品以包含在内的任何贡献,将按上述方式双重许可,不附加任何额外条款或条件。
依赖
~0–2.3MB
~36K SLoC