The most basic Rust-WASM setup, for posterity.
src | ||
web | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
justfile | ||
readme.md | ||
things.js |
rustwasm
A dead-simple, no-bundling, web-servable Rust/WASM/JS template. "Hello, world" style. For use in the Rust Ludus backend.
Things to remember
- Use
js_sys
andweb_sys
for general JS and Web bindings. - Ludus, however, speaks in JSON strings and requires a hand-written JS wrapper, which should make the whole JS interop thing much easier.
- For that, we use
serde_json
.
- For that, we use
- The canonical reference for all this is https://rustwasm.github.io/wasm-bindgen/introduction.html.
- Look into what thi.ng does with Zig in its WASM packages: https://github.com/thi-ng/umbrella/tree/develop/packages, especially https://github.com/thi-ng/umbrella/tree/develop/packages/wasm-api.
- It's looking like
--target web
is the most appropriate to use in 2024, since they use ES modules and not CommonJS, which is what everything else uses (and necessitates the build step). See https://rustwasm.github.io/wasm-pack/book/commands/build.html.
- It's looking like