wasm3 рдЪреЗ рдкрд╣рд┐рд▓реЗ рдкреНрд░рдХрд╛рд╢рди, рдПрдХ рд╡реЗрдЧрд╡рд╛рди WebAssembly рджреБрднрд╛рд╖реА

рдЙрдкрд▓рдмреНрдз рдкрд╣рд┐рд▓реА рдЖрд╡реГрддреНрддреА wasm3, рдПрдХ рдЕрддрд┐рд╢рдп рд╡реЗрдЧрд╡рд╛рди WebAssembly рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдХреЛрдб рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯрд░ рдкреНрд░рд╛рдореБрдЦреНрдпрд╛рдиреЗ рдорд╛рдпрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдЖрдгрд┐ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░ рд╡реЗрдмрдЕрд╕реЗрдВрдмрд▓реА рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╣реЗ рдЬреНрдпрд╛рдд WebAssembly рд╕рд╛рдареА JIT рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдирд╛рд╣реА, JIT рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдкреБрд░реЗрд╢реА рдореЗрдорд░реА рдирд╛рд╣реА, рдХрд┐рдВрд╡рд╛ JIT рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдореЗрдорд░реА рдкреГрд╖реНрдареЗ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реАрдд. . рдкреНрд░рдХрд▓реНрдк рдХреЛрдб C рдЖрдгрд┐ рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓рд╛ рдЖрд╣реЗ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рддрд░рд┐рдд MIT рдкрд░рд╡рд╛рдиреНрдпрд╛ рдЕрдВрддрд░реНрдЧрдд.

Wasm3 рдкрд╛рд╕ рдЪрд╛рдЪрдгреНрдпрд╛ WebAssembly 1.0 рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирд╢реА рд╕реБрд╕рдВрдЧрдд рдЖрдгрд┐ рдЕрдиреЗрдХ WASI рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ, рдЬреЗрдЖрдпрдЯреА рдЗрдВрдЬрд┐рдирдкреЗрдХреНрд╖рд╛ рдХреЗрд╡рд│ 4-5 рдкрдЯ рдХрдореА рдХрд╛рдордЧрд┐рд░реА рдкреНрд░рджрд╛рди рдХрд░рддреЗ (рдмрдВрдж рд▓рд┐рдлреНрдЯ, рдХреНрд░реЗрдирд▓рд┐рдлреНрдЯ) рдЖрдгрд┐ рдореВрд│ рдХреЛрдб рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдкреЗрдХреНрд╖рд╛ 11.5 рдкрдЯ рдХрдореА. рдЗрддрд░ WebAssembly рджреБрднрд╛рд╖реНрдпрд╛рдВрд╢реА рддреБрд▓рдирд╛ рдХрд░рддрд╛рдирд╛ (рд╡реЕрдХ, рдЬреАрд╡рди, wasm-рдорд╛рдпрдХреНрд░реЛ-рд░рдирдЯрд╛рдЗрдо), wasm3 15.8 рдкрдЯ рд╡реЗрдЧрд╡рд╛рди рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рджрд┐рд╕реВрди рдЖрд▓реЗ.

wasm3 рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ 64Kb рдХреЛрдб рдореЗрдорд░реА рдЖрдгрд┐ 10Kb RAM рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╡реЗрдмрдЕрд╕реЗрдВрдмрд▓реАрдордзреНрдпреЗ рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реЗрд▓реЗ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ. рдорд╛рдпрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░, рдЬрд╕реЗ рдХреА Arduino MKR*, Arduino Due, Particle Photon, ESP8266, ESP32, Air602 (W600), nRF52, nRF51 рдмреНрд▓реВ рдкрд┐рд▓ (STM32F103C8T6), MXChip AZ3166 (EMW3166),
Maix (K210), HiFive1 (E310), Fomu (ICE40UP5K) рдЖрдгрд┐ ATmega1284, рддрд╕реЗрдЪ x86, x64, ARM, MIPS, RISC-V рдЖрдгрд┐ Xtensa рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдмреЛрд░реНрдб рдЖрдгрд┐ рд╕рдВрдЧрдгрдХрд╛рдВрд╡рд░. рд╕рдорд░реНрдерд┐рдд рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рд▓рд┐рдирдХреНрд╕ (рдУрдкрдирдбрдмреНрд▓реНрдпреВрдЖрд░рдЯреАрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рд░рд╛рдЙрдЯрд░рд╕рд╣), рд╡рд┐рдВрдбреЛрдЬ, рдореЕрдХрдУрдПрд╕, рдЕрдБрдбреНрд░реЙрдЗрдб рдЖрдгрд┐ рдЖрдпрдУрдПрд╕рдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ. рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯрд░ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдХрд┐рдВрд╡рд╛ рдиреЗрд╕реНрдЯреЗрдб рдПрдХреНрдЭрд┐рдХреНрдпреВрд╢рди (рд╕реЗрд▓реНрдл-рд╣реЛрд╕реНрдЯрд┐рдВрдЧ) рд╕рд╛рдареА рд╡реЗрдмрдЕрд╕реЗрдВрдмрд▓реА рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдХреЛрдбрдордзреНрдпреЗ wasm3 рд╕рдВрдХрд▓рд┐рдд рдХрд░рдгреЗ рджреЗрдЦреАрд▓ рд╢рдХреНрдп рдЖрд╣реЗ.

рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯрд░рдордзреНрдпреЗ рддрдВрддреНрд░рдЬреНрдЮрд╛рдирд╛рдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рджреНрд╡рд╛рд░реЗ рдЙрдЪреНрдЪ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рд╛рдкреНрдд рдХреЗрд▓реА рдЬрд╛рддреЗ рдореЕрд╕реА рдореЗрдЯрд╛ рдорд╢реАрди (M3), рдЬреЗ рдмрд╛рдЗрдЯрдХреЛрдб рдбреАрдХреЛрдбрд┐рдВрдЧ рдУрд╡реНрд╣рд░рд╣реЗрдб рдХрдореА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдо рд╕реНрдпреВрдбреЛ-рдорд╢реАрди рдХреЛрдб-рдЬрдирд░реЗрдЯрд┐рдВрдЧ рдСрдкрд░реЗрд╢рдиреНрд╕рдордзреНрдпреЗ рдмрд╛рдЗрдЯрдХреЛрдбрдЪреЗ рдлреЙрд░рд╡рд░реНрдб-рдЕрдиреБрд╡рд╛рдж рдХрд░рддреЗ рдЖрдгрд┐ рд╕реНрдЯреЕрдХ-рдЖрдзрд╛рд░рд┐рдд рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрди рдПрдХреНрдЭрд┐рдХреНрдпреВрд╢рди рдореЙрдбреЗрд▓рд▓рд╛ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдо рд░рдЬрд┐рд╕реНрдЯрд░-рдЖрдзрд╛рд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдирд╛рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ. M3 рдордзреАрд▓ рдСрдкрд░реЗрд╢рдиреНрд╕ рд╣реА C рдлрдВрдХреНрд╢рдиреНрд╕ рдЖрд╣реЗрдд рдЬреНрдпрд╛рдВрдЪреЗ рд╡рд┐рддрд░реНрдХ рдЖрднрд╛рд╕реА рдорд╢реАрди рд░рдЬрд┐рд╕реНрдЯрд░реНрд╕ рдЖрд╣реЗрдд рдЬреЗ CPU рд░рдЬрд┐рд╕реНрдЯрд░реНрд╕рдордзреНрдпреЗ рдореЕрдк рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд. рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рдСрдкрд░реЗрд╢рдиреНрд╕рдЪреЗ рд╡рд╛рд░рдВрд╡рд╛рд░ рд╣реЛрдгрд╛рд░реЗ рдЕрдиреБрдХреНрд░рдо рд╕рд╛рд░рд╛рдВрд╢ рдСрдкрд░реЗрд╢рдирдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд.

рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдШреЗрддрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рд╕рдВрд╢реЛрдзрди рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╕рд╛рд░
рд╡реЗрдмрд╡рд░ WebAssembly. рдЕрд▓реЗрдХреНрд╕рд╛ рд░реЗрдЯрд┐рдВрдЧрдиреБрд╕рд╛рд░ 948 рд╣рдЬрд╛рд░ рд╕рд░реНрд╡рд╛рдзрд┐рдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рд╛рдЗрдЯреНрд╕рдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рд╕рдВрд╢реЛрдзрдХрд╛рдВрдирд╛ рдЕрд╕реЗ рдЖрдврд│рд▓реЗ рдХреА WebAssembly 1639 рд╕рд╛рдЗрдЯреНрд╕рд╡рд░ (0.17%) рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддреЗ, рдореНрд╣рдгрдЬреЗ. рдкреНрд░рддреНрдпреЗрдХ 1 рдкреИрдХреА 600 рд╕рд╛рдЗрдЯрд╡рд░. рдПрдХреВрдг, 1950 рд╡реЗрдмрдЕрд╕реЗрдВрдмрд▓реА рдореЙрдбреНрдпреВрд▓ рд╕рд╛рдЗрдЯреНрд╕рд╡рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реЗ рдЧреЗрд▓реЗ, рддреНрдпрд╛рдкреИрдХреА 150 рдЕрджреНрд╡рд┐рддреАрдп рд╣реЛрддреЗ. WebAssembly рдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рдЪреНрдпрд╛ рд╡реНрдпрд╛рдкреНрддреАрдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛рдирд╛, рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХрд╛рдврдгреНрдпрд╛рдд рдЖрд▓реЗ - 50% рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ, WebAssembly рдЪрд╛ рд╡рд╛рдкрд░ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╣реЗрддреВрдВрд╕рд╛рдареА рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдХреНрд░рд┐рдкреНрдЯреЛрдХрд░рдиреНрд╕реА (55.7%) рдЦрд╛рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╕реНрдХреНрд░рд┐рдкреНрдЯрдЪрд╛ рдХреЛрдб рд▓рдкрд╡рдгреНрдпрд╛рд╕рд╛рдареА (0.2%) . WebAssembly рдЪреНрдпрд╛ рдХрд╛рдпрджреЗрд╢реАрд░ рд╡рд╛рдкрд░рд╛рдВрдордзреНрдпреЗ рд▓рд╛рдпрдмреНрд░рд░реА рдЪрд╛рд▓рд╡рдгреЗ (38.8%), рдЧреЗрдо рддрдпрд╛рд░ рдХрд░рдгреЗ (3.5%) рдЖрдгрд┐ рд╕рд╛рдиреБрдХреВрд▓ рдиреЙрди-JavaScript рдХреЛрдб (0.9%) рдпрд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рд╣реЛрддреЛ. 14.9% рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ, WebAssembly рдЪрд╛ рд╡рд╛рдкрд░ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рдУрд│рдЦреАрд╕рд╛рдареА (рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯрд┐рдВрдЧ) рдкрд░реНрдпрд╛рд╡рд░рдгрд╛рдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛.

wasm3 рдЪреЗ рдкрд╣рд┐рд▓реЗ рдкреНрд░рдХрд╛рд╢рди, рдПрдХ рд╡реЗрдЧрд╡рд╛рди WebAssembly рджреБрднрд╛рд╖реА

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