Wasmer 2.0, It's a big deal!
Announcing the general availability of the Wasmer 2.0
Syrus Akbary
Founder & CEO
June 2, 2021
It's been almost 6-months since we released Wasmer 1.0, and the community support and reception were incredible. Since then, we've been hard at work on the next version of Wasmer.
Today, we're pleased to announce the general availability of Wasmer 2.0!
Can't wait to try it? Go ahead!
curl https://get.wasmer.io -sSfL | sh
Or visit our repo: github.com/wasmerio/wasmer
2.0... A tale of Edge Cases, Engineers, and Semantic Versioning.
Wasmer 2.0 is packed full of new features that add stability, security, and performance improvements. All public APIs remain the same, with a few exceptions on internal APIs that will not affect 99% of current users. However, passionate discussions within the engineering team about semantic versioning pushed us towards 2.0.
Breaking changes: Wasm Modules serialized with Wasmer 1.0 cannot be deserialized with Wasmer 2.0.
What's New in 2.0
Our goals for Wasmer 2.0 are to provide the community with immediate value and set up the runtime to support future value. The main additions to the latest release include SIMD and Reference Types. Let's dive into the details.
SIMD
SIMD stands for single instruction, multiple data. In short, SIMD enables one instruction to operate on numerous pieces of data at the same time. The introduction of SIMD into Wasmer 2.0 empowers the community with higher performance data-level parallelism for many different use cases. Users creating machine-learning, video (transcoding, encoding, decoding...etc.), image processing, 3D physics, or graphics applications should see a significant boost in performance. Perhaps an underappreciated benefit of SIMD is its potential for reducing the energy signature of your applications.
Reference Types
Another prominent feature for Wasmer 2.0 is the inclusion of reference types. For the uninitiated, Reference Types allow Wasm modules to reference and share specific types of information with host environments or between multiple Wasm modules.
This allows for much simpler code to interact with a Wasm module from the host, and is a key feature to enable future proposals like Interface Types.
We will talk about this further in future blog posts.
Performance Improvements
It wouldn't be a new release without shiny performance improvements. The only thing we like as much as security is performance!
If you decided to switch to Wasmer 2.0 from Wasmer 1.0, you would notice the difference.
- LLVM runtime speed is around ~50% faster when operating with floats (thanks to optimal management of NaNs)
- Function calls are now much, much quicker, avoiding kernel interaction when possible (thanks to
sigsetjmp
andsiglongjmp
) - Cranelift runtime speed is 40% faster, thanks to their new backend architecture
- Deserialization time is very, very fast.
If you're new to the Wasmer community, you'll be delighted with the incredible performance that you can achieve with Wasmer 2.0, bringing your Wasm programs and libraries very close to native speeds.
Housekeeping Items
Aside from all of the improvements, we also realized that the current engine names were not providing the best context for how they work under the hood, so we decided to improve them!
The engines have new names:
- JIT → Universal (default)
- Native → Dylib (as an acronym to Dynamic Library)
- Object File → StaticLib (as an acronym to Static Library)
What's next
We've packed in many features that help with the stability, security, and performance of WebAssembly applications. However, we're far from done. Future releases of the Wasmer Runtime will continue to build on the work we implemented for Reference Types, add more security, performance, and of course, continue to add support for more operating environments and hardware infrastructures.
Our Commitment to Open Source and the WebAssembly Community
As WebAssembly continues to grow and thrive, we plan to double down on our commitment to the WebAssembly community and our mission to make WebAssembly universally available. We plan to implement a more open and transparent development process for future releases of the Wasmer Runtime on GitHub with milestones.
You Can Help
There are now multiple ways the community can actively help with our mission.
- Keep downloading and using Wasmer
- Provide as much feedback as possible to help make future release better or contribute directly with pull requests
- Become a sponsor and help fund future development by donating to our Open Collective page.
About Wasmer
Headquartered in San Francisco, CA, Wasmer Inc. is behind the popular open-source WebAssembly runtime Wasmer. In addition to the Wasmer runtime, the company has made significant investments in WAPM, the WebAssembly Package Manager, and many other open-source projects in the WebAssembly ecosystem.
Our mission is to make software universally available. We are committed to the open-source community and strive to contribute to developers and companies worldwide to help make Wasmer and WebAssembly a universal standard.
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
2.0... A tale of Edge Cases, Engineers, and Semantic Versioning.
What's New in 2.0
SIMD
Reference Types
Performance Improvements
Housekeeping Items
What's next
Our Commitment to Open Source and the WebAssembly Community
You Can Help
About Wasmer
Read more
engineeringwasmerruntimewasmer runtimeperformance
Improving WebAssembly load times with Zero-Copy deserialization
Arshia GhafooriSeptember 7, 2023