summaryrefslogtreecommitdiffstats
path: root/js/rust/README.md
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
commit2aa4a82499d4becd2284cdb482213d541b8804dd (patch)
treeb80bf8bf13c3766139fbacc530efd0dd9d54394c /js/rust/README.md
parentInitial commit. (diff)
downloadfirefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz
firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/rust/README.md')
-rw-r--r--js/rust/README.md46
1 files changed, 46 insertions, 0 deletions
diff --git a/js/rust/README.md b/js/rust/README.md
new file mode 100644
index 0000000000..743793c5bc
--- /dev/null
+++ b/js/rust/README.md
@@ -0,0 +1,46 @@
+# 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
+```