Mozilla, Fastly, Intel ื•-Red Hat ืžืงื“ืžื•ืช ืืช WebAssembly ื›ืคืœื˜ืคื•ืจืžื” ืœืฉื™ืžื•ืฉ ืื•ื ื™ื‘ืจืกืœื™

Mozilla, Fastly, Intel ื•-Red Hat ืžืื•ื—ื“ ืžืืžืฆื™ื” ื‘ืคื™ืชื•ื— ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ืฉืขื•ื–ืจื•ืช ืœื”ืคื•ืš ืืช WebAssembly ืœืคืœื˜ืคื•ืจืžื” ืื•ื ื™ื‘ืจืกืœื™ืช ืœื‘ื™ืฆื•ืข ืงื•ื“ ืžืื•ื‘ื˜ื— ื‘ื›ืœ ืชืฉืชื™ืช, ืžืขืจื›ืช ื”ืคืขืœื” ืื• ืžื›ืฉื™ืจ. ื”ื•ืงืžื” ืงื”ื™ืœื” ืœืคื™ืชื•ื— ืžืฉื•ืชืฃ ืฉืœ ื–ืžืŸ ืจื™ืฆื” ื•ืžื”ื“ืจื™ื ื”ืžืืคืฉืจื™ื ืฉื™ืžื•ืฉ ื‘-WebAssembly ืœื ืจืง ื‘ื“ืคื“ืคื ื™ ืื™ื ื˜ืจื ื˜ Bytecode Alliance.

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

ืื—ื“ ืž ืžื˜ืจื•ืช ื”ื‘ืจื™ืช ืฉื ื•ืฆืจื” ื”ื™ื ืคืชืจื•ืŸ ืœื‘ืขื™ื™ืช ื”ืคืฆืช ื™ื™ืฉื•ืžื™ื ืžื•ื“ื•ืœืจื™ื™ื ืžื•ื“ืจื ื™ื™ื ืขื ืžืกืคืจ ืจื‘ ืฉืœ ืชืœื•ืช. ื‘ื™ื™ืฉื•ืžื™ื ื›ืืœื”, ื›ืœ ืชืœื•ืช ื™ื›ื•ืœื” ืœื”ื™ื•ืช ืžืงื•ืจ ืคื•ื˜ื ืฆื™ืืœื™ ืœืคืจืฆื•ืช ืื• ื”ืชืงืคื•ืช. ื”ืฉืชืœื˜ื•ืช ืขืœ ืชืœื•ืช ืžืืคืฉืจืช ืœืš ืœืงื‘ืœ ืฉืœื™ื˜ื” ืขืœ ื›ืœ ื”ื™ื™ืฉื•ืžื™ื ื”ืงืฉื•ืจื™ื ืืœื™ื•. ืืžื•ืŸ ื‘ืืคืœื™ืงืฆื™ื” ืžืจืžื– ืื•ื˜ื•ืžื˜ื™ืช ืขืœ ืืžื•ืŸ ื‘ื›ืœ ื”ืชืœื•ืช, ืืš ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื”ืชืœื•ืช ืžืคื•ืชื—ื•ืช ื•ืžืชื•ื—ื–ืงื•ืช ืขืœ ื™ื“ื™ ืฆื•ื•ืชื™ ืฆื“ ืฉืœื™ืฉื™ ืฉืœื ื ื™ืชืŸ ืœืฉืœื•ื˜ ื‘ืคืขื™ืœื•ืชื. ื—ื‘ืจื™ Bytecode Alliance ืžืชื›ื•ื•ื ื™ื ืœืกืคืง ืคืชืจื•ืŸ ื”ื•ืœื™ืกื˜ื™ ืœื‘ื™ืฆื•ืข ืžืื•ื‘ื˜ื— ืฉืœ ื™ื™ืฉื•ืžื™ WebAssembly ืฉืื™ื ื ืืžื™ื ื™ื ืžื˜ื‘ืขื.

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

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

