Is marine a WASM virtual machine?
I see WebAssembly runtime description of marine in document, but I am not sure if I understand correctly that WebAssembly runtime is a WASM virtual machine or other someting?
Hi! Thank you for your Q!
Actually, it's a good and a bit definitions-centric topic. Let's first define what runtime and virtual machine(VM) stand for. Quoting this reddit topic (that I personally agree on):
-
A runtime environment is simply all the resources needed to support running the program. This means shared libraries, processes, VMs, whatever put together allows the program to be run on the machine. -
A VM is a fictional machine, essentially. It behaves like an actual machine, in the sense that you can provide instructions for it separately from source languages.
And from this perspective, Marine behaves like a runtime, meaning that it's not just execute Wasm modules, but provide environment including:
- host imports (WASI and mounted binary interface intended for calling external CLI binaries),
- environment folders for services (
localandtmp), - environment variables accessible during module execution,
- transparent mechanism for shared-nothing modules linking,
- support of logging mechanism
- and other minor resources and support
Moreover, Wasmer (we're using it for Wasm compilation and execution) and Wasmtime claim to be runtime itself (according to readme on their main repos).
Hope I answered your Q, if not please do not hesitate to ask more.
Thank you for your clairfy.
Do you implement marine runtime especially for execute Wasm modules from scratch or base on other open source project?
We're using Wasmer 0.17.1 under the hood.