It’s Kostas again from the Core Team with the second part of my WebAssembly series. For a quick recap of the last week’s article, I discussed the bottlenecks of working with multiple client libraries and the novel idea of compiling
mgclient to a WASM module, effectively mitigating the inter-op dependencies on the bindings. Today, I will dive deeper into the WebAssembly world by discussing a few key ideas behind WASM and its ecosystem, and I will start with a question: how to compile a C library to a WASM module?
And now for the cherry at the top and the missing element mentioned in the previous article -
wasmer. It is a WASM runtime that supports WASI and is available as a library in many languages (Java, go, PHP, Ruby, etc.). With
wasmer, we could, in theory, replace all the binding technologies (JNI, etc.) with a single runtime that has the same universal semantics. The only thing that slightly changes for each supported language is the API (to conform to the paradigm of each language).
With all the WebAssembly information we went over in this article, we built a solid foundation to finally discuss
jsmgclient, the Memgraph’s first WASM-based client adapter. Buuuuut, for that, you will need to read the last part of the series.