WebAssembly runtime Wasmer kicks into turbo for 2nd major release of the year

wasmer 2.0

WebAssembly runtime Wasmer is available in version 2.0. Just six months after the first major release hit, the Wasmer team is back with major speed improvements for the open source project, bringing it closer to the goal of providing near-native speed for WebAssembly.

WebAssembly is a binary instruction format that can be used as a compilation target for existing code. It became a W3C recommendation in 2019, joining web standards such as HTML, JavaScript and CSS. Wasmer promises a secure and fast runtime environment for WebAssembly that can be embedded in multiple programming languages and should make the code executable on multiple platforms. 

The speedup of the current release can be attributed to the use of the new backend architecture of the Cranelift runtime and an acceleration of around 50 per cent in the LLVM runtime when using floats, which is said to be down to better management of NaNs. Other than that, the team was apparently able to quicken function calls and speed up certain deserialisation processes.

On the feature front, the project’s LLVM compiler gained an implementation of reference types. Besides simplifying interaction between host environment and wasm modules, the addition is meant to serve as the foundation for upcoming features such as interface types. 

Wasmer has also gained support for the latest version of the wasm SIMD proposal, which lets instructions simultaneously operate on multiple pieces of data — leading to a speedup and the “potential for reducing the energy signature of your applications”.

Developers who have at some stage contributed to the project, but haven’t since January, might need to reacquaint themselves with the engines used in Wasmer. Those have been renamed in the 2.0 release to clarify their inner workings. The native engine is now known as Dylib, which is short for dynamic library, the object file engine has turned into StaticLib and JIT has become the (maybe less descriptive) universal.

Users also need to be aware that Wasmer 2.0 won’t be able to deserialize wasm modules serialised with version 1.0 of the runtime, which can lead to breakage in older projects.

Plans for upcoming releases seem not to be fully formed yet. However, Wasmer founder Syrus Akbary mentioned plans to add more security, as well as support for more operating environments and hardware infrastructures in a blog post accompanying this release.