ΠΡΡΡ Π»ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ Π²Π΅Π±-Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΡ ? ΠΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ WebAssembly Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°ΠΌΠΈ Cortex-M.
ΠΡΠΈΠΏΡΠΎΠ²Π°Π»ΡΡΠ° Parity ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ wasm Π΄Π»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ·ΡΠΊΠ° ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π², Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΡΠ»ΡΡΠ°Π».
Π― ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ wasm Π² ΡΠ²ΠΎΡ ΠΈΠ³ΡΡΡΠ΅ΡΠ½ΡΡ ΠΠ‘ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²; Ρ ΠΎΡΡ ΡΡΠΎ Π΄Π°Π»Π΅ΠΊΠΎΠ΅ Π±ΡΠ΄ΡΡΠ΅Π΅.
Π― Π½Π°ΡΠ΅Π» wac ΠΎΡ @kanaka , ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠΎΠΈΡΡ? ΠΠ΄Π½Π°ΠΊΠΎ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΠΊΠ°ΠΊΠΎΠ²Π° Π΄ΠΎΠ»Π³ΠΎΡΡΠΎΡΠ½Π°Ρ ΡΠ΅Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Node.js ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²Π°ΡΠΈΠΌ Π»ΡΡΡΠΈΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π±ΡΠ» ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ΅Π½ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΊΠ·ΠΎΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ ΠΈ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ΅Π½.
WebAssembly Π΄Π»Ρ .NET Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠΎΡΡΠΈ Π½Π° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ .NET Standard 1.4+, Π½ΠΎ Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΡΡΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Cortex-M.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π·Π³Π»ΡΠ½ΡΡΡ Π½Π° wasm-jit-prototype .
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΠΊΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°Π»ΠΎΠ½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ: https://github.com/WebAssembly/spec/tree/master/interpreter .
ΠΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ libwasm ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΡΡΠΎΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π² Π»ΡΠ±ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: https://github.com/JohnSully/libwasm .
ΠΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ WasmVM ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π»ΠΎΠ²ΡΡΠ΅ΠΊ... ΠΈ Ρ. Π΄.
https://github.com/LuisHsu/WasmVM