Paul Krill
Editor at Large

Meet Wasmjit, your future embeddable WebAssembly runtime

news
Oct 1, 20182 mins

Wasmjit, now a proof of concept in beta, is intended to be a Linux kernel module

raindrop-beaded web of connections
Credit: Petra

Built with ambitions of powering the WebAssembly world, an embeddable runtime for the WebAssembly (aka Wasm) binary format is in development, called Wasmjit.

Still a proof of concept, Wasmjit is targeted as a Linux kernel module to host Emscripten-generated WebAssembly modules. Developer Rian Hunter, who previously built the Linux client for the Dropbox file-hosting service, has offered a beta release to encourage developer participation.

Wasmjit was introduced as an open source project in late September. Principal goals of Wasmjit include:

  • Serving as a minimal, embeddable runtime to power WebAssembly the way SQLite powers embedded databases. Engineers should be easily able to embed Wasmjit instead of having to build their own runtime.
  • Provision of a kernel-mode runtime for WebAssembly, to increase performance for system-call heavy loads. This would translate into cost savings for companies with heavily trafficked websites, such as Google and Facebook.

The plan at the moment is to flesh out Wasmjit enough to run “real” programs, including production-grade web servers. Integrating a runtime into the kernel could change the direction of the computer industry, enabling simplified distribution for closed-source applications and a platform-neutral userland, referring to all code that runs outside the OS kernel, Hunter said. Also, hardware could be simplified by having applications run in kernel mode.

There is a goal to have Wasmjit eventually included in the mainline Linux kernel, which would require its formal acceptance by the maintainers of Linux. But Wasmjit can function as an out-of-tree module.

First, Hunter wants to see more usage of Wasmjit. With a core written in C90, the open source runtime is intended to be easily portable to most environments. Its Linux configuration has it running in kernel space (ring 0) and providing access to system calls as normal function calls. This configuration, avoiding user-kernel translation overhead, can result in a significant performance increase for syscall-bound programs such as web servers.

Wasmjit also offers a host environment for running in user space on Posix systems. This is useful in running WebAssembly modules without having to run an entire browser.

Where to download Wasmjit

You can download Wasmjit from the project’s GitHub page, which also has detailed instructions on requirements and setup.

Paul Krill

Paul Krill is editor at large at InfoWorld. Paul has been covering computer technology as a news and feature reporter for more than 35 years, including 30 years at InfoWorld. He has specialized in coverage of software development tools and technologies since the 1990s, and he continues to lead InfoWorld’s news coverage of software development platforms including Java and .NET and programming languages including JavaScript, TypeScript, PHP, Python, Ruby, Rust, and Go. Long trusted as a reporter who prioritizes accuracy, integrity, and the best interests of readers, Paul is sought out by technology companies and industry organizations who want to reach InfoWorld’s audience of software developers and other information technology professionals. Paul has won a “Best Technology News Coverage” award from IDG.

More from this author