Wasmer presented the project Wasmer 5.0, developing Runtime to perform WebAssembly modules, which can be used to create universal applications that can be performed in different operating systems. Wasmer can also be used for isolated execution of code blocks that are not trustworthy in ordinary applications. The project code is written in Rust and is distributed under the MIT license.
The ability to launch one application on different platforms is implemented through compilation into a low-level WebAssembly intermediate code, which can be launched in any OS or built into programs in other programming languages. Programs are lightweight containers in which the WebAssembly pseudo-code resides. These containers are not tied to the operating system and may include code originally written in any programming language.
For the extension code of WebAssembly or its broadcast into the machine code of the target platform, different backends are offered:
- Backend based on the compiler Singlepass, optimal for use in blockchains.
- Backend based on the code generator Cranelft, optimal for use in the development process.
- Backend based on the LLVM compiler, optimal for use in working introductions.
- Backend for launching in the web browser.
- Backend based on the JavaScriptCore, optimal for use on the MacOS platform.
- Backend based on the V8 JavaScript engine, optimal for applications for iOS and Android platforms.
- Backend based on the WASMI interpreter, optimal for blockchains and Rust projects that do not use the standard library (NoStd).
- Backend based on Runtime Wamr, optimal for iOS Platform.
Applications are isolated from the main system in the Sandbox-reduction and have access only to the declared functionality. For isolation, a mechanism based on the management of capabilities is used – for action with each of the resources (files, catalogs, sockets, system calls, etc.), appropriate powers must be given the application. Access management and interaction with the system is ensured using the API WASI (WebAssembly System Interface), which provides software interfaces for working with files, sockets