ืœืคื™ืชื•ื— ืžืฉื•ืชืฃ ืชื—ืช ื”ื›ื ืฃ ืฉืœ ื‘ืจื™ืช Bytecode ืžึฐืชื•ึผืจื’ึธื ื›ืžื” ื”ืงืฉื•ืจื™ื ืœ-WebAssembly ืคืจื•ื™ืงื˜ื™ื, ืฉืคื•ืชื— ื‘ืขื‘ืจ ื‘ื ืคืจื“ ืขืœ ื™ื“ื™ ื”ื—ื‘ืจื•ืช ื”ืžื™ื™ืกื“ื•ืช ืฉืœ ื”ื‘ืจื™ืช:

  • ื•ื•ืกื˜ื™ื™ื - ื–ืžืŸ ืจื™ืฆื” ืœื”ืคืขืœืช ื™ื™ืฉื•ืžื™ WebAssembly ืขื ื”ืจื—ื‘ื•ืช WASI ื›ื™ื™ืฉื•ืžื™ื ืขืฆืžืื™ื™ื ืจื’ื™ืœื™ื. ื”ื•ื ืชื•ืžืš ื”ืŸ ื‘ื”ืฉืงืช WebAssembly bytecode ื‘ืืžืฆืขื•ืช ื›ืœื™ ืขื–ืจ ืžื™ื•ื—ื“ ืฉืœ ืฉื•ืจืช ืคืงื•ื“ื” ื•ื”ืŸ ื‘ืงื™ืฉื•ืจ ืงื‘ืฆื™ ื”ืคืขืœื” ืžื•ื›ื ื™ื (wasmtime ืžื•ื‘ื ื” ื‘ื™ื™ืฉื•ื ื›ืกืคืจื™ื™ื”). ืœ- Wasmtime ืžื‘ื ื” ืžื•ื“ื•ืœืจื™ ื’ืžื™ืฉ ื”ืžืืคืฉืจ ืœื”ืชืื™ื ืืช ื–ืžืŸ ื”ืจื™ืฆื” ืขื‘ื•ืจ ืืคืœื™ืงืฆื™ื•ืช ืฉื•ื ื•ืช, ืœืžืฉืœ, ื ื™ืชืŸ ืœื™ืฆื•ืจ ื’ืจืกื” ืžื•ืคืฉื˜ืช ืœืžื›ืฉื™ืจื™ื ื‘ืขืœื™ ืžืฉืื‘ื™ื ืžื•ื’ื‘ืœื™ื;
  • Lucet - ืžื”ื“ืจ ื•ื–ืžืŸ ืจื™ืฆื” ืœื”ืคืขืœืช ืชื•ื›ื ื™ื•ืช ื‘ืคื•ืจืžื˜ WebAssembly. ืžึฐื™ื•ึผื—ึธื“ ืชื›ื•ื ื” Lucet ื”ื•ื ืฉื™ืžื•ืฉ ื‘ื”ื™ื“ื•ืจ ืžืœื ืžืจืืฉ (AOT, ืœืคื ื™ ื”ื–ืžืŸ) ื‘ืžืงื•ื JIT ืœืชื•ืš ืงื•ื“ ืžื›ื•ื ื” ื”ืžืชืื™ื ืœื‘ื™ืฆื•ืข ื™ืฉื™ืจ. ื”ืคืจื•ื™ืงื˜ ืคื•ืชื— ืขืœ ื™ื“ื™ Fastly ื•ื”ื•ื ืžื•ืชืื ืœืฆืจื•ืš ืžืฉืื‘ื™ื ืžื™ื ื™ืžืœื™ื™ื ื•ืœื”ืฉืงืช ืžื•ืคืขื™ื ื—ื“ืฉื™ื ืžื”ืจ ืžืื•ื“ (Fastly ืžืฉืชืžืฉ ื‘-Lucet ื‘ืžื ื•ืข ืžื—ืฉื•ื‘ ืงืฆื” ื‘ืขื ืŸ ื”ืžืฉืชืžืฉ ื‘-WebAssembly ืขื‘ื•ืจ ืžื˜ืคืœื™ื ืฉื”ื•ืฉืงื• ื‘ื›ืœ ื‘ืงืฉื”). ื›ื—ืœืง ืžื”ืคืจื•ื™ืงื˜ ื”ืžืฉื•ืชืฃ, ืžื”ื“ืจ Lucet ืžืชื•ื›ื ืŸ ืœืขื‘ื•ืจ ื”ืกื‘ื” ืœืฉื™ืžื•ืฉ ื‘- Wasmtime ื›ื‘ืกื™ืก;
  • WAMR (WebAssembly Micro Runtime) ื”ื•ื ื–ืžืŸ ืจื™ืฆื” ื ื•ืกืฃ ืœื‘ื™ืฆื•ืข WebAssembly, ืฉืคื•ืชื— ื‘ืžืงื•ืจ ืขืœ ื™ื“ื™ ืื™ื ื˜ืœ ืœืฉื™ืžื•ืฉ ื‘ืžื›ืฉื™ืจื™ Internet of Things. WAMR ืžื•ืชืื ืœืฆืจื™ื›ืช ืžืฉืื‘ื™ื ืžื™ื ื™ืžืœื™ืช ื•ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื” ื‘ืžื›ืฉื™ืจื™ื ืขื ื›ืžื•ืช ืงื˜ื ื” ืฉืœ ื–ื™ื›ืจื•ืŸ RAM. ื”ืคืจื•ื™ืงื˜ ื›ื•ืœืœ ืžืชื•ืจื’ืžืŸ ื•ืžื›ื•ื ื” ื•ื™ืจื˜ื•ืืœื™ืช ืœื‘ื™ืฆื•ืข WebAssembly bytecode, API (ืชืช-ืงื‘ื•ืฆื” ืฉืœ Libc) ื•ื›ืœื™ื ืœื ื™ื”ื•ืœ ื™ื™ืฉื•ืžื™ื ื“ื™ื ืžื™ื™ื;
  • ืžื ื•ืฃ ืžื ื•ืฃ - ืžื—ื•ืœืœ ืงื•ื“ ืฉืžืชืจื’ื ื™ื™ืฆื•ื’ ื‘ื™ื ื™ื™ื ื‘ืœืชื™ ืชืœื•ื™ ื‘ืืจื›ื™ื˜ืงื˜ื•ืจื•ืช ื—ื•ืžืจื” ืœืงื•ื“ ืžื›ื•ื ื” ื‘ืจ ื”ืคืขืœื” ื”ืžื•ืชืื ืœืคืœื˜ืคื•ืจืžื•ืช ื—ื•ืžืจื” ืกืคืฆื™ืคื™ื•ืช. Cranelift ืชื•ืžืš ื‘ื”ืงื‘ืœื” ืฉืœ ืงื•ืžืคื™ืœืฆื™ื” ืฉืœ ืคื•ื ืงืฆื™ื•ืช ืœื™ืฆื™ืจืช ืชื•ืฆืื•ืช ืžื”ื™ืจื” ืžืื•ื“, ืžื” ืฉืžืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ื• ืœื™ืฆื™ืจืช ืžื”ื“ืจื™ื ืฉืœ JIT (JIT ืžื‘ื•ืกืก Cranelift ืžืฉืžืฉ ื‘ืžื›ื•ื ื” ื”ื•ื™ืจื˜ื•ืืœื™ืช Wasmtime);
  • WASI ื ืคื•ืฅ - ื™ื™ืฉื•ื ื ืคืจื“ ืฉืœ ืžืžืฉืง ื”-API ืฉืœ WASI (WebAssembly System Interface) ืœืืจื’ื•ืŸ ืื™ื ื˜ืจืืงืฆื™ื” ืขื ืžืขืจื›ืช ื”ื”ืคืขืœื”;
  • cargo-wasi - ืžื•ื“ื•ืœ ืœืžื ื”ืœ ื”ื—ื‘ื™ืœื•ืช Cargo ื”ืžื™ื™ืฉื ืคืงื•ื“ื” ืœื”ื™ื“ื•ืจ ืงื•ื“ Rust ืœืชื•ืš WebAssembly bytecode ื‘ืืžืฆืขื•ืช ืžืžืฉืง WASI ืœืฉื™ืžื•ืฉ ื‘-WebAssembly ืžื—ื•ืฅ ืœื“ืคื“ืคืŸ;
  • ื•ืื˜ ะธ wasmparser - ืžื ืชื—ื™ื ืœื ื™ืชื•ื— ื˜ืงืกื˜ (WAT, WAST) ื•ื™ื™ืฆื•ื’ื™ื ื‘ื™ื ืืจื™ื™ื ืฉืœ WebAssembly bytecode.

