7 releases
| 0.2.0 | Oct 20, 2025 |
|---|---|
| 0.2.0-rc.2 | Oct 16, 2025 |
| 0.1.2 | Jul 27, 2025 |
#196 in WebAssembly
112,368 downloads per month
Used in 272 crates
(via leptos)
13KB
200 lines
Annotate functions as appropriate split points for lazy-loaded code in WebAssembly (WASM).
use wasm_split_helpers::wasm_split;
#[wasm_split(rot13_cipher)]
fn rot13(text: &str) -> String {
text.chars()
.map(|c| match c {
'A'..='M' | 'a'..='m' => ((c as u8) + 13) as char,
'N'..='Z' | 'n'..='z' => ((c as u8) - 13) as char,
_ => c,
})
.collect()
}
async fn check_passphrase(cipher: &str) {
assert_eq!(rot13(cipher).await, "furrfu", "wrong passphrase!");
}
wasm_split_helpers
This crate provides runtime support for the wasm_split_macros crate, which allows you to indicate that certain functions are appropriate split points for lazy-loaded code in WebAssembly (WASM).
A build tool that supports this approach (like wasm-split-cli in wasm_split_cli_support) can then split a WASM binary into multiple chunks, which will be lazy-loaded on demand.
This crate was adapted from an original prototype, which you can find here, with an in-depth description of the approach here.
This functionality is used:
- in Leptos to support the
#[lazy]and#[lazy_route]macros. - in Yew to support the
Lazycomponent
Dependencies
~0.8–1.3MB
~32K SLoC