Add ruby-rbs-sys crate: Rust FFI bindings for the RBS parser
#2807
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR introduces
ruby-rbs-sys, a Rust crate providing FFI bindings to the RBS C parser. A follow-up PR (#2808) addsruby-rbs, a safe wrapper on top of these bindings.Motivation
Enables Rust-based tooling to parse RBS type signatures, supporting use cases like IDE tooling, language servers, and static analysis tools.
Why Two Crates?
Following the Rust
-syspackage convention, we split the bindings into two crates:ruby-rbs-sys: Low-level FFI bindings generated by bindgen. Exposes the raw C API with no safety guarantees.ruby-rbs: Safe, idiomatic Rust wrapper with proper lifetimes and ergonomic APIs.Consumers should use
ruby-rbsfor a safe API. This pattern is also used by ruby-prism.ruby-rbs-sys Overview
build.rscompiles the C parser source using thecccratebindgenCI
Adds CI configuration to build and test the Rust crates.