SMasHprovides an easy to use interface for sharing memory among multiple Hermit unikernels.
Although SMAsH is primarily developed for the Hermit unikernel it can also be used in other Rust environments to share memory amogn processes.
To run Hermit unikernels two additional files are needed.
- hermit loader to run the unikernel with
QEMU(./get_loader.shprovides an easy way to get the latest version) - virtiofsd to bridge the unikernel's filesystem with the host (prebuild binaries available for x86_64)
- handling of shared memory like any other smartpointer
- no
unsafecode for the user - fully distributed memory, no single points of failure
- usage of idiomantic Rust
To use Hermit the Rust toolchain and rust-std-hermit are required. The Protocol Buffers compiler protoc is needed for the shared memory objects.
The complete development environment is provided by as Docker image.
The following command will build the current directory in development configuration. To use any other cargo command, simply override the entrypoint of the container.
docker run -v $(pwd):/app:Z ghcr.io/felix-scheib/felix-scheib/smash/buildenv:1.0