BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News The "Wasmer" WebAssembly Runtime is Generally Available

The "Wasmer" WebAssembly Runtime is Generally Available

This item in japanese

Wasmer recently released version 1.0 of its server-side WebAssembly runtime, and it is now generally available.

Wasmer enables super lightweight containers based on WebAssembly (abbreviated Wasm). Version 1.0 marks a significant milestone on a journey which started more than two years ago with version 0.1.0. It is an indicator of the growing interest in Wasm on the server-side.

Wasmer's version 1.0 significant features include:

  1. Various performance improvements: up to 9x faster compilation times than in previous versions.
  2. Pluggable infrastructure: support for multiple compilers and multiple compilation engines. Out-of-the-box, Wasmer ships with support for Singlepass, Cranelift, and LLVM. It also supports two modes of operation - a JIT engine that pushes generated code directly into memory and a native engine that produces native code on disk.
  3. Native object engine: precompile Wasm modules into native objects. These objects require a minimal runtime to run compiled modules while still providing a fully sandboxed environment.
  4. Headless Wasmer: specifically targeted at lightweight IoT devices, users can run a "headless" version of Wasmer that weighs just a few hundred kilobytes and runs any precompiled Wasm binary on any device.
  5. Cross-compilation: precompile Wasm to any target CPU architecture from any CPU architecture.

Wasm is a binary instruction format for a stack-based virtual machine. It is designed as a portable compilation target for programming languages, enabling deployment on the web for client and server applications. Wasm is gaining a lot of traction for implementing web applications. Developers can use Wasm instead of, or in addition to, traditional JavaScript code, and most modern browsers can execute Wasm out-of-the-box. The number of languages targeting Wasm is continuously rising, including C/C++, Rust, C#, etc.

Following the popularity of WebAssembly in the browser, several server-side Wasm implementations have emerged. Syrus Akbary, CEO of Wasmer Inc., explains the importance of a server-side Wasm runtime:

We believe that WebAssembly will be a crucial component for the future of software execution and containerization (not only inside the browser but also outside).

By leveraging Wasm for software containerization, we create universal binaries that work anywhere without modification, including operating systems like Linux, macOS, Windows, and web browsers. Wasm automatically sandboxes applications by default for secure execution, shielding the host environment from malicious code, bugs, and vulnerabilities in the software it runs. Wasm also provides a lean execution environment enabling Wasmer containers to run in places where Docker containers are too heavy to work.

Wasm server-runtimes implement the WebAssembly System Interface (WASI), a modular system interface for WebAssembly. WASI implementations allow Wasm code to access OS-specific services, which are not typically available on a browser (file system, networking, etc.). Solomon Hykes, a co-founder of Docker, twitted back in 2019:

If WASM+WASI existed in 2008, we wouldn't have needed to create Docker. That's how important it is. WebAssembly on the server is the future of computing. A standardized system interface was the missing link. Let's hope WASI is up to the task!

Wasmer is a popular open-source implementation of a Wasm server-side runtime written in Rust. The company backing it, Wasmer Inc., has also created the WebAssembly Package Manager (WAPM). It allows developers to share packaged modules of Wasm code easily. Alternatives to Wasmer include runtimes such as Second State Virtual Machine (SSVM) and Lucet.

Rate this Article

Adoption
Style

BT