ืœืกื™ื›ื•ื, WebAssembly ื“ื•ืžื” ืžืื•ื“ ืœ-Asm.js, ืื‘ืœ ืื—ืจ ื‘ื›ืš ืฉืžื“ื•ื‘ืจ ื‘ืคื•ืจืžื˜ ื‘ื™ื ืืจื™ ืฉืื™ื ื• ืงืฉื•ืจ ืœ-JavaScript ื•ืžืืคืฉืจ ืœื”ืคืขื™ืœ ื‘ื“ืคื“ืคืŸ ืงื•ื“ ื‘ื™ื ื™ื™ื ื‘ืจืžื” ื ืžื•ื›ื” ืฉื”ื•ื™ื“ื•ืจ ืžืฉืคื•ืช ืชื›ื ื•ืช ืฉื•ื ื•ืช. WebAssembly ืื™ื ื• ื“ื•ืจืฉ ืื•ืกืฃ ืืฉืคื” ืžื›ื™ื•ื•ืŸ ืฉื”ื•ื ืžืฉืชืžืฉ ื‘ื ื™ื”ื•ืœ ื–ื™ื›ืจื•ืŸ ืžืคื•ืจืฉ. ื‘ืืžืฆืขื•ืช JIT ืขื‘ื•ืจ WebAssembly, ืืชื” ื™ื›ื•ืœ ืœื”ืฉื™ื’ ืจืžื•ืช ื‘ื™ืฆื•ืขื™ื ืงืจื•ื‘ื•ืช ืœืงื•ื“ ืžืงื•ืจื™. ื‘ื™ืŸ ื”ืžื˜ืจื•ืช ื”ืขื™ืงืจื™ื•ืช ืฉืœ WebAssembly ื”ื™ื ื”ื‘ื˜ื—ืช ื ื™ื™ื“ื•ืช, ื”ืชื ื”ื’ื•ืช ืฆืคื•ื™ื” ื•ื‘ื™ืฆื•ืข ืงื•ื“ ื–ื”ื” ื‘ืคืœื˜ืคื•ืจืžื•ืช ืฉื•ื ื•ืช.

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

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