Wasmer 3.0, ืขืจื›ืช ื›ืœื™ื ืœื™ืฆื™ืจืช ื™ื™ืฉื•ืžื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ WebAssembly, ื–ืžื™ื ื”

ืžื•ืฆื’ืช ื”ืžื”ื“ื•ืจื” ื”ื’ื“ื•ืœื” ื”ืฉืœื™ืฉื™ืช ืฉืœ ืคืจื•ื™ืงื˜ Wasmer, ืืฉืจ ืžืคืชื—ืช ื–ืžืŸ ืจื™ืฆื” ืœื‘ื™ืฆื•ืข ืžื•ื“ื•ืœื™ WebAssembly ืฉื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื”ื ืœื™ืฆื™ืจืช ื™ื™ืฉื•ืžื™ื ืื•ื ื™ื‘ืจืกืœื™ื™ื ืฉื™ื›ื•ืœื™ื ืœืคืขื•ืœ ืขืœ ืžืขืจื›ื•ืช ื”ืคืขืœื” ืฉื•ื ื•ืช, ื›ืžื• ื’ื ืœื‘ื™ืฆื•ืข ืงื•ื“ ืœื ืžื”ื™ืžืŸ ื‘ื‘ื™ื“ื•ื“. ืงื•ื“ ื”ืคืจื•ื™ืงื˜ ื›ืชื•ื‘ ื‘-Rust ื•ืžื•ืคืฅ ืชื—ืช ืจื™ืฉื™ื•ืŸ MIT.

ื”ื™ื›ื•ืœืช ืœื”ืคืขื™ืœ ืืคืœื™ืงืฆื™ื” ืื—ืช ื‘ืคืœื˜ืคื•ืจืžื•ืช ืฉื•ื ื•ืช ืžืกื•ืคืงืช ืขืœ ื™ื“ื™ ื”ื™ื“ื•ืจ ืงื•ื“ ืœืงื•ื“ ื‘ื™ื ื™ื™ื WebAssembly ื‘ืจืžื” ื ืžื•ื›ื”, ืฉื™ื›ื•ืœ ืœืคืขื•ืœ ื‘ื›ืœ ืžืขืจื›ืช ื”ืคืขืœื” ืื• ืœื”ื™ื•ืช ืžื•ื˜ื‘ืข ื‘ืชื•ื›ื ื•ืช ื‘ืฉืคื•ืช ืชื›ื ื•ืช ืื—ืจื•ืช. ื”ืชื•ื›ื ื™ื•ืช ื”ืŸ ืžื™ื›ืœื™ื ืงืœื™ื ืฉืžืจื™ืฆื™ื ืคืกืื•ื“ื•ืงื•ื“ WebAssembly. ืงื•ื ื˜ื™ื™ื ืจื™ื ืืœื• ืื™ื ื ืงืฉื•ืจื™ื ืœืžืขืจื›ืช ื”ื”ืคืขืœื” ื•ื™ื›ื•ืœื™ื ืœื›ืœื•ืœ ืงื•ื“ ืฉื ื›ืชื‘ ื‘ืžืงื•ืจ ื‘ื›ืœ ืฉืคืช ืชื›ื ื•ืช. ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืขืจื›ืช ื”ื›ืœื™ื ืฉืœ Emscripten ื›ื“ื™ ืœื”ื“ืจ ืœ-WebAssembly. ื›ื“ื™ ืœืชืจื’ื ืืช WebAssembly ืœืงื•ื“ ืžื›ื•ื ื” ืฉืœ ื”ืคืœื˜ืคื•ืจืžื” ื”ื ื•ื›ื—ื™ืช, ื”ื•ื ืชื•ืžืš ื‘ื—ื™ื‘ื•ืจ ืฉืœ ืจื›ื™ื‘ื™ ืงื•ืžืคื™ืœืฆื™ื” ืฉื•ื ื™ื (Singlepass, Cranelift, LLVM) ื•ืžื ื•ืขื™ื (ื‘ืืžืฆืขื•ืช JIT ืื• ื™ืฆื™ืจืช ืงื•ื“ ืžื›ื•ื ื”).

ื™ื™ืฉื•ืžื™ื ืžื‘ื•ื“ื“ื™ื ืžื”ืžืขืจื›ืช ื”ืจืืฉื™ืช ื‘ืกื‘ื™ื‘ืช ืืจื’ื– ื—ื•ืœ ื•ื™ืฉ ืœื”ื ื’ื™ืฉื” ืจืง ืœืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื”ืžื•ืฆื”ืจืช (ืžื ื’ื ื•ืŸ ืื‘ื˜ื—ื” ื”ืžื‘ื•ืกืก ืขืœ ื ื™ื”ื•ืœ ื™ื›ื•ืœื•ืช - ืœืคืขื•ืœื•ืช ืขื ื›ืœ ืื—ื“ ืžื”ืžืฉืื‘ื™ื (ืงื‘ืฆื™ื, ืกืคืจื™ื•ืช, ืฉืงืขื™ื, ืงืจื™ืื•ืช ืžืขืจื›ืช ื•ื›ื•'), ื™ืฉ ืœืชืช ืœื‘ืงืฉื” ืืช ื”ืกืžื›ื•ื™ื•ืช ื”ืžืชืื™ืžื•ืช). ื‘ืงืจืช ื’ื™ืฉื” ื•ืื™ื ื˜ืจืืงืฆื™ื” ืขื ื”ืžืขืจื›ืช ื ื™ืชื ื•ืช ื‘ืืžืฆืขื•ืช ื”-API ืฉืœ WASI (WebAssembly System Interface) ื”ืžืกืคืง ืžืžืฉืงื™ ืชื›ื ื•ืช ืœืขื‘ื•ื“ื” ืขื ืงื‘ืฆื™ื, ืฉืงืขื™ื ื•ืคื•ื ืงืฆื™ื•ืช ื ื•ืกืคื•ืช ืฉืžืกืคืงื•ืช ืžืขืจื›ืช ื”ื”ืคืขืœื”.

ื”ืคืœื˜ืคื•ืจืžื” ืžืืคืฉืจืช ืœืš ืœื”ืฉื™ื’ ื‘ื™ืฆื•ืขื™ ื‘ื™ืฆื•ืข ื™ื™ืฉื•ืžื™ื ืงืจื•ื‘ื™ื ืœืžื›ืœื•ืœื™ื ืžืงื•ืžื™ื™ื. ื‘ืืžืฆืขื•ืช Native Object Engine ืขื‘ื•ืจ ืžื•ื“ื•ืœ WebAssembly, ืืชื” ื™ื›ื•ืœ ืœื™ืฆื•ืจ ืงื•ื“ ืžื›ื•ื ื” ("wasmer compile -native" ืœื™ืฆื™ืจืช ืงื•ื‘ืฆื™ ืื•ื‘ื™ื™ืงื˜ .so, .dylib ื•-.dll ืžื”ื•ื“ืจื™ื ืžืจืืฉ), ืฉื“ื•ืจืฉ ื–ืžืŸ ืจื™ืฆื” ืžื™ื ื™ืžืœื™ ืœื”ืคืขืœื”, ืืš ืฉื•ืžืจ ืขืœ ื›ืœ ื‘ื™ื“ื•ื“ ืืจื’ื– ื”ื—ื•ืœ ืžืืคื™ื™ื ื™ื. ืืคืฉืจ ืœืกืคืง ืชื•ื›ื ื™ื•ืช ืžื”ื•ื“ืจื•ืช ืžืจืืฉ ืขื Wasmer ืžื•ื‘ื ื™ืช. ื”-Rust API ื•-Wasm-C-API ืžื•ืฆืขื™ื ืœื™ืฆื™ืจืช ื”ืจื—ื‘ื•ืช ื•ื”ืจื—ื‘ื•ืช.

ื›ื“ื™ ืœื”ืคืขื™ืœ ืงื•ื ื˜ื™ื™ื ืจ 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.

ืฉื™ื ื•ื™ื™ื ืขื™ืงืจื™ื™ื ื‘- Wasmer 3.0:

  • ื ื•ืกืคื” ืืช ื”ื™ื›ื•ืœืช ืœื™ืฆื•ืจ ืงื‘ืฆื™ ื”ืคืขืœื” ืžืงื•ืจื™ื™ื ืขื‘ื•ืจ ื›ืœ ืคืœื˜ืคื•ืจืžื”. ื”ืคืงื•ื“ื” "wasmer create-exe" ืขื•ืฆื‘ื” ืžื—ื“ืฉ ืœื—ืœื•ื˜ื™ืŸ ื›ื“ื™ ืœื”ืžื™ืจ ืงื•ื‘ืฅ ืงื•ื“ ื‘ื™ื ื™ื™ื ืฉืœ WebAssembly ืœืงื•ื‘ืฆื™ ื”ืคืขืœื” ืขืฆืžืื™ื™ื ืขื‘ื•ืจ ืคืœื˜ืคื•ืจืžื•ืช Linux, Windows ื•-macOS ืฉื™ื›ื•ืœื•ืช ืœืคืขื•ืœ ืžื‘ืœื™ ืœื”ืชืงื™ืŸ ืืช Wasmer ืขืฆืžื”.
  • ืืคืฉืจ ืœื”ืคืขื™ืœ ื—ื‘ื™ืœื•ืช WAPM ื”ืžืžื•ืงืžื•ืช ื‘ืกืคืจื™ื™ืช wapm.io ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” "wasmer run". ืœื“ื•ื’ืžื”, ื”ืคืขืœืช "wasmer run python/python" ืชื•ืจื™ื“ ืืช ื—ื‘ื™ืœืช python ืžืžืื’ืจ wapm.io ื•ืชืคืขื™ืœ ืื•ืชื”.
  • ื”-API ืฉืœ Wasmer Rust ืขื•ืฆื‘ ืžื—ื“ืฉ ืœื—ืœื•ื˜ื™ืŸ, ืžืฉื ื” ืืช ืกื’ื ื•ืŸ ื”ืขื‘ื•ื“ื” ืขื ื”ื–ื™ื›ืจื•ืŸ ื•ืžืกืคืง ืืช ื”ื™ื›ื•ืœืช ืœืฉืžื•ืจ ื‘ื‘ื˜ื—ื” ืื•ื‘ื™ื™ืงื˜ื™ Wasm ื‘ืžื‘ื ื” ื”ื—ื ื•ืช. ื”ื•ืฆืข ืžื‘ื ื” MemoryView ื—ื“ืฉ ื”ืžืืคืฉืจ ืงืจื™ืื” ื•ื›ืชื™ื‘ื” ืฉืœ ื ืชื•ื ื™ื ืœืื–ื•ืจ ื–ื™ื›ืจื•ืŸ ืœื™ื ื™ืืจื™.
  • ืงื‘ื•ืฆื” ืฉืœ ืจื›ื™ื‘ื™ wasmer-js ื”ื•ื˜ืžืขื” ื›ื“ื™ ืœื”ืคืขื™ืœ ืืช Wasmer ื‘ื“ืคื“ืคืŸ ืื™ื ื˜ืจื ื˜ ื•ืœืชืงืฉืจ ืื™ืชื• ืž-JavaScript ื‘ืืžืฆืขื•ืช ืกืคืจื™ื™ืช wasm-bindgen. ื‘ื™ื›ื•ืœื•ืชื™ื•, wasmer-js ืžืชืื™ื ืœืจื›ื™ื‘ื™ wasmer-sys ื”ืžื™ื•ืขื“ื™ื ืœื”ืจื™ืฅ ืืช Wasmer ื‘ืžืขืจื›ื•ืช ื”ืคืขืœื” ืจื’ื™ืœื•ืช.
  • ื”ืžื ื•ืขื™ื ื”ืคื›ื• ืœืคืฉื•ื˜ื™ื. ื‘ืžืงื•ื ืžื ื•ืขื™ื ื ืคืจื“ื™ื ืœ-JIT, ืงื™ืฉื•ืจ ื“ื™ื ืžื™ ื•ืกื˜ื˜ื™ (Universal, Dylib, StaticLib), ืžื•ืฆืข ื›ืขืช ืžื ื•ืข ืื—ื“ ืžืฉื•ืชืฃ, ื•ื”ื˜ืขื™ื ื” ื•ื”ืฉืžื™ืจื” ืฉืœ ื”ืงื•ื“ ื ืฉืœื˜ืช ื‘ืจืžืช ื”ื’ื“ืจืช ื”ืคืจืžื˜ืจื™ื.
  • ื›ื“ื™ ืœื ื˜ืจืœ ื—ืคืฆื™ื, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืžืกื’ืจืช rkyv, ื”ืžื‘ื˜ื™ื—ื” ืคืขื•ืœื” ื‘ืžืฆื‘ ืืคืก ื”ืขืชืงื”, ื›ืœื•ืžืจ. ืืฉืจ ืื™ื ื• ื“ื•ืจืฉ ื”ืงืฆืืช ื–ื™ื›ืจื•ืŸ ื ื•ืกืคืช ื•ืžื‘ืฆืข ื“ื”-ืกืจื™ืืœื™ื–ืฆื™ื” ืจืง โ€‹โ€‹ื‘ืืžืฆืขื•ืช ื”ืžืื’ืจ ืฉืกื•ืคืง ื‘ืชื—ื™ืœื”. ื”ืฉื™ืžื•ืฉ ื‘-rkyv ื”ืขืœื” ืžืฉืžืขื•ืชื™ืช ืืช ืžื”ื™ืจื•ืช ื”ื”ืคืขืœื”.
  • ื”ืžื”ื“ืจ Singlepass ืžืขื‘ืจ ื™ื—ื™ื“ ืฉื•ืคืจ, ื•ื”ื•ืกื™ืฃ ืชืžื™ื›ื” ื‘ืคื•ื ืงืฆื™ื•ืช ืžืจื•ื‘ื•ืช ืขืจื›ื™ื, ืืžื™ื ื•ืช ืžืฉื•ืคืจืช ื•ืชื•ืกืคืช ืชืžื™ื›ื” ื‘ืžืกื’ืจื•ืช ืœื˜ื™ืคื•ืœ ื‘ื—ืจื™ื’ื™ื.
  • ื”ื˜ืžืขื” ืžืฉื•ืคืจืช ืฉืœ ื”-API ืฉืœ WASI (WebAssembly System Interface). ื‘ืขื™ื•ืช ื‘ืžืžืฉืง ืชื•ื›ื ืช WASI ืœืขื‘ื•ื“ื” ืขื ืžืขืจื›ืช ื”ืงื‘ืฆื™ื ื ืคืชืจื•. ืกื•ื’ื™ื ืคื ื™ืžื™ื™ื ืขื•ืฆื‘ื• ืžื—ื“ืฉ ื‘ืืžืฆืขื•ืช WAI (ืžืžืฉืงื™ WebAssembly), ืืฉืจ ื™ืืคืฉืจื• ืฉื•ืจื” ืฉืœ ืชื›ื•ื ื•ืช ื—ื“ืฉื•ืช ื‘ืขืชื™ื“.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”