rb-sys
The primary goal of rb-sys
is to make building native Ruby extensions in Rust easier than it would be in C. If
it's not easy, it's a bug.
rake-compiler
rb-sys
?rb-sys
gem š to learn more about the rb-sys
gem for compiling extensionsrb-sys
crate)Below are some examples of how to use rb-sys
to build native Rust extensions. Use these as a starting point for your
building your own gem.
wasmtime-rb
gem uses rb-sys
and magnus
to package the rust wasmtime
library as a Ruby gem.oxi-test
gem is the canonical example of how to use rb-sys
. It is a minimal, fully tested with
GitHub actions, and cross-compiles native gem binaries. This should be your first stop for learning how to use
rb-sys
.rb_sys
gem and using it with an extconf.rb
file.magnus
repo has some solid examples.ext
directory.yrb
gem shows how to integrate rb-sys
and magnus
into an existing gem.rb-sys
will handle most of the dependencies for you, but you will need to have libclang installed on your system.
On MacOS, you can install it with brew install llvm
.
On Linux, you can install it with apt-get install libclang-dev
.
We support cross compilation to the following platforms (this information is also available in the ./data
directory for automation purposes):
Platform | Supported | Docker Image |
---|---|---|
x86_64-linux | ā | rbsys/x86_64-linux:0.9.102 |
x86_64-linux-musl | ā | rbsys/x86_64-linux-musl:0.9.102 |
aarch64-linux | ā | rbsys/aarch64-linux:0.9.102 |
aarch64-linux-musl | ā | rbsys/aarch64-linux-musl:0.9.102 |
arm-linux | ā | rbsys/arm-linux:0.9.102 |
arm64-darwin | ā | rbsys/arm64-darwin:0.9.102 |
x64-mingw32 | ā | rbsys/x64-mingw32:0.9.102 |
x64-mingw-ucrt | ā | rbsys/x64-mingw-ucrt:0.9.102 |
mswin | ā | not available on Docker |
We make a concerted effort to help out new users. If you have questions, please join our Slack and post your
question in the #general
channel. Alternatively, you can open an issue and we'll try to help you out.
See the CONTRIBUTING.md file for information about setting up a development environment.
Bug reports and pull requests are welcome on GitHub at https://github.com/oxidize-rb/rb-sys.
Licensed under either of
at your option.
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.