ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΡΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° WASM Π² ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Javascript?
Π ΡΠ²ΡΠ·ΠΈ Ρ ΡΡΠΈΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Javascript Π²ΡΠ·Π²Π°Π»Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅? Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΎΡΠΊΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠ΅ΠΊΡΡΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΊΡΡΠΈ, ΡΡΠ΅ΠΊ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΈ Ρ. Π.
Π― ΠΏΡΡΠ°ΡΡΡ Π²ΡΡΡΠ½ΠΈΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ WASM ΠΎΡΡΠΎΠ³ΠΎΠ½Π°Π»ΡΠ½ΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠΌΠΈ, ΠΏΡΠΈΡΠ΅ΠΌ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ, Π½ΠΎ ΠΈ Π²Π½ΡΡΡΠΈ Π²ΡΠ·ΠΎΠ²ΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π΄Π° Ρ Π½ΠΈΡ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ ΡΠ΅ΡΡΡΡΡ, ΡΠΌ. Https://github.com/ewasm/wasm -ΠΈΠ·ΠΌΠ΅ΡΠΈΡΠ΅Π»Ρ).
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΡΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° WASM Π² ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Javascript?
ΠΠ°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, Π΅ΡΠ»ΠΈ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΡΠ΅ Π΅Π΅ ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ WebAssembly.Memory
, Π° Π΅Π³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ buffer
- ΡΡΠΎ ArrayBuffer
Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ.
Π ΡΠ²ΡΠ·ΠΈ Ρ ΡΡΠΈΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Javascript Π²ΡΠ·Π²Π°Π»Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅?
ΠΠ΅Ρ, Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π‘ΡΠ΅ΠΊ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ» ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠΠ΅ΡΠΎΡΡΠ½ΠΎ, Π·Π΄Π΅ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ, ΠΎΠ±ΡΡΠΆΠ΄Π°Π΅ΠΌΡΡ Π² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ .
ΠΡΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π² Π±ΡΡΠ΅ΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ? Π― Π½Π΅ Π²ΠΈΠ΄Π΅Π» ΡΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΡ ΠΎΠ± ΡΡΠΎΠΌ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
Π’Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΠ΅ΠΊΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π²Π½ΡΡΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ javascript Π±Π΅Π· ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ WASM.
Π£ ΠΌΠΎΠ΄ΡΠ»Ρ WebAssembly Π½Π΅Ρ ΠΊΡΡΠΈ, Ρ Π½Π΅Π³ΠΎ ΠΏΡΠΎΡΡΠΎ Π΅ΡΡΡ ΠΏΠ°ΠΌΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΠ»ΠΎΡΠΊΠΈΠΉ Π²Π΅ΠΊΡΠΎΡ Π±Π°ΠΉΡΠΎΠ². ΠΠΎΠ³Π΄Π° ΡΠ°ΠΊΠΎΠΉ ΡΠ·ΡΠΊ, ΠΊΠ°ΠΊ C ++, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² WebAssembly, ΠΊΡΡΠ° ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ, ΠΊΠ°ΠΊ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅.
ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΡΠ΅ΠΊ Π²ΡΠ·ΠΎΠ²ΠΎΠ² WebAssembly (ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΠ΅ΠΊ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅) Π½Π΅ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½. ΠΠΎ ΠΊΠΎΠ³Π΄Π° ΡΠ°ΠΊΠΎΠΉ ΡΠ·ΡΠΊ, ΠΊΠ°ΠΊ C ++, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² WebAssembly, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΡΠ΅ΠΊΠ° C ++ ΠΌΠΎΠ³ΡΡ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ C ++ Ρ Π°Π΄ΡΠ΅ΡΠΎΠΌ ΠΈ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ.
ΠΡ , ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΡΠ°ΠΊ Π²ΠΎΡ Π΄Π»Ρ ΡΠ΅Π³ΠΎ Π½ΡΠΆΠ½Π° __heap_base!
Instance {
exports:
{ memory: Memory {},
__heap_base: 66560,
__data_end: 1024,
main: [Function: 2],
fac: [Function: 3] }
}
ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠ΅Π±Π΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ!
WebAssembly.Memory - ΡΡΠΎ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΠΊΡΡΠ°
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π£ ΠΌΠΎΠ΄ΡΠ»Ρ WebAssembly Π½Π΅Ρ ΠΊΡΡΠΈ, Ρ Π½Π΅Π³ΠΎ ΠΏΡΠΎΡΡΠΎ Π΅ΡΡΡ ΠΏΠ°ΠΌΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΠ»ΠΎΡΠΊΠΈΠΉ Π²Π΅ΠΊΡΠΎΡ Π±Π°ΠΉΡΠΎΠ². ΠΠΎΠ³Π΄Π° ΡΠ°ΠΊΠΎΠΉ ΡΠ·ΡΠΊ, ΠΊΠ°ΠΊ C ++, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² WebAssembly, ΠΊΡΡΠ° ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ, ΠΊΠ°ΠΊ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅.
ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΡΠ΅ΠΊ Π²ΡΠ·ΠΎΠ²ΠΎΠ² WebAssembly (ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΠ΅ΠΊ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅) Π½Π΅ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½. ΠΠΎ ΠΊΠΎΠ³Π΄Π° ΡΠ°ΠΊΠΎΠΉ ΡΠ·ΡΠΊ, ΠΊΠ°ΠΊ C ++, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² WebAssembly, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΡΠ΅ΠΊΠ° C ++ ΠΌΠΎΠ³ΡΡ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ C ++ Ρ Π°Π΄ΡΠ΅ΡΠΎΠΌ ΠΈ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ.