This repository contains a Rust implementation of the Layer8 Interceptor. Analogous to https://github.com/globe-and-citizen/layer8-interceptor
At the time of writing this document, it is a 1:1 port of the original implementation. The offering for this is a smaller wasm binary size and potentially better performance.
- Rust Toolchain
- wasm-tooling
-
wasm32-unkown-unknown target:
rustup target add wasm32-unknown-unknown
-
wasm-bindgen:
cargo install wasm-bindgen-cli
-
wasm-pack:
cargo install wasm-pack
-
We use wasm-pack to build the wasm module for web.
wasm-pack build --target bundler --all-features --release
Note
If you run into cargo:warning=error: unable to create target: 'No available targets are compatible with triple "wasm32-unknown-unknown"'
you will need to use a newer version of llvm.
Please follow the first two steps from the attached documentation to achieve this. Setup newer llvm/clang.
Warning
(WARNING: LLVM v 19.x.x has breaking changes. So, you'll need to update but not to v19.x.x. Suggested: v18.1.0. To check your version of llvm on Windows, use the command, $llvm-cov --version
or $clang --version
)
We can use the We've Got Poems example from the original Layer8 Interceptor repository to test our wasm implementation. We've changed the module used to this wasm implementation.
The example can be found in the wgp directory. Navigate to it and follow the README for a trial run.
Note
The wasm module needs to be bootstrapped to the Vue frontend. Please see vite.config.js for the configuration.
To generate code coverage we use cargo-llvm-cov
. To install it run:
cargo install cargo-llvm-cov
You can run code coverage by running:
cargo llvm-cov > test-coverage.txt
The result will be in the newly created test-coverage.txt
file. This can be used to generate a HTML report or a lcov.info
file.
To generate a HTML report run:
cargo llvm-cov --html --open
To generate a lcov.info
file run:
cargo llvm-cov --workspace --lcov --output-path lcov.info
The generated lcov.info
can be used with IDE tools like coverage gutters to watch code coverage.