Announcing Wasmer 3.0
Announcing Wasmer 3.0
Syrus Akbary
Founder & CEO
November 23, 2022
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 viawasmer 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!
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
Syrus Akbary
Founder & CEO
`wasmer run`
Better API and Memory Management
Simplified Engines
Zero-copy Deserialization
Create Native Executables from Wasm… now including Windows!
Singlepass Compiler Improvements
WASI Improvements
Read more
wasixengineeringepollruntime
Boosting Performance: Integration of epoll syscall in WASIX
RudraAugust 8, 2023