backgroundradial

Announcing Wasmer 3.0

Announcing Wasmer 3.0

syrusakbary avatar
syrusakbary

Founder & CEO

engineering

November 23, 2022

arrowBack to articles

Today we are very excited to launch Wasmer 3.0, following three months of work since our first alpha.

So, what’s new in Wasmer?

  • wasmer is now able to run WAPM packages directly via wasmer run
  • Better API and memory management
  • We have simplified the way engines work. Now, only one engine is needed (although the engine might use different artifacts to load/store code)
  • Zero-copy deserialization of artifacts
  • Support for creating native executables for any platform
  • Enable multi-value in singlepass compiler
  • WASI improvements

wasmer run

Wasmer run, now on steroids. You can now pass any package published to wapm.io to the wasmer cli! 🎉

For example, wasmer run python/python will download and run directly the python package from the wapm.io package registry.

The wasmer CLI running python in the Warp terminal

The wasmer CLI running python in the Warp terminal!

This greatly simplifies the flow for running WASI executables from WAPM with wasmer.

Better API and Memory Management

The Wasmer Rust API has been rebuilt from the ground up.

Thanks to the new API and memory management style, we can now safely store Wasm objects in the Store.

Please check the Wasmer 3.0 Migration Guide to read how to upgrade to 3.0 from 1.0 or 2.0:

https://github.com/wasmerio/wasmer/blob/master/docs/migration_to_3.0.0.md

We also introduced a new MemoryView (similar to JS), and we brought wasmer-js (which run Wasmer in the browser with wasm-bindgen) to feature parity with wasmer-sys (running Wasmer natively)

Simplified Engines

Wasmer previously had the concept of different engines: dylib, universal, and more.

We have simplified all the engines into one to enable easier code reuse.

Zero-copy Deserialization

We are now using rkyv for zero-copy deserialization of build artifacts.

This has significantly improved startup performance!

Create Native Executables from Wasm… now including Windows!

As reviewed in previous blog posts, we revamped the create-exe subcommand in Wasmer.

Wasmer can now turn a WebAssembly file into a native Windows, Linux or Mac OS executable. This enables distributing executables to users, without requiring them to install Wasmer themselves.

This functionality is implemented on top of Zig's cross compilation abilities.

You can learn more about how create-exe works here:

https://wasmer.io/posts/wasm-as-universal-binary-format-part-1-native-executables

And how we integrated it into WAPM here:

https://wasmer.io/posts/wasm-as-universal-binary-format-part-2-wapm

Singlepass Compiler Improvements

The most popular compiler for blockchains got a lot of new improvements:

  • Support for multi-value functions
  • Improved robustness of the Singlepass compiler
  • Added support for exception handling frames
  • …and many more fixes and improvements (specially regarding performance!)

WASI Improvements

Wasmer WASI implementation is becoming more mature. We fixed multiple bugs with the file system and reworked its inner types with WebAssembly Interfaces (WAI). This enables new capabilities, which we will introduce in future.

Stay tuned for some updates on WAI soon!


Install the latest version of the Wasmer CLI and let us know your thoughts!

curl https://get.wasmer.io -sSfL | sh
About the Author

Syrus Akbary is an enterpreneur and programmer. Specifically known for his contributions to the field of WebAssembly. He is the Founder and CEO of Wasmer, an innovative company that focuses on creating developer tools and infrastructure for running Wasm

 avatar

Founder & CEO

Read more
Post cover image

wasixengineeringepollruntime

Boosting Performance: Integration of epoll syscall in WASIX

RudraAugust 8, 2023

engineeringruntimewasmer 2.1

Wasmer-JS: A New Hope

December 7, 2021

engineeringruntimewasmer runtime

Wasmer 4.1

July 17, 2023

engineeringruntimewasmer runtime

Wasmer 4.0

June 22, 2023