This is a minimal example of a
hyperlight-wasm
host application. It implements just enough of the wasi:http api
to run the sample_wasi_http_rust
server.
- Rust, including the
x86_64-unknown-nonetarget (which may be installed via e.g.rustup target add x86_64-unknown-none) clangjust(optional, but recommended)
If you want to follow the manual build instructions, you will also need:
# Install JS dependencies
npm installjust build# Run Rust
just run-rust
# Run JS
just run-jsFrom another terminal, you can then test the server:
curl http://localhost:3000/
curl -w'\n' -d "hola mundo" http://127.0.0.1:3000/echo
curl -I -H "x-language: spanish" http://127.0.0.1:3000/echo-headers
# get the content of .gitignore from github.com/jprendes/hyperlight-wasm-http-example
curl -w'\n' http://127.0.0.1:3000/proxyCompile the WIT and set the environment variables used when building (both the host and the guest):
wasm-tools component wit hyperlight.wit -w -o hyperlight-world.wasmBuild Rust:
cargo build
Build JS:
npm run build
Build the guest component:
cargo component build --release \
--manifest-path guest_rust/Cargo.toml \
--target-dir targetAOT compile it:
cargo install hyperlight-wasm-aot
hyperlight-wasm-aot compile --component \
target/wasm32-wasip1/release/sample_wasi_http_rust.wasm \
out/sample_wasi_http_rust.aotYou can then run the server:
Rust:
cargo run -- out/sample_wasi_http_rust.aotJS:
cargo run -- out/sample_wasi_http_js.aot