presented the third significant issue of the project wasmer , developing Runtime to perform Webassembly modules, which can be used to create universal applications that can be performed in different operating systems, as well as for isolated execution of a code that does not deserve confidence. The project code is written in Rust and apply under the license mit.
the possibility of launching one application on different platforms is ensured due to compilation of code in low -level Webassembly intermediate code that can be launched in any OS or integrated into programs in other programming languages. Programs are lightweight containers in which the Webassembly pseudo -cod. These containers are not tied to the operating system and may include a code originally written in any programming language. For compilation in Webassembly, the instrumentation emscripten can be used. To broadcast Webassembly, the machine code of the current platform is supported by connecting different compilation backens ( singlepass , Cranelift, LLVM) and movements ( Jit or generation of machine code).
Applications are isolated from the main system in the Sandbox -reduction and have access only to the declared functionality (security mechanism based on capabilities – for actions with each of the resources (files, catalogs, sockets, system calls, etc.) should be applied The corresponding powers are given). Access management and interaction with the system is provided using the API WASI (Webassembly System Interface), which provides software interfaces for working with files, sockets and other functions provided by the operating system.
The platform allows you to achieve the performance of applications close to the implementation of native assemblies. Using NATIVE Object Engine for Webassembly-module, you can generate a machine code (“Wasmer Compile –Native” for generating pre-compiled object files. S .dylib and .dll), which requires the minimum Runtime, but remain all the possibilities . It is possible to supply pre -compiled programs with a built -in Wasmer. To create superstructures and additions, rust API and Wasm-C-Api .
To launch the WebASSEMBLY conteator, it is enough to install in the system runtime wasmer , which is supplied without external dependencies (/”///// /get.wasmer.io -sfl | SH), and start the required file (“Wasmer test.wasm”). Programs are distributed in the form of ordinary Webassembly modules, for the management of which you can use the package manager wapm . Wasmer is also available in the form of a library that can be used to embed Webassembly code in programs in Rust, C/C ++, C#, D, Python, JavaScript, GO, PHP, Ruby, Elixir and Java.