ืคืจืืืงื Wasmer ืคืจืกื ืืช ืืืืืืจื ืืืืืื ืืฉื ืืื ืฉืื, ืืคืืชื ืืื ืจืืฆื ืืืืฆืืข ืืืืืื WebAssembly ืฉื ืืชื ืืืฉืชืืฉ ืืื ืืืฆืืจืช ืืืฉืืืื ืืื ืืืจืกืืืื ืฉืืืืืื ืืจืืฅ ืขื ืืขืจืืืช ืืคืขืื ืฉืื ืืช, ืืื ืื ืืืคืขืืช ืงืื ืื ืืืืื ืืืืืื. ืงืื ืืคืจืืืงื ืืชืื ื-Rust ืืืืคืฅ ืชืืช ืจืืฉืืื MIT.
ื ืืืืืช ืืืฉืืช ืขื ืืื ืงืืืคืืืฆืื ืฉื ืงืื ืืืฉืื ืืงืื ืืื ืืื WebAssembly ืืจืื ื ืืืื, ืฉืืืื ืืคืขืื ืืื ืืขืจืืช ืืคืขืื ืื ืืืืืช ืืืืืข ืืชืืื ืืืช ืืฉืคืืช ืชืื ืืช ืืืจืืช. ืืชืืื ืืืช ืื ืืืืืื ืงืืื ืฉืืจืืฆืื ืคืกืืืืืงืื WebAssembly. ืงืื ืืืื ืจืื ืืื ืืื ื ืงืฉืืจืื ืืืขืจืืช ืืืคืขืื ืืืืืืื ืืืืื ืงืื ืฉื ืืชื ืืืงืืจ ืืื ืฉืคืช ืชืื ืืช. ื ืืชื ืืืฉืชืืฉ ืืขืจืืช ืืืืื ืฉื Emscripten ืืื ืืืืจ ื-WebAssembly. ืืื ืืชืจืื ืืช WebAssembly ืืงืื ืืืื ื ืฉื ืืคืืืคืืจืื ืื ืืืืืช, ืืื ืชืืื ืืืืืืจ ืฉื ืจืืืื ืงืืืคืืืฆืื ืฉืื ืื (Singlepass, Cranelift, LLVM) ืืื ืืขืื (ืืืืฆืขืืช JIT ืื ืืฆืืจืช ืงืื ืืืื ื).
ืืงืจืช ืืืฉื ืืืื ืืจืืงืฆืื ืขื ืืืขืจืืช ื ืืชื ืืช ืืืืฆืขืืช ื-API ืฉื WASI (WebAssembly System Interface) ืืืกืคืง ืืืฉืงื ืชืื ืืช ืืขืืืื ืขื ืงืืฆืื, ืฉืงืขืื ืืคืื ืงืฆืืืช ื ืืกืคืืช ืฉืืกืคืงืืช ืืขืจืืช ืืืคืขืื. ืืืฉืืืื ืืืืืืื ืืืืขืจืืช ืืจืืฉืืช ืืกืืืืช ืืจืื ืืื ืืืฉ ืืื ืืืฉื ืจืง ืืคืื ืงืฆืืื ืืืืช ืืืืฆืืจืช (ืื ืื ืื ืืืืื ืืืืืกืก ืขื ื ืืืื ืืืืืืช - ืืคืขืืืืช ืขื ืื ืืื ืืืืฉืืืื (ืงืืฆืื, ืกืคืจืืืช, ืฉืงืขืื, ืงืจืืืืช ืืขืจืืช ืืื'), ืืฉ ืืชืช ืืืงืฉื ืืช ืืกืืืืืืช ืืืชืืืืืช).
ืืื ืืืคืขืื ืงืื ืืืื ืจ WebAssembly, ืคืฉืื ืืชืงื ืืช Wasmer ืืืขืจืืช ืืื ืืจืืฆื, ืฉืืืืขื ืืื ืชืืืช ืืืฆืื ืืช ("curl https://get.wasmer.io -sSfL | sh"), ืืืคืขื ืืช ืืงืืืฅ ืืืจืืฉ ("wasmer test.wasm" ). ืืชืืื ืืืช ืืืคืฆืืช ืืฆืืจื ืฉื ืืืืืื WebAssembly ืจืืืืื, ืืืชื ื ืืชื ืื ืื ืืืืฆืขืืช ืื ืื ืืืืืืืช WAPM. Wasmer ืืืื ืื ืืกืคืจืืื ืฉืืืืื ืืฉืืฉ ืืืืืขืช ืงืื WebAssembly ืืชืืื ืืืช Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir ื-Java.
ืืคืืืคืืจืื ืืืคืฉืจืช ืื ืืืฉืื ืืืฆืืขื ืืืฆืืข ืืืฉืืืื ืงืจืืืื ืืืืืืืื ืืงืืืืื. ืืืืฆืขืืช Native Object Engine ืขืืืจ ืืืืื WebAssembly, ืืชื ืืืื ืืืฆืืจ ืงืื ืืืื ื ("wasmer compile -native" ืืืฆืืจืช ืงืืืฆื ืืืืืืงื .so, .dylib ื-.dll ืืืืืจืื ืืจืืฉ), ืฉืืืจืฉ ืืื ืจืืฆื ืืื ืืืื ืืืคืขืื, ืื ืฉืืืจ ืขื ืื ืืืืื ืืจืื ืืืื ืืืคืืื ืื. ืืคืฉืจ ืืกืคืง ืชืืื ืืืช ืืืืืจืืช ืืจืืฉ ืขื Wasmer ืืืื ืืช. ื-Rust API ื-Wasm-C-API ืืืฆืขืื ืืืฆืืจืช ืืจืืืืช ืืืจืืืืช.
ืฉืื ืื ืืฉืืขืืชื ืืืกืคืจ ืืืจืกื ืฉื Wasmer ืงืฉืืจ ืืืื ืกืช ืฉืื ืืืื ืื ืชืืืืื ื-API ืืคื ืืื, ืฉืืืืจื ืืืคืชืืื ืื ืืฉืคืืขื ืขื 99% ืืืฉืชืืฉื ืืคืืืคืืจืื. ืืื ืืฉืื ืืืื ืืฉืืืจืื ืืช ืืชืืืืืช, ืืฉื ื ืื ืฉืื ืื ืืคืืจืื ืฉื ืืืืืื Wasm ืืกืืืจื (ืืืืืืื ืืกืืืจืื ื- Wasmer 1.0 ืื ืืืืื ืืฉืืฉ ื- Wasmer 2.0). ืฉืื ืืืื ื ืืกืคืื:
- ืชืืืื ืืืืจืืืช SIMD (Single Instruction, Multiple Data), ืืืืคืฉืจ ืืงืืืื ืฉื ืคืขืืืืช ื ืชืื ืื. ืชืืืืื ืฉืืื ืืฉืืืืฉ ื- SIMD ืืืื ืืฉืคืจ ืืฉืืขืืชืืช ืืช ืืืืฆืืขืื ืืืืืื ืืืืืช ืืืื ื, ืงืืืื ืืคืขื ืื ืืืืื, ืขืืืื ืชืืื ื, ืืืืืืช ืชืืืืืื ืคืืืืื ืืื ืืคืืืฆืื ืืจืคืืช.
- ืชืืืื ืืกืืื ืืชืืืืกืืช, ืืืืคืฉืจืช ืืืืืืื Wasm ืืืฉืช ืืืืืข ืืืืืืืื ืืืจืื ืื ืืกืืืื ืืืกืืกืืช.
- ืืืฆืขื ืืืคืืืืืืฆืืืช ืืฉืืขืืชืืืช ืฉื ืืืฆืืขืื. ืืืืจืืช ืืื ืืจืืฆื ืฉื LLVM ืขื ืืกืคืจื ื ืงืืื ืฆืคื ืืืืืื ืื-50%. ืงืจืืืืช ืคืื ืงืฆืื ืืืืฆื ืืฉืืขืืชืืช ืขื ืืื ืฆืืฆืื ืืฆืืื ืืืืจืฉืื ืืืฉื ืืงืจื ื. ืืืฆืืขื ืืืืื ืืงืื ืฉื Cranelift ืืืืืื ื-40%. ืืื ืื-ืกืืืจืืืืืืฆืื ืฉื ื ืชืื ืื ืืืคืืช.
- ืืื ืืฉืงืฃ ืืฆืืจื ืืืืืงืช ืืืชืจ ืืช ืืืืืช, ืฉืืืช ืืื ืืขืื ืฉืื ื: JIT โ Universal, Native โ Dylib (ืกืคืจืืื ืืื ืืืช), ืงืืืฅ ืืืืืืงื โ StaticLib (ืกืคืจืืื ืกืืืืช).
ืืงืืจ: OpenNet.ru