Wazero vs Chicory: An In-Depth Comparison Between Two Language-Native Wasm Runtimes
- Track: WebAssembly
- Room: K.4.601
- Day: Sunday
- Start: 09:30
- End: 09:55
- Video only: k4601
- Chat: Join the conversation!
Today there are several mature, state-of-the-art, general-purpose WebAssembly runtimes, but they are generally released as architecture- and OS-specific native binaries.
Native binaries are the most general way to distribute a Wasm implementation; however, any programming language with a significant runtime environment faces some degree of friction when interfacing with native code. For instance:
native code might make assumptions about memory management, which could conflict with automatic garbage collection, and it tends to assume ownership over threaded code, which won’t play well with abstractions over the operating system threads, such as user-space task schedulers.
With “language-native runtime”, we mean a Wasm implementation that has been developed using the language of the host platform.
Arguably, wazero was among the first language-native runtime environments for Wasm. wazero provides a pure-Go Wasm interpreter and a pure-Go just-in-time compiler for arm64 and amd64. But, even though this might be surprising, there are many similarities between the Go runtime and the Java runtime.
We will compare how the two relate to each other while presenting Chicory, a fairly new language-native runtime written in pure-Java, featuring a Wasm interpreter and an ahead-of-time bytecode translator.
By comparing wazero and Chicory, we propose language-native runtimes as a great solution to further spread Wasm for cross-platform software delivery.
Speakers
Edoardo Vacchi |