WASM All Things - A Tour of the WebAssembly Ecosystem
Blog post from Memgraph
Kostas Kyrimis delves into the intricacies of the WebAssembly (WASM) ecosystem, highlighting the process of compiling C libraries into WASM modules using the Emscripten SDK, which transforms C programs into modules consumable by browsers or JavaScript engines. The article addresses the challenge posed by the restricted environment of browsers, particularly the limited access to system interfaces like POSIX, and discusses how Emscripten emulates system libraries through JavaScript files, thereby constraining the modules to JavaScript's limitations. To overcome these restrictions, the WebAssembly System Interface (WASI) is introduced, offering a complete sandbox environment that allows for standalone WASM modules to be executed on any WASI-compliant runtime, thus providing seamless interoperability across different execution environments. The author also touches on the potential for Emscripten to fully support WASI in the future and introduces Wasmer, a WASM runtime supporting WASI and available in multiple programming languages, which could unify runtime semantics across various languages. The discussion sets the stage for exploring jsmgclient, Memgraph's first WASM-based client adapter, which will be covered in the subsequent part of the series.