Mozillaá Fastlyá Intel ááŸáá·áº Red Hat
ááá±á¬ááºáá¬ááŒááºáááœáẠáá¯ááºáá±á¬ááºááá¯ááºáá±á¬ WebAssembly áá±á¬áºáááºááŒáá·áº áá±ážááá¯á·ááá¯ááºáá±á¬ áááºáá±á¬ááºáááœááºáá°áá±á¬ áááá¯ááááºáá»á¬ážááᯠáááºáá®ážááẠAPI ááᯠá¡áá¯á¶ážááŒá¯ááẠá¡ááŒá¶ááŒá¯á¡ááºáá«áááºá
ááá±á¬
á¡áá¬á¡ááœááºá¡ááœááºá ááŸá®ááá¯ááŸá¯ module áá áºáá¯á á®ááᯠáá®ážááŒá¬ážááœá²áá¯ááºáá¬ážáá±á¬ WebAssembly module áá áºáá¯á¡ááŒá Ạááœá²ááŒá¬ážáá¬ážááá·áºá¡ááœáẠnanoprocesses ááá±á¬ááá¬ážááᯠá¡áá¯á¶ážááŒá¯ááẠá¡ááá¯ááŒá¯áá¬ážááŒá®ážá áááºážá á áœááºážá¡á¬ážáá»á¬ážááẠဠmodule ááŸáá·áºáᬠáááºááá¯ááºááẠ(á¥ááá¬á ááá¯ááºážáá»á¬ážáá¯ááºáá±á¬ááºáááºá¡ááœáẠá á¬ááŒáá·áºááá¯ááºááŸááááºááá¯ááºáá«á ááœááºáááºáá±á«ááºáá±á«áẠááá¯á·ááá¯áẠááá¯ááºááᯠááœáá·áºááá¯ááºáááº)á áá¯ááºáááºážá ááºááᯠááœá²ááŒá¬ážááŒááºážááá°áá²á WebAssembly handlers áá»á¬ážááẠáá±á«á·áá«ážááŒá®áž á¡ááá¯á¡áááºážá¡ááŒá áºáá»á¬áž áá®ážáá«ážááá¯á¡ááºááẠ- handlers áá»á¬ážááŒá¬áž á¡ááŒááºá¡ááŸááºáááºááœááºááŸá¯ááẠáá¬áááºáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá±á«áºááŒááºážááẠáá»á¬ážá áœá¬ááŸá±ážááœá±ážáááºááá¯ááºáá«á áá®ážááŒá¬áž module áá»á¬ážá¡ááá·áºááœááºáá¬ááá á¥ááá¬á¡á¬ážááŒáá·áºá áá¯á¶ááŸááºáá¬ááºáá±áá¬áá»á¬ážááŸáá·áºá¡áá¯ááºáá¯ááºáááºááá¯á¡ááºááá·áº module áá»á¬ážáá¡á¯ááºá á¯á¡ááá·áºááœááºáááºáž ááœá²áá¯ááºááá¯ááºáááºá
áá±á¬ááºážááá¯áá¬ážáá±á¬ áá«áá«áá»á¬ážááᯠáááºážááá¯á·ááá¯ááºááá¯áẠááŸá®ááá¯ááŸá¯á¡ááá·áºááœáẠááŸá áºáááºá áá¯á¶áž áá¯á¶ážááŒááºááá¯ááºááŒá®ážá ááá áá±á¬áºáá»á°ážáá»á¬ážááŒáá·áº ááœááºážáááºáá áºáá»áŸá±á¬áẠááŸá®ááá¯ááŸá¯ááá¯á· ááœáŸá²á¡ááºááŒááºáž (WASI ááŸá á¡áááºážá¡ááŒá áºáá»á¬ážááẠá¡áá°ážááá¯ááºá¡áá»áá¯ážá¡á á¬ážáá±á¬áºááŒáá»áẠ- á áœááºážáááºááŸáá·áº áááºá ááºáá±áááº)á á¥ááá¬á¡á¬ážááŒáá·áºá áá±á¬áºáá»á°ážáá áºáá¯á¡á¬áž áááá»áá±á¬áááºážááœáŸááºáá»ááºáá áºáá¯ááŸáá·áº á áá áºáá±á«áºááá¯ááŸá¯áá»á¬ážááᯠááá°ááá¯ááºá áœááºážááᯠááœáŸá²á¡ááºáá¬ážááá¯ááºááŒá®áž áá±á¬áºáá»á°ážáááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠááááá¯ááºáá»ááºá á®ážá á±ááŒááºáž ááá¯á·ááá¯áẠá¡á¬ážáááºážáá»ááºáá áºáá¯á¡á¬áž áá±á¬áºáá¯ááºááœá±á·ááŸááá«áá ááá¯ááºááá¯ááºááŸá¯áá áºáá¯á¡ááœááºáž áááºáá±á¬ááºááœáá·áºááẠá€á¡áááºážá¡ááŒá áºáá»á¬ážá¡ááœááºáᬠááá·áºáááºáááºááŒá áºáááºá áááºáááºážá á¬áááºáá®ážáá°áá»á¬ážá០á¡áááºážá¡ááŒá áºááŒá±ááŒá¬áá»ááºáá»á¬ážááẠááœááºáááºáá»áááºáááºááŸá¯ááá¯ááœáá·áºááẠá á¬áá¬ážáá¯ááºáá±á¬ááºááŒááºáž module áá áºáá¯ááŸááœáá·áºááŒá¯áá»ááºáá±á¬ááºážáá¶ááá·áºá¡áá«áá²á·ááá¯á·áá±á¬ áá¶ááááŒá áºááœááºáá¯ááºáá±á¬ááºáá»ááºááᯠááœáŸááºááŒááá¯ááºáááºá áááŠážáááºááŸááºáá¬ážáá±á¬ ááœáá·áºááŒá¯áá»ááºáá»á¬ážááᯠá á áºáá±ážááŒá®áž áááºážááá¯á·ááŒá±á¬ááºážáá²áá«áá áá±áááá¯ááºáᬠáá±á¬áºáá»á°ážáááºááŸááºááᯠááœááºážáá¶ááœááºážáá¶áááºá¡áá ááŸá®ááá¯á¡á¬ážáá¬ážááŸá¯áááºááŒááºážááᯠáááºáá»áá«áááºá
Bytecode Alliance á áá±á¬ááºáá¶á¡á±á¬ááºááœáẠáá°ážááœá²ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á¡ááœááº
-
ááẠâ áá¯á¶ááŸáẠstand-alone á¡ááá®áá±ážááŸááºážáá»á¬ážá¡ááŒá ẠWASI ááá¯ážáá»á²á·ááŸá¯áá»á¬ážáá«ááŸááá±á¬ WebAssembly á¡ááá®áá±ážááŸááºážáá»á¬ážááᯠáá¯ááºáá±á¬ááºááẠá¡áá»áááºá áááºážááẠá¡áá°áž command line utility ááᯠá¡áá¯á¶ážááŒá¯á WebAssembly bytecode ááá¯ááœáá·áºááŒááºážááŸáá·áº á¡áááºááá·áºáá¯ááºááá¯ááºáá±á¬ executable ááá¯ááºáá»á¬ážááᯠáá»áááºáááºááŒááºáž (wasmtime ááᯠá á¬ááŒáá·áºááá¯ááºá¡ááŒá Ạá¡ááá®áá±ážááŸááºážááœáẠáááºáá±á¬ááºáá¬ážáááº)á Wasmtime ááœáẠá¡áá»áá¯ážáá»áá¯ážáá±á¬ á¡ááá®áá±ážááŸááºážáá»á¬ážá¡ááœáẠruntime ááᯠáá»áááºááŸáááá¯ááºá á±ááá·áº ááŒá±á¬ááºážááœááºááŒááºááœááºááŸááá±á¬ áá±á¬áºáá»á°áá¬ááœá²á·á ááºážáá¯á¶ áá«ááŸááááºá á¥ááá¬á áááºááẠá¡ááá·áºá¡áááºááŸááá±á¬ á¡áááºážá¡ááŒá áºáá»á¬ážááŸááá±á¬ á ááºáá»á¬ážá¡ááœáẠáá»áœááºáá»áá¬ážáá±á¬áá¬ážááŸááºážááᯠáááºáá®ážááá¯ááºáááºá -
Lucet - WebAssembly áá±á¬áºáááºááŒáá·áº áááá¯ááááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºáááºá¡ááœáẠcompiler ááŸáá·áº runtimeá áá°ážááŒá¬ážáá±á¬áá°ážááŒá¬ážáá»áẠLucet ááẠááá¯ááºááá¯ááºáá¯ááºáá±á¬ááºáááºá¡ááœáẠááá·áºáá»á±á¬áºáá±á¬ á ááºáá¯ááºááá¯á· JIT á¡á á¬áž ááŒáá·áºá á¯á¶áá±á¬áá»áŸá±á¬áºááá·áºáá¬ážáá±á¬á á¯á ááºážááŸá¯ (AOTá á¡áá»áááºáááá¯ááºáá®) ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááŒá áºáááºá ááá±á¬áá»ááºááᯠFastly á áááºáá®ážáá¬ážááŒá®áž á¡áááºážáááºáá»áŸáá±á¬ á¡áááºážá¡ááŒá áºáá»á¬ážááᯠá á¬ážáá¯á¶ážáááºááŸáá·áº áá¬ááá¡áá áºáá»á¬ážááᯠáá»ááºááŒááºá áœá¬á áááºááẠá¡áá±á¬ááºážáá¯á¶ážáá¯ááºáá±á¬ááºáá¬ážáá«ááẠ(áá±á¬ááºážááá¯áá»ááºáá áºáá¯á á®ááœáẠá áááºááá·áºááá¯ááºááœááºáá°áá»á¬ážá¡ááœáẠWebAssembly ááá¯á¡áá¯á¶ážááŒá¯ááá·áº cloud edge computing engine ááœáẠLucet ááᯠá¡ááŒááºá¡áá¯á¶ážááŒá¯áááº)á áá°ážááœá²ááá±á¬áá»ááºááá áºá áááºáá áºááá¯ááºážá¡áá±ááŒáá·áº Lucet compiler á¡á¬áž á¡ááŒá±áá¶á¡ááŒá ẠWasmtime ááá¯á¡áá¯á¶ážááŒá¯ááẠá¡ááœááºááŒá±á¬ááºážááẠá á®á ááºáá¬ážáá«áááºá -
WAM (WebAssembly Micro Runtime) ááẠInternet of Things á ááºáá»á¬ážááœáẠá¡áá¯á¶ážááŒá¯áááºá¡ááœáẠIntel á០áá®ááœááºáá¯ááºáá¯ááºáá¬ážááá·áº WebAssembly ááᯠáá¯ááºáá±á¬ááºáááºá¡ááœáẠá¡ááŒá¬ážáá±á¬ runtime ááŒá áºáááºá WAMR ááẠá¡áááºážá¡ááŒá áºáá¯á¶ážá áœá²ááŸá¯ á¡áááºážáá¯á¶ážá¡ááœáẠá¡áá±á¬ááºážáá¯á¶ážááŒá áºááŒá®áž RAM á¡áááºážáááºááŸááá±á¬ á ááºáá»á¬ážááœáẠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá ááá±á¬áá»ááºááœáẠWebAssembly bytecode ááá¯áá¯ááºáá±á¬ááºáááºá¡ááœáẠá áá¬ážááŒááºááŸáá·áº virtual machine áá áºáá¯á API (Libc á á¡á á¯ááœá²áá áºáá¯) ááŸáá·áº dynamic application management á¡ááœáẠáááááá¬áá»á¬áž áá«áááºáááºá -
áá±áá¶áá»á±á¬ááºáž â áá¬á·ááºáá²áááá¯áá¬áá»á¬ážá០á¡áááºá¡áááºááá¯ááºá á¬ážááŒá¯ááŸá¯ááᯠáá®ážááŒá¬ážáááºáá²ááºáááá¯áá¬áááºáá¬áá»á¬ážá០áá®ážááŒá¬ážáááºáá²ááááºáá±á¬ááºážáá»á¬ážá¡ááœáẠá¡áá±á¬ááºážáá¯á¶ážáá¯ááºáá±á¬ááºááá¯ááºáá±á¬ á ááºáá¯ááºá¡ááŒá Ạáá¬áá¬ááŒááºáá±ážááá·áº áá¯ááºáá®ážá ááºáá áºáá¯á Cranelift ááẠá¡ááœááºáá»ááºááŒááºáá±á¬ ááááºáá»áá¯ážáááºá¡ááœáẠáá¯ááºáá±á¬ááºáá»ááºá á¯á ááºážááŸá¯ááᯠáá¶á·ááá¯ážáá±ážáááºá áááºážááẠJIT compilers ááá¯áááºáá®ážááẠá¡áá¯á¶ážááŒá¯ááœáá·áºáá±ážááẠ(Cranelift-based JIT ááᯠWasmtime virtual machine ááœááºá¡áá¯á¶ážááŒá¯áááº); -
WASI á¡ááŒá áºáá»á¬ážáááºá â áááºáááºááŸá¯á áá áºááŸáá·áº á¡ááŒááºá¡ááŸááºáááºááœááºááŸá¯ááᯠá á¯á ááºážáááºá¡ááœáẠWASI (WebAssembly System Interface) API ááᯠáá®ážááŒá¬ážá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážá -
áá¯ááºáááº-áá«á á® â Browser á¡ááŒááºááẠWebAssembly ááá¯á¡áá¯á¶ážááŒá¯áááºá¡ááœáẠWASI á¡ááºáá¬áá±á·á áºááᯠá¡áá¯á¶ážááŒá¯á Rust áá¯ááºááᯠWebAssembly bytecode ááœáẠá á¯á ááºážáááºá¡ááœáẠááœááºáááºážáá áºáá¯á¡á¬áž Cargo package manager á¡ááœáẠmodule áá áºáá¯á -
Wat ОááŸáááºááŸááºážáá° â á á¬áá¬ážááœá²ááŒááºážá áááºááŒá¬ááẠá á®á á¥áºááŸá¯áá»á¬áž (WATá WAST) ááŸáá·áº WebAssembly bytecode á ááœáááá¯ááºá á¬ážááŒá¯ááŸá¯áá»á¬ážá
ááŒááºáá»á¯ááºááá»áŸáẠWebAssembly ááẠAsm.js ááŸáá·áº áá»á¬ážá
áœá¬áá°áá±á¬áºáááºážá
source: opennet.ru