15 releases (3 stable)
1.2.0 | Oct 10, 2024 |
---|---|
1.0.0 | Aug 28, 2024 |
0.30.0 | Jun 7, 2024 |
0.24.0 | Feb 15, 2024 |
0.19.0 | Dec 15, 2023 |
#2478 in Parser implementations
83 downloads per month
Used in 2 crates
(via ruby-prism)
2.5MB
42K
SLoC
ruby-prism-sys
Rust bindings to ruby/prism's C API.
Examples
Currently the best examples are found in the integration tests (in tests/
).
Documentation
Since this crate has not been released, docs are not yet online anywhere. You can generate them,
however, from this directory in this repo by running cargo doc
, then opening
target/doc/ruby_prism_sys/index.html
in your browser. (You could, instead, combine those two steps by
doing cargo doc --open
!)
Development
Dependencies
In addition to the Ruby prism dependencies, you shouldn't need anything else besides Rust.
Updating bindings
build.rs
(which gets called as part of running cargo build
, cargo test
, etc) is where we tell
bindgen
which types, functions, etc. that we want it to generate for us. It's smart enough to know
to generate dependencies for items we specify in there (ex. pm_parser_t
has fields of type
pm_token_t
, but we don't need to tell bindgen
about pm_token_t
--it'll figure it out and
generate bindings for that type too).
If you want to generate new bindings, update build.rs
accordingly, then run cargo doc
and check
the docs; that should tell you if bindgen
generated all the things you need or not.
Testing
Since almost all of the code is generated by the well-tested
bindgen
crate, we only have some cursory integration
tests in tests/
, really just validating types and functions got generated appropriately. (They
also give some hints about how to use the API from Rust!) To run the tests, run cargo test
.
Any new publicly exposed C API additions should get a test or two.
Dependencies
~0–1.9MB
~37K SLoC