ืžื”ื“ื•ืจื” ืจืืฉื•ื ื” ืฉืœ wasm3, ืžืชื•ืจื’ืžืŸ ืžื”ื™ืจ ืฉืœ WebAssembly

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

Wasm3 ืขื•ื‘ืจ ื‘ื“ื™ืงื•ืช ืœื”ื™ื•ืช ืชื•ืื ืœืžืคืจื˜ WebAssembly 1.0 ื•ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื• ืœื”ืคืขืœืช ื™ื™ืฉื•ืžื™ WASI ืจื‘ื™ื, ื”ืžืกืคืงื™ื ื‘ื™ืฆื•ืขื™ื ื ืžื•ื›ื™ื ืคื™ 4-5 ื‘ืœื‘ื“ ืžืืฉืจ ืžื ื•ืขื™ JIT (ื”ืกืจื”, ื”ืจืžืช ืžื ื•ืฃ) ื•ื ืžื•ืš ืคื™ 11.5 ืžื‘ื™ืฆื•ืข ืงื•ื“ ืžืงื•ืจื™. ื‘ื”ืฉื•ื•ืื” ืœืžืคืจืฉื™ WebAssembly ืื—ืจื™ื (wac, ื—ื™ื™ื, wasm-micro-runtime), wasm3 ื”ื™ื” ืžื”ื™ืจ ืคื™ 15.8.

Wasm3 ื“ื•ืจืฉ 64Kb ืฉืœ ื–ื™ื›ืจื•ืŸ ืขื‘ื•ืจ ืงื•ื“ ื•-10Kb ืฉืœ ื–ื™ื›ืจื•ืŸ RAM, ืžื” ืฉืžืืคืฉืจ ืœืš ืœื”ืฉืชืžืฉ ื‘ืคืจื•ื™ืงื˜ ื›ื“ื™ ืœื”ืคืขื™ืœ ื™ื™ืฉื•ืžื™ื ื”ื™ื“ื•ืจ ื‘- WebAssembly ื‘- ืžื™ืงืจื•-ื‘ืงืจื™ื, ื›ื’ื•ืŸ Arduino MKR*, Arduino Due, Particle Photon, ESP8266, ESP32, Air602 (W600), nRF52, nRF51 Blue Pill (STM32F103C8T6), MXChip AZ3166 (EMW3166),
Maix (K210), HiFive1 (E310), Fomu (ICE40UP5K) ื•-ATmega1284, ื›ืžื• ื’ื ืœื•ื—ื•ืช ื•ืžื—ืฉื‘ื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื•ืช x86, x64, ARM, MIPS, RISC-V ื•-Xtensa. ืžืขืจื›ื•ืช ื”ื”ืคืขืœื” ื”ื ืชืžื›ื•ืช ื”ืŸ Linux (ื›ื•ืœืœ ื ืชื‘ื™ื ืžื‘ื•ืกืกื™ OpenWRT), Windows, macOS, Android ื•-iOS. ืืคืฉืจ ื’ื ืœื”ื“ืจ ืืช wasm3 ืœืงื•ื“ ื‘ื™ื ื™ื™ื ืฉืœ WebAssembly ื›ื“ื™ ืœื”ืคืขื™ืœ ืืช ื”ืžืชื•ืจื’ืžืŸ ื‘ื“ืคื“ืคืŸ ืื• ืœื”ืคืขืœื” ืžืงื•ื ื ืช (ืื™ืจื•ื— ืขืฆืžื™).

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

ื‘ื ื•ืกืฃ, ื ื™ืชืŸ ืœืฆื™ื™ืŸ ืชื•ืฆืื•ืช ืžื—ืงืจ ื“ื™ืคื•ื–ื™ื”
WebAssembly ืœืจืฉืช. ืœืื—ืจ ื ื™ืชื•ื— ืฉืœ 948 ืืœืฃ ืžื”ืืชืจื™ื ื”ืคื•ืคื•ืœืจื™ื™ื ื‘ื™ื•ืชืจ ืขืœ ืคื™ ื“ื™ืจื•ื’ Alexa, ื’ื™ืœื• ื”ื—ื•ืงืจื™ื ื›ื™ ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘-WebAssembly ื‘-1639 ืืชืจื™ื (0.17%), ื›ืœื•ืžืจ. ื‘-1 ืžื›ืœ 600 ืืชืจื™ื. ื‘ืกืš ื”ื›ืœ, ืื•ืชืจื• ื‘ืืชืจื™ื 1950 ืžื•ื“ื•ืœื™ WebAssembly, ืžืชื•ื›ื 150 ื™ื™ื—ื•ื“ื™ื™ื. ื›ืืฉืจ ื‘ื•ื—ื ื™ื ืืช ื”ื™ืงืฃ ื”-WebAssembly, ื”ื•ืกืงื• ืžืกืงื ื•ืช ืžืื›ื–ื‘ื•ืช - ื‘ื™ื•ืชืจ ืž-50% ืžื”ืžืงืจื™ื, WebAssembly ืฉื™ืžืฉ ืœืžื˜ืจื•ืช ื–ื“ื•ื ื™ื•ืช, ืœืžืฉืœ, ืœื›ืจื™ื™ืช ืžื˜ื‘ืขื•ืช ืงืจื™ืคื˜ื•ื’ืจืคื™ื™ื (55.7%) ื•ื”ืกืชืจืช ื”ืงื•ื“ ืฉืœ ืกืงืจื™ืคื˜ื™ื ื–ื“ื•ื ื™ื™ื (0.2%). ืฉื™ืžื•ืฉื™ื ืœื’ื™ื˜ื™ืžื™ื™ื ื‘-WebAssembly ื›ื•ืœืœื™ื ื”ืคืขืœืช ืกืคืจื™ื•ืช (38.8%), ื™ืฆื™ืจืช ืžืฉื—ืงื™ื (3.5%) ื•ื‘ื™ืฆื•ืข ืงื•ื“ ืžืงื•ืจื™ ืฉืื™ื ื• JavaScript (0.9%). ื‘-14.9% ืžื”ืžืงืจื™ื ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘-WebAssembly ืœื ื™ืชื•ื— ื”ืกื‘ื™ื‘ื” ืœืฆื•ืจืš ื–ื™ื”ื•ื™ ืžืฉืชืžืฉ (ื˜ื‘ื™ืขืช ืืฆื‘ืข).

ืžื”ื“ื•ืจื” ืจืืฉื•ื ื” ืฉืœ wasm3, ืžืชื•ืจื’ืžืŸ ืžื”ื™ืจ ืฉืœ WebAssembly

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

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