After two years of development the release of the first version was announced significant project Wasmer, which develops a runtime to run WebAssembly modules.
Wasmer use areas include the creation of universal applications that can be executed on different operating systems, as well as the organization of the isolated execution of unreliable code. The inclusion of server application building is supported, for example, the release of an Nginx server compiled on WebAssembly was demonstrated.
Portability it is achieved by compiling the application code in middleware Low-level WebAssembly that can run on any operating system or be integrated into programs in other programming languages.
The programs they are lightweight containers that run the WebAssembly pseudocode. These containers are not tied to the operating system and can contain applications originally written in any programming language.
The Toolkit Emscripten can be used to compile in WebAssemblyIn addition to translating WebAssembly to the machine code of the current platform, several frameworks are connected, such as LLVM and the Cranelift code generator.
On the other hand, access control and interaction with the system are provided through the WASI (WebAssembly System Interface) API, which provides programming interfaces for working with files, sockets, and other functions provided by the operating system.
Besides that applications are isolated from the host system in a sandbox environment and they have access only to the declared functionality (security mechanism based on management capabilities; for actions with each of the resources (files, directories, sockets, system calls, etc.), the application must receive the corresponding powers).
The programs are distributed in the form of regular WebAssembly modules, which can be managed through the WAPM package manager.
As for the features of Wasmer version 1.0 the following stand out:
- High performance of running applications, close to the execution of native assemblies and high compilation speed.
- Extensible architecture with the ability to connect different build backends (Singlepass, Cranelift, LLVM) and engines (using JIT or generating machine code).
Native Object Engine, which allows generating machine code for a given system for a WebAssembly module ("wasmer-native compilation" to generate precompiled .so, .dylib and .dll object files).
- Precompiled code requires minimal execution time to run, but all sandbox isolation capabilities are preserved.
- Headless mode to deliver pre-compiled programs with built-in Wasmer.
Cross-compilation support, for example, to generate machine code for the Aarch64 architecture on an x86_64 system.
- A simple API for creating plugins and plugins without the need to learn advanced WebAssembly concepts.
- Support for WASM-C-API.
- Tools for debugging and error handling.
Finally If you are interested in learning more about Wasmer, you should know that eThe project code is written in Rust, it has la MIT license and you can check its details on its official website at the following link
Install the Wasmer runtime
On the other hand, for those who are interested in being able to run the WebAssembly container, you only need to install the Wasmer runtime on your system, which comes without external dependencies.
It is important to mention that Wasmer can be run on any platform macOS, Linux and Windows, the only requirement is that its runtime be installed on your system.
To do this, just run the following command in a terminal:
curl https://get.wasmer.io -sSfL | sh
And after that, they must execute the required file:
If you need to know more about how Wasmer works or want to know its source code, you can consult all that In the following link.