mirror of
https://github.com/vacp2p/zerokit.git
synced 2026-01-09 21:58:06 -05:00
## Changes
- Enabled parallelism in the browser for `rln-wasm` with the
`multithread` feature flag.
- Added browser tests for both single-threaded and multi-threaded modes.
- Enabled browser tests in the CI workflow.
- Pending: resolving hanging issue with `wasm-bindgen-rayon`
([comment](https://github.com/RReverser/wasm-bindgen-rayon/issues/6#issuecomment-2814372940)).
- Forked [this
commit](42887c80e6)
into a separate
[branch](https://github.com/vacp2p/zerokit/tree/benchmark-v0.8.0), which
includes an HTML benchmark file and a test case for the multithreaded
feature in `rln-wasm`.
- The test case still has the known issue above, so it's temporarily
disabled in this PR and will be addressed in the future.
- Improve the `make installdeps` which resolves the issue of NVM not
enabling Node.js in the current terminal session.
- Reduce the build size of the `.wasm` blob using the `wasm-opt` tool
from [Binaryen](https://github.com/WebAssembly/binaryen).
- Maybe we can close this draft
[PR](https://github.com/vacp2p/zerokit/pull/226), which is already very
outdated?
242 lines
4.6 KiB
TOML
242 lines
4.6 KiB
TOML
[tasks.build]
|
|
clear = true
|
|
dependencies = ["pack_build", "pack_rename", "pack_resize"]
|
|
|
|
[tasks.build_arkzkey]
|
|
clear = true
|
|
dependencies = ["pack_build_arkzkey", "pack_rename", "pack_resize"]
|
|
|
|
[tasks.build_multithread]
|
|
clear = true
|
|
dependencies = [
|
|
"pack_build_multithread",
|
|
"post_build_multithread",
|
|
"pack_rename",
|
|
"pack_resize",
|
|
]
|
|
|
|
[tasks.build_multithread_arkzkey]
|
|
clear = true
|
|
dependencies = [
|
|
"pack_build_multithread_arkzkey",
|
|
"post_build_multithread",
|
|
"pack_rename",
|
|
"pack_resize",
|
|
]
|
|
|
|
[tasks.pack_build]
|
|
command = "wasm-pack"
|
|
args = [
|
|
"build",
|
|
"--release",
|
|
"--target",
|
|
"web",
|
|
"--scope",
|
|
"waku",
|
|
"--features",
|
|
"stateless",
|
|
]
|
|
|
|
[tasks.pack_build_arkzkey]
|
|
command = "wasm-pack"
|
|
args = [
|
|
"build",
|
|
"--release",
|
|
"--target",
|
|
"web",
|
|
"--scope",
|
|
"waku",
|
|
"--features",
|
|
"stateless,arkzkey",
|
|
]
|
|
|
|
[tasks.pack_build_multithread]
|
|
command = "env"
|
|
args = [
|
|
"RUSTFLAGS=-C target-feature=+atomics,+bulk-memory,+mutable-globals",
|
|
"rustup",
|
|
"run",
|
|
"nightly",
|
|
"wasm-pack",
|
|
"build",
|
|
"--release",
|
|
"--target",
|
|
"web",
|
|
"--scope",
|
|
"waku",
|
|
"--features",
|
|
"stateless,multithread",
|
|
"-Z",
|
|
"build-std=panic_abort,std",
|
|
]
|
|
|
|
[tasks.pack_build_multithread_arkzkey]
|
|
command = "env"
|
|
args = [
|
|
"RUSTFLAGS=-C target-feature=+atomics,+bulk-memory,+mutable-globals",
|
|
"rustup",
|
|
"run",
|
|
"nightly",
|
|
"wasm-pack",
|
|
"build",
|
|
"--release",
|
|
"--target",
|
|
"web",
|
|
"--scope",
|
|
"waku",
|
|
"--features",
|
|
"stateless,multithread,arkzkey",
|
|
"-Z",
|
|
"build-std=panic_abort,std",
|
|
]
|
|
|
|
[tasks.post_build_multithread]
|
|
script = '''
|
|
wasm-bindgen --target web --split-linked-modules --out-dir ./pkg ../target/wasm32-unknown-unknown/release/rln_wasm.wasm && \
|
|
find ./pkg/snippets -name "workerHelpers.worker.js" -exec sed -i.bak 's|from '\''\.\.\/\.\.\/\.\.\/'\'';|from "../../../rln_wasm.js";|g' {} \; -exec rm -f {}.bak \; && \
|
|
find ./pkg/snippets -name "workerHelpers.worker.js" -exec sed -i.bak 's|await initWbg(module, memory);|await initWbg({ module, memory });|g' {} \; -exec rm -f {}.bak \;
|
|
'''
|
|
|
|
[tasks.pack_rename]
|
|
script = "sed -i.bak 's/rln-wasm/zerokit-rln-wasm/g' pkg/package.json && rm pkg/package.json.bak"
|
|
|
|
[tasks.pack_resize]
|
|
command = "wasm-opt"
|
|
args = [
|
|
"pkg/rln_wasm_bg.wasm",
|
|
"-Oz",
|
|
"--strip-debug",
|
|
"--strip-dwarf",
|
|
"--remove-unused-module-elements",
|
|
"--vacuum",
|
|
"-o",
|
|
"pkg/rln_wasm_bg.wasm",
|
|
]
|
|
|
|
[tasks.test]
|
|
command = "wasm-pack"
|
|
args = [
|
|
"test",
|
|
"--release",
|
|
"--node",
|
|
"--target",
|
|
"wasm32-unknown-unknown",
|
|
"--features",
|
|
"stateless",
|
|
"--",
|
|
"--nocapture",
|
|
]
|
|
dependencies = ["build"]
|
|
|
|
[tasks.test_arkzkey]
|
|
command = "wasm-pack"
|
|
args = [
|
|
"test",
|
|
"--release",
|
|
"--node",
|
|
"--target",
|
|
"wasm32-unknown-unknown",
|
|
"--features",
|
|
"stateless,arkzkey",
|
|
"--",
|
|
"--nocapture",
|
|
]
|
|
dependencies = ["build_arkzkey"]
|
|
|
|
[tasks.test_browser]
|
|
command = "wasm-pack"
|
|
args = [
|
|
"test",
|
|
"--release",
|
|
"--chrome",
|
|
# "--firefox",
|
|
# "--safari",
|
|
"--headless",
|
|
"--target",
|
|
"wasm32-unknown-unknown",
|
|
"--features",
|
|
"stateless",
|
|
"--",
|
|
"--nocapture",
|
|
]
|
|
dependencies = ["build"]
|
|
|
|
[tasks.test_browser_arkzkey]
|
|
command = "wasm-pack"
|
|
args = [
|
|
"test",
|
|
"--release",
|
|
"--chrome",
|
|
# "--firefox",
|
|
# "--safari",
|
|
"--headless",
|
|
"--target",
|
|
"wasm32-unknown-unknown",
|
|
"--features",
|
|
"stateless,arkzkey",
|
|
"--",
|
|
"--nocapture",
|
|
]
|
|
dependencies = ["build_arkzkey"]
|
|
|
|
[tasks.test_multithread]
|
|
command = "env"
|
|
args = [
|
|
"RUSTFLAGS=-C target-feature=+atomics,+bulk-memory,+mutable-globals",
|
|
"rustup",
|
|
"run",
|
|
"nightly",
|
|
"wasm-pack",
|
|
"test",
|
|
"--release",
|
|
"--chrome",
|
|
# "--firefox",
|
|
# "--safari",
|
|
"--headless",
|
|
"--target",
|
|
"wasm32-unknown-unknown",
|
|
"--features",
|
|
"stateless,multithread",
|
|
"-Z",
|
|
"build-std=panic_abort,std",
|
|
"--",
|
|
"--nocapture",
|
|
]
|
|
dependencies = ["build_multithread"]
|
|
|
|
[tasks.test_multithread_arkzkey]
|
|
command = "env"
|
|
args = [
|
|
"RUSTFLAGS=-C target-feature=+atomics,+bulk-memory,+mutable-globals",
|
|
"rustup",
|
|
"run",
|
|
"nightly",
|
|
"wasm-pack",
|
|
"test",
|
|
"--release",
|
|
"--chrome",
|
|
# "--firefox",
|
|
# "--safari",
|
|
"--headless",
|
|
"--target",
|
|
"wasm32-unknown-unknown",
|
|
"--features",
|
|
"stateless,multithread,arkzkey",
|
|
"-Z",
|
|
"build-std=panic_abort,std",
|
|
"--",
|
|
"--nocapture",
|
|
]
|
|
dependencies = ["build_multithread_arkzkey"]
|
|
|
|
[tasks.bench]
|
|
disabled = true
|
|
|
|
[tasks.login]
|
|
command = "wasm-pack"
|
|
args = ["login"]
|
|
|
|
[tasks.publish]
|
|
command = "wasm-pack"
|
|
args = ["publish", "--access", "public", "--target", "web"]
|