fune/js/rust/README.md
Jason Orendorff fbc689a32a Bug 1448324 - Fix link in js/rust readme. r=jdm
Differential Revision: https://phabricator.services.mozilla.com/D49748

--HG--
extra : moz-landing-system : lando
2019-10-18 14:30:52 +00:00

46 lines
1.2 KiB
Markdown

# The `js` Crate: Rust Bindings to SpiderMonkey
[User Documentation](http://doc.servo.org/mozjs/)
## Building
To build a release version of SpiderMonkey and the Rust code with optimizations
enabled:
```
$ cargo build --release
```
To build with SpiderMonkey's DEBUG checks and assertions:
```
$ cargo build --features debugmozjs
```
Raw FFI bindings to JSAPI are machine generated with
[`rust-lang-nursery/rust-bindgen`][bindgen], and requires libclang >= 3.9. See
`./build.rs` for details.
[bindgen]: https://github.com/rust-lang-nursery/rust-bindgen
## Cargo Features
* `debugmozjs`: Create a DEBUG build of SpiderMonkey with many extra assertions
enabled. This is decoupled from whether the crate and its Rust code is built
in debug or release mode.
* `promises`: Enable SpiderMonkey native promises.
* `nonzero`: Leverage the unstable `NonZero` type. Requires nightly Rust.
## Testing
Make sure to test both with and without the `debugmozjs` feature because various
structures have different sizes and get passed through functions differently at
the ABI level! At minimum, you should test with `debugmozjs` to get extra
assertions and checking.
```
$ cargo test
$ cargo test --features debugmozjs
```