Wasmer 3.0 arrives with improvements in WASI, APIs, memory management and more

wasmer

Wasmer is a fast and secure WebAssembly runtime that enables super-lightweight containers to run anywhere: from desktop to cloud, edge, and IoT devices

After almost 6 months since the previous release, the new version of Wasmer 3.0 was released, the third major version of the project that develops a runtime to execute WebAssembly modules that can be used to create universal apps that can run on different operating systems, as well as untrusted code execution.

La ability to run the same application on different platforms it is provided by compiling the code into low-level WebAssembly intermediate code that can run on any operating system or be embedded in programs in other programming languages. Programs are lightweight containers that run WebAssembly pseudocode.

These containers are not tied to the operating system and can contain code originally written in any programming language.

To translate WebAssembly into current platform machine code, you supports connecting different build backends (Singlepass, Cranelift, LLVM) and engines (using JIT or generating machine code). Access control and interaction with the system are provided by the WASI (WebAssembly System Interface) API, which provides programming interfaces for working with files, sockets, and other functions provided by the operating system.

Platform allows you to achieve application execution performance close to that of native builds.

Main novelties of Wasmer 3.0

In this new version of Wasmer 3.0, the ability to create native executable files for any platform. The command "wasmer create-exe» has been completely redesigned to convert a WebAssembly intermediate code file into stand-alone executables for Linux, Windows, and macOS platforms that can be run without installing Wasmer.

Another novelty that is presented is that the ability to run WAPM packages located in the wapm.io directory using the "wasmer run" command. For example, execute "wasmer run python/python» will download the python package from the wapm.io repository and run it.

The Wasmer Rust API has been completely redesigned, changing the way it handles memory and providing the ability to store Wasm objects safely in the Store structure.

Also highlighted in this new version of Wasmer 3.0 is the improved WASI API implementation (WebAssembly System Interface), in addition to correcting problems in the WASI API to work with the file system. The internal types have been redesigned using WAI (WebAssembly Interfaces), which will allow a series of new functionalities to be implemented in the future.

In addition to this, the engines have also been simplified, since instead of separate engines for JIT, dynamic and static binding (Universal, Dylib, StaticLib), now offers a common engine and loads and saves code which is controlled at the parameter setting level.

To deserialize artifacts, the rkyv framework is used, which provides a zero copy operation, i.e. it requires no additional memory allocation and performs deserialization using only the initially provided buffer.

Of the other changes that stand out from this new version:

  • Using rkyv increased startup speed significantly.
  • The Singlepass compiler has been enhanced to support multi-valued functions, improve reliability, and add support for exception handling frameworks.
  • The set of components wasmer-js has been implemented to run Wasmer in a web browser and interact with it from JavaScript using the library wasm-bindgen.
  • A new structure has been proposed. MemoryView which allows reading and writing data in a linear memory area.

Finally, it should be mentioned that the programs are distributed in the form of ordinary WebAssembly modules, which can be managed using the WAPM package manager. Wasmer is also available as a library that can be used to embed WebAssembly code in Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir, and Java programs.

The code of the project is written in Rust and is distributed under the MIT license and you can check more about it, In the following link.


Be the first to comment

Leave a Comment

Your email address will not be published. Required fields are marked with *

*

*

  1. Responsible for the data: AB Internet Networks 2008 SL
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.