paul_krill
Editor at Large

Wasmer takes WebAssembly server-side

news
Jul 24, 20192 mins
Open SourceSoftware DevelopmentWeb Development

Company offers an embeddable WebAssembly runtime for multiple programming languages along with a package manager

binary code
Credit: Thinkstock

Developers at Wasmer are betting big on WebAssembly, building a runtime intended to do for WebAssembly what Node.js did for JavaScript – establish it server-side. The company also has set its sights on a package manager for WebAssembly binaries.

The Wasmer runtime is intended to make WebAssembly a universal target for compilation by allowing developers to use WebAssembly “anywhere,” similar to the JVM, which provides a portable execution environment for Java applications.

Introduced in December 2018 and offered under an MIT license, Wasmer is a standalone just-in-time runtime, positioned to be compatible with WASI (WebAssembly System Interface) and the Emscripten compiler for asm.js and WebAssembly. Wasmer can execute the standard binary format, .wasm files, and the text format defined by the WebAssembly reference interpreter, .wat files.

Wasmer can run WebAssembly modules, including standalone programs with a CLI or other interface, or universal libraries, which are built to be used from any language. These include libraries such as GraphQL. Wasmer can be embedded in the following languages:

  • C/C++
  • Go
  • PHP
  • Python
  • Ruby
  • Rust

Wasmer CEO Syrus Akbary expects WebAssembly to gain wide adoption, and aims to build the next generation of application-based containers based on WebAssembly, with fast startup time and small application size. These are intended to power edge computing platforms.

Wasmer also has built Wapm, or WebAssembly Package Manager. Similar to what NPM does in the JavaScript world, Wapm is intended to host WebAssembly modules including binaries and universal libraries. 

Wasmer recently rolled out WebAssembly Interfaces, which permit static checks on modules to ensure they will run and stay compatible with a given API. WebAssembly Interfaces allow plug-in ecosystems to be distributed and used safely in Wapm. Interfaces can be defined for use in building Wasmer platform plug-ins.

Where to download Wasmer

You can download Wasmer and the Wapm CLI from GitHub.