ΠΠ·ΡΡΠΈΠ² ΠΏΡΠΎΠ΅ΠΊΡΠ½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, Ρ ΡΠΌΠΎΠ³ Π½Π°ΠΉΡΠΈ ΡΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΎ ΠΏΠΎΠ»ΠΈΡΠΈΠ»Π»Π΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡ WASM -> JS. Π― ΡΠ°ΠΊΠΆΠ΅ ΡΠΌΠΎΠ³ Π½Π°ΠΉΡΠΈ ΡΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ΅ C ++ -> WASM.
ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΠ½Π΅ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ Π½Π°ΠΉΡΠΈ ΡΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΡ ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ΅ JS -> WASM.
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ Π²Π»Π°Π΄Π΅ΡΡ Javascript, ΠΏΠΎΡΡΠΎΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ JS -> WASM Π±ΡΠ» Π±Ρ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ. ΠΠ΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π·Π°Ρ ΠΎΡΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΈ Π²Π΅Π±-ΡΠ°ΠΉΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Javascript Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΈΡΠ°ΡΡ ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ C ++. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Π½ΠΈ Ρ MVP, Π½ΠΈ Ρ ΡΠ°Π·Π΄Π΅Π»Π°ΠΌΠΈ post-MVP, Π² ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ JS -> WASM. Π§ΡΠΎ Π·Π΄Π΅ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ?
ΠΡΠ°ΡΠ·Π΅ΡΡ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π±ΡΠ΄ΡΡ ΠΈΠΌΠ΅ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ JavaScript Π²ΠΌΠ΅ΡΡΠ΅ Ρ wasm. ΠΠ΅Ρ ΠΏΡΠΈΡΠΈΠ½ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ JS Π² wasm, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Π°ΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅Π»ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ javascript. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΌ ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΡΠ΅ΠΌ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½Π°Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° JS.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΡΡ MVP Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ°ΠΊΠΈΡ Π²Π΅ΡΠ΅ΠΉ, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ±ΠΎΡΡΠΈΠΊΡ ΠΌΡΡΠΎΡΠ° ΠΈΠ· ΠΊΠΎΠ΄Π° wasm, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ·ΡΠΊΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² Π΄Π»Ρ wasm.
JS β wasm Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΌΡΡΠ» ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ wasm ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ±ΠΎΡΠΊΡ ΠΌΡΡΠΎΡΠ° ΠΈ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ, Π΄ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π΅ΡΠ΅ Π΄Π°Π»Π΅ΠΊΠΎ. ΠΠΎ ΡΡΡΠΈ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π²ΠΈΠΆΠΊΠ° JS Π² wasm! Π― Π½Π΅Π΄Π°Π²Π½ΠΎ ΡΠΏΠΎΠΌΡΠ½ΡΠ» ΠΎΠ± ΡΡΠΎΠΌ, ΠΈ @BrendanEich ΠΎΠ±Π²ΠΈΠ½ΠΈΠ» ΠΌΠ΅Π½Ρ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠΈΠ» horse_js.
Π§ΡΠΎΠ±Ρ Π±ΡΠ»ΠΎ ΡΡΠ½ΠΎ, ΡΠ΅Π»Ρ wasm Π½Π΅ Π² Π·Π°ΠΌΠ΅Π½Π΅ JavaScript, Π° Π² Π΅Π³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ. ΠΠΎΡΡΠΎΠΌΡ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π»ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ JS β wasm, Π½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ, ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ, Π½ΠΎ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ. Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ JS-Π΄Π²ΠΈΠΆΠΎΠΊ Π² wasm Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠΈΡΡΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
@jfbastien Π― ΡΠ΅Π±Ρ ΠΎΠΏΠ΅ΡΠ΅Π΄ΠΈΠ» Π½Π° 2 ΡΠ΅ΠΊΡΠ½Π΄Ρ;)
ΠΠΎ ΡΠ²ΠΎΠΉ ΠΎΡΠ²Π΅Ρ Π»ΡΡΡΠ΅. Π― Π² Π²ΠΎΡΡΠΎΡΠ³Π΅ ΠΎΡ GC ΠΈ JIT Π² wasm. ΠΠ½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΈΡ Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅.
Π ΠΊΠ°ΠΊ Π½Π°ΡΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠ°ΠΊΠΈΡ
Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ², ΠΊΠ°ΠΊ asm.js ΠΈΠ»ΠΈ TypeScript / ES7? ΠΡΠΈ
ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΠΈ Javascript ΠΎΠ±Π΅ΡΠ°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π³Π°ΡΠ°Π½ΡΠΈΠΉ ΡΠΈΠΏΠΎΠ².
Π― Π±Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠ», ΡΡΠΎ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² JIT Π±ΡΠ΄Π΅Ρ ΠΌΠ΅Π½ΡΡΠ΅, Π½ΠΎ GC Π²ΡΠ΅ Π΅ΡΠ΅ ΠΎΡΠ΅Π½Ρ
Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΡΡΠΈΡ
ΡΠ·ΡΠΊΠΎΠ². ΠΡΠ΄Π΅Ρ Π»ΠΈ ΠΈΠΌΠ΅ΡΡ {ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π°ΡΠΎΠΌΠ°Ρ JS} -> WASM make
ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ?
24 ΠΈΡΠ½Ρ 2015 Π³ΠΎΠ΄Π° Π² 09:44 Π’ΠΈΠΌ ΠΠ°ΡΠ²Π΅Π»Π» [email protected] Π½Π°ΠΏΠΈΡΠ°Π»:
@jfbastien https://github.com/jfbastien ΡΡ ΠΏΠΎΠ±Π΅Π΄ΠΈΠ» ΠΌΠ΅Π½Ρ Π½Π° 2 ΡΠ΅ΠΊΡΠ½Π΄Ρ: P
-
ΠΡΠ²Π΅ΡΡΡΠ΅ Π½Π° ΡΡΠΎ ΠΏΠΈΡΡΠΌΠΎ Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π½Π° GitHub
https://github.com/WebAssembly/design/issues/219#issuecomment -114675456.
ΠΠ°, ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊ asm.js -> wasm ΠΈΠΌΠ΅Π΅Ρ Π²ΡΡΠΎΠΊΠΈΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ, ΠΈ ΠΡΠΊ ΡΠΆΠ΅ ΡΠ΄Π΅Π»Π°Π» ΡΡΠΎ.
ΠΏΠΎΡΠ°Π±ΠΎΡΠ°ΠΉΡΠ΅ Π½Π°Π΄ ΠΊΠΎΠΌΠΏΡΠ΅ΡΡΠΎΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ»ΡΠΆΠΈΡΡ Ρ
ΠΎΡΠΎΡΠ΅ΠΉ ΠΎΡΠΏΡΠ°Π²Π½ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ.
Π ΡΡΠ΅Π΄Ρ, 24 ΠΈΡΠ½Ρ 2015 Π³., Π² 01:59, ΠΡΠ΅Π½Π΄Π°Π½ ΠΡΠ΅ΡΡ [email protected]
Π½Π°ΠΏΠΈΡΠ°Π»:
Π ΠΊΠ°ΠΊ Π½Π°ΡΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠ°ΠΊΠΈΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ², ΠΊΠ°ΠΊ asm.js ΠΈΠ»ΠΈ TypeScript / ES7? ΠΡΠΈ
ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΠΈ Javascript ΠΎΠ±Π΅ΡΠ°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π³Π°ΡΠ°Π½ΡΠΈΠΉ ΡΠΈΠΏΠΎΠ².Π― Π±Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠ», ΡΡΠΎ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² JIT Π±ΡΠ΄Π΅Ρ ΠΌΠ΅Π½ΡΡΠ΅, Π½ΠΎ GC Π²ΡΠ΅ Π΅ΡΠ΅ ΠΎΡΠ΅Π½Ρ
Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΡΡΠΈΡ ΡΠ·ΡΠΊΠΎΠ². ΠΡΠ΄Π΅Ρ Π»ΠΈ ΠΈΠΌΠ΅ΡΡ {ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π°ΡΠΎΠΌΠ°Ρ JS} -> WASM make
ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ?24 ΠΈΡΠ½Ρ 2015 Π³ΠΎΠ΄Π° Π² 09:44 Π’ΠΈΠΌ ΠΠ°ΡΠ²Π΅Π»Π» [email protected] Π½Π°ΠΏΠΈΡΠ°Π»:
@jfbastien https://github.com/jfbastien ΡΡ ΠΏΠΎΠ±Π΅Π΄ΠΈΠ» ΠΌΠ΅Π½Ρ Π½Π° 2 ΡΠ΅ΠΊΡΠ½Π΄Ρ: P
-
ΠΡΠ²Π΅ΡΡΡΠ΅ Π½Π° ΡΡΠΎ ΠΏΠΈΡΡΠΌΠΎ Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π½Π° GitHub
< https://github.com/WebAssembly/design/issues/219#issuecomment -114675456
.-
ΠΡΠ²Π΅ΡΡΡΠ΅ Π½Π° ΡΡΠΎ ΠΏΠΈΡΡΠΌΠΎ Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π½Π° GitHub
https://github.com/WebAssembly/design/issues/219#issuecomment -114677789.
ΠΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ TypeScript ΠΎΠ± ΡΡΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΈ ΠΎΠ½ΠΈ ΠΏΡΠΎΡΠ²ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ, Π½ΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡ Π² Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² JS.
@bguiz : Π΄Π²ΠΈΠΆΠΎΠΊ JS - ΡΡΠΎ Π΄Π²ΠΈΠΆΠΎΠΊ wasm, ΠΈ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΠΈΠΉΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠ·ΡΠΊ JS. ΠΠ΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡΠ΅ΡΡ ΠΎΠ± ΡΡΠΎΠΌ (Ρ Π½Π΅ Π±ΡΠ» ΡΠ²Π΅ΡΠ΅Π½, Π΄ΡΠΌΠ°Π»ΠΈ Π»ΠΈ Π²Ρ, ΡΡΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΡΠ΅Π·Π½ΡΡΡ. ΠΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ Π±ΡΠ΄ΡΡΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ ΠΌΠΎΠ³Ρ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅ΡΡ). OTOH, ΠΊΠ°ΠΊ ΠΎΡΠΌΠ΅ΡΠ°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅, wasm Π½ΡΠΆΠ½ΠΎ Π²ΡΠ΅ΠΌΡ, ΡΡΠΎΠ±Ρ ΡΠ°Π·Π²ΠΈΡΡ GC, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ JIT ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°, ΡΡΠΎΠ±Ρ ΡΡΠ°ΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΊΠ»Π°ΡΡΠ½ΠΎΠΉ ΡΠ΅Π»ΡΡ Π΄Π»Ρ JS. Π― ΡΠΎΠΌΠ½Π΅Π²Π°ΡΡΡ, ΡΡΠΎ Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡ ΡΡΠΈ Π²Π΅ΡΠΈ, Π΄Π²ΠΈΠΆΠΊΠΈ JS / wasm ΠΎΡΠΊΠ°ΠΆΡΡΡΡ ΠΎΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ JS Π² ΠΏΠΎΠ»ΡΠ·Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½ JS-in-wasm. ΠΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ!
/Π±ΡΡΡ
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² Emscripten ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊ asm.js Π² WebAssembly.
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ JS, Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΡΠ²Π΅ΡΠΈΠ»ΠΈ Π½Π° Π²ΠΎΠΏΡΠΎΡ Π²ΡΡΠ΅.
ΠΠ΅ΡΡ ΡΠΌΡΡΠ» JS ΠΏΡΠΎΡΡ Π² ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π΄Π΅Π»Π°ΡΡ ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²Π΅ΡΠΈ: dhteumeuleu ΠΈΠ»ΠΈ codepen.io/ge1doot, Π½ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ Π΅Π³ΠΎ Π»Π΅Π³ΠΊΠΎ Π²Π·Π»ΠΎΠΌΠ°ΡΡ.
Β«wasmΒ» - ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠΎΠ΄Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ³Ρ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Google, Apple ΠΈ Π΄ΡΡΠ³ΠΈΡ . ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ Β«ΡΠ²ΠΎΠ»ΡΡΠΈΡΒ» Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π»ΡΡΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π²Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Β«Π±Π΅Π· ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈΒ», ΠΏΡΡΠΌΠΎ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΡΠ°ΡΡΠ΅Π³ΠΎ Π±ΡΠ°ΡΠ° ... Π― ΠΏΡΠΎΡΡΠΎ ΡΠ΄ΠΈΠ²Π»Π΅Π½, ΡΡΠΎ ΠΎΠ½ΠΈ Π΅ΡΠ΅ Π½Π΅ Π±ΠΎΡΡΡΡ ΡΡΠ΅ΡΡΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π° ...
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ECMAScript Π² WebAssembly. ΠΡΠΎ Π½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ WebAssembly, Π½ΠΎ Π·Π²ΡΡΠΈΡ ΠΊΠ°ΠΊ ΠΎΡΠ»ΠΈΡΠ½Π°Ρ ΠΈΠ΄Π΅Ρ Π΄Π»Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΡΡΠΈΠ»ΠΈΠΉ.
Π― ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠ°Π» ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΈΠ³ΡΡΡΠ΅ΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌ: https://github.com/evanw/thinscript. ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π² ΡΡΠΈΠ»Π΅ TypeScript ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² WebAssembly. Π― ΠΏΠΎΠ΄ΡΠΌΠ°Π», ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ ΠΎΠ± ΡΡΠΎΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ. Π’Π°ΠΊΠΆΠ΅ Ρ Π±ΡΠ» ΠΏΡΠΈΡΡΠ½ΠΎ ΡΠ΄ΠΈΠ²Π»Π΅Π½ ΡΠ΅ΠΌ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Π³ΠΊΠΎ Π±ΡΠ»ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ WebAssembly. ΠΡΠ΅ΠΌ ΠΎΡΠ»ΠΈΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ!
Π― Π±Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ΅ΡΠ΅Π³Π°Π» Π»ΡΠ΄Π΅ΠΉ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠ΅Π½Ρ ΡΠΎΠ½ΠΊΠΈΡ
ΠΎΠ±Π΅ΡΡΠΎΠΊ ΠΏΠΎΠ²Π΅ΡΡ
wasm Π² ΡΠ΅Π»ΠΎΠΌ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΠΏΡΠΎΠ»ΠΈΡΡΡΠ²Π°Ρ ΠΊΠΎΠ΄ thinscript, Ρ Π²ΠΈΠΆΡ, ΡΡΠΎ Π΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ while
ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ½ΠΈΠΆΠ΅Π½ Π΄ΠΎ loop { if (!condition) break; }
, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΌΠ΅Π½Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ, ΡΠ΅ΠΌ if (condition) loop { ...; br_if condition }
Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΌΠ°ΡΠΈΠ½Π°Ρ
wasm.
ΠΠ»Ρ ΠΌΠ΅Π½Ρ ΡΠΎ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ wasm Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π½Π°Π³ΡΠ΅ΡΡΠΉ JS, - ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΈΠ»ΠΎΡΠΎΡΠΈΠΈ: ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ wasm ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π»ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΡΠΏΡΠ°Π²ΠΊΠΎΠΉ ΠΊΠΎΠ΄Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ, ΡΡΠΎΠ±Ρ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠΈΠ½Ρ ΠΈ ΠΡΡΡΡΠ΅Π΅. ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ ΡΠΎΠ½ΠΊΠΈΠ΅ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Π²ΠΎΠΊΡΡΠ³ wasm ΡΡΠ°Π½ΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌΠΈ, Π΅ΡΡΡ ΡΠΈΡΠΊ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΡΡΠ°Π½ΡΡ Π±ΠΎΠ»Π΅Π΅ Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌΠΈ ΠΈ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ, ΡΡΠΎΠ±Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ.
ΠΠ°, Ρ ΡΠΎΠ³Π»Π°ΡΠ΅Π½. Π§ΡΠΎ ΠΌΠ½Π΅ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π½ΡΠ°Π²ΠΈΡΡΡ Π² WebAssembly, ΡΠ°ΠΊ ΡΡΠΎ Π΅Π³ΠΎ ΠΏΡΠΎΡΡΠΎΡΠ°. Π― ΠΏΠ»Π°Π½ΠΈΡΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΡΠ΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΠ·ΡΠΊ ΡΡΠ°Π½Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΡΠΌ. Π― ΠΎΠΆΠΈΠ΄Π°Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°Π½Π΅Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΌΡΡ Π±ΠΎΠ»ΡΡΠΈΡ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΉ, ΠΈ Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Π», ΡΡΠΎ WebAssembly ΡΠ΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ Π·Π° ΠΌΠ΅Π½Ρ. Π― ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ»Π°Π½ΠΈΡΡΡ ΠΏΠΎΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΡΠ΅Π»ΡΡ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ Π±ΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΠΎΠ±Π΅ΠΈΡ ΡΠ΅Π»Π΅ΠΉ.
ΠΠ²ΡΡΠΈΡ ΠΎΡΠ΅Π½Ρ ΠΊΡΡΡΠΎ! ΠΠ½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊ ΡΠ΅ΠΌΡ ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ.
Π― ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡ, ΡΡΠΎ JS-> WASM Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»Π΅Π½ Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ², ΡΠ΅ΠΌ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ². Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ΅Π½Ρ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΠΎΠ±Π·ΠΎΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΡ Ρ ΠΈΠΌΠ΅Ρ Π² Π²ΠΈΠ΄Ρ ...
JavaScript -> WebAssembly -> Tracing Interpreter -> LLVM IR -> Machine Code
Π ΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ Π±ΡΠ»ΠΎ Π±Ρ ΠΎΡΠ΅Π½Ρ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ WASM Π½Π° LLVM IR Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΡΡΠΎΡΠ° . ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΎΡ Π΄Π²ΠΎΠΉΠ½ΠΈΠΊΠΎΠ² IEEE ΠΊ ΡΠ΅Π»ΡΠΌ ΡΠΈΡΠ»Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ ΠΊΠ°ΠΊ ΠΏΡΠΎΡ ΠΎΠ΄ LLVM. ΠΠΎΠ½ΡΡΠΈΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ JIT Π΄Π»Ρ Π³ΠΎΡΡΡΠ΅Π³ΠΎ ΠΈ Π³ΠΎΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΎΠ² ΠΏΡΠΎΡ ΠΎΠ΄ΠΎΠ² LLVM.
ΠΡΠΎΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡΡΠ»ΠΈ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΡΠ΄Π°Π»ΠΈΡΠ΅ ΡΡΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ Π»ΠΎΠΆΠ½ΠΎΠ΅!
Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ΅Π΄Π°ΠΌΠΈ - ΡΠ΅ΡΡΠ΅Π·Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ΅ JS. Babel ΠΏΡΡΠ°Π΅ΡΡΡ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΠ΅ΡΠ΅ΠΉΠ΄Ρ ΠΊ Π±ΠΎΠ»Π΅Π΅ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ES, ΠΈ Ρ Π΄ΡΠΌΠ°Ρ, ΠΌΡ Π²ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΎΠ½Π° Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΠΏΠ΅ΡΠ½Π°.
ΠΠ΄Π½Π°ΠΊΠΎ Π·Π΄Π΅ΡΡ Π²ΡΠ΅ Π΅ΡΠ΅ Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡΠ΅ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ ES 2016 Π½Π° ES5 Π΄Π»Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ, ΠΈ Π²Π°Ρ ΠΊΠΎΠ΄ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π² ΡΡΠ΅Π΄Π΅ Ρ (ΡΠ°ΡΡΠΈΡΠ½ΠΎΠΉ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΉ) ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ES 2016, Π²Ρ ΡΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ES 2016 Π² ΡΠ²ΠΎΠ΅ΠΉ ΡΡΠ΅Π΄Π΅. .
ΠΡΠ»ΠΈ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ Π½Π° ES5, ΡΠΎ Π² ΡΠ΅ΠΌ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ES 2016 Π² ΡΡΠ΅Π΄Π΅?
ΠΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«babel-preset-envΒ» ΠΏΡΡΠ°Π΅ΡΡΡ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΎΡΠΈΠ΅Π½ΡΠΈΡΡΡΡΡ Π½Π° ΡΡΠ΅Π΄Ρ ΠΏΠΎ ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌ. ΠΠ΄Π΅Ρ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ (1) Π²Ρ ΠΏΡΠΎΡΠΈΡΠ΅ Π΅Π³ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ°ΡΠ³Π΅ΡΠΈΠ½Π³ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΈΠ»ΠΈ Β«ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ X-Π²Π΅ΡΡΠΈΠΈΒ» Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ², (2) ΠΎΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΉ ΠΎΠ±ΡΠΈΠΉ Π·Π½Π°ΠΌΠ΅Π½Π°ΡΠ΅Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ (3) ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΡΠ°Π½ΡΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ, Π½ΠΎ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π£ Π½Π°Ρ Π²ΡΠ΅ Π΅ΡΠ΅ Π΅ΡΡΡ ΡΠΈΡΠΊ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΊΡΡΠΏΠ½ΡΠΉ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²Π΅ΡΡΠΈ ΡΠ΅Π±Ρ ΠΈ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΡΠ΅ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Microsoft ΡΠΎΠ·Π΄Π°Π²Π°Π»Π° Ρ Internet Explorer Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ Π»Π΅Ρ. ΠΡΡ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΡΠΊΠ°Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΡΠ°ΡΡ, ΡΡΠΎ ΠΈ ΠΊΠΎΠ³Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ. ΠΡΠΎ Π½Π΅ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΈ Π½Π΅ ΠΎΡΠΊΡΡΡΠΎ.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ - ΡΡΠΎ Π½ΠΎΠ²Π°Ρ ΡΠ΅Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π΄Π»Ρ JavaScript, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ (Π½Π°Π΄Π΅ΡΡΡ, Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ), ΡΠ΅ΠΌ JS-Π΄Π²ΠΈΠΆΠΎΠΊ. ΠΠΎΠ³Π΄Π° ΡΡΠ΅Π΄Ρ (Π±ΡΠ°ΡΠ·Π΅ΡΡ, Node.js ΠΈ Ρ. Π.) ΠΠ°ΡΠΈΠ½Π°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ°ΠΊΡΡ ββΡΠ΅Π»Ρ, ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ES Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡΠ°ΡΡ ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ², Π° Π½Π΅ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠ² Π΄Π²ΠΈΠΆΠΊΠΎΠ².
JS -> WASM Π±ΡΠ»ΠΎ Π±Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π·Π°ΡΠΈΡΠΈΡΡ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ ΠΏΡΡΠ΅ΠΌ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π΄ΠΎΡ ΠΎΠ΄ΠΈΡ Π΄ΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Electron Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ². Π ΡΡΠΎ ΡΡΡΠ΄Π½ΠΎ ΠΏΠΎΠ²Π΅ΡΠΈΡΡ, Π½ΠΎ ΡΡΠΎ ΠΏΡΠ°Π²Π΄Π°, ΡΡΠΎ Π² ΠΠ΅ΡΠΌΠ°Π½ΠΈΠΈ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΉ Ρ ΠΎΡΠ΅Π½Ρ ΡΠ»Π°Π±ΡΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΡ ΠΈΠ»ΠΈ Π±Π΅Π· Π½Π΅Π³ΠΎ, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, Π½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠΌ Π²ΡΠ΅Π³ΠΎ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π² Π²ΠΈΠ΄Π΅ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ³Π°ΡΡΠΈΠΌ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ.
@ Simran-B Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½Π° Wasm ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π·Π½Π°ΠΊΠΎΠΌΡΠΉ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠΎΡΠΌΠ°Ρ. ΠΡΠΈΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΡΠ΅ΠΊΠ°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Π΄Π»Ρ ΡΠΈΡΠ°Π΅ΠΌΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ Π½Π΅ ΡΠ΅Π»Ρ Β«ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°Β», Π½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Β«ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°Β» ΠΏΠΎΠ²Π΅ΡΡ Π½Π΅Π΅, Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ ΡΡΠΎ, ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΡΠΈΠ²Π΅Ρ Π²ΡΠ΅ΠΌ, Ρ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΎΡΠΊΡΡΠ» Π΄Π»Ρ ΡΠ΅Π±Ρ WebAssembly, Π½ΠΎ, Π΄ΡΠΌΠ°Ρ ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ΅ JS -> wasm, Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ» ΡΠ΅Π±Π΅ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Angular2 Ahead-of-Time, jsut Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ (Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ Π²ΠΌΠ΅ΡΡΠΎ javascript) ... ΠΡΠ΄Π΅Ρ Π»ΠΈ ΡΡΠΎ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ? Π‘ΡΠΎΠΈΡ Π»ΠΈ ΠΎΠ½ΠΎ ΡΠΎΠ³ΠΎ?
Π ΠΠΠΠΠ’ΠΠ ΠΠΠΠ’Π¬
Π― ΡΠ°ΠΊΠΆΠ΅ Π΄ΡΠΌΠ°Ρ, Π±ΡΠ΄Π΅Ρ Π»ΠΈ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄Π»Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΡΠ»Π°Π³ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ wasm, ΠΈ ΡΠΎΠ³Π΄Π° ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΡΠ°ΠΉΠ»Π° javascript?
Π ΠΈΡΠ°ΡΠ΄
@ Richard87 Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π²Π΅Π±-ΡΠ±ΠΎΡΠΊΡ ΠΊΠ°ΠΊ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎ-Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΡΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Π²ΡΠ·ΠΎΠ²Π°Ρ . ΠΠΈΡΡΠΎ Π½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΡΡ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ javascript, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ»ΠΎ Π±Ρ ΠΎΡΠ΅Π½Ρ Π»Π΅Π³ΠΊΠΎ ΡΡΠ°Π½ΡΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π² ΠΌΠΈΡΠ΅ ΡΡΠΈΡ Π²Π΅ΡΠ΅ΠΉ webassembly, Π½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΡΠΎ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π±ΡΠ΄Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ. ΠΠ°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΎΠ±Π»Π°ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² javascript ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ°ΡΡΡΡ, ΠΈ Π°Π΄Π°ΠΏΡΠ°ΡΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π² ΡΡΠΎΠΌ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π±ΡΠ΄Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Ρ ΡΡΠ΅ΡΠΎΠΌ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΎΡΡΡΡΡΡΠ²ΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΡΡΠΎΡΠ° Π² Π²Π΅Π±-ΡΠ±ΠΎΡΠΊΠ΅, ΠΈ Π²Ρ ΠΏΠΎ ΡΡΡΠ΅ΡΡΠ²Ρ ΠΏΠΎΡΠ΅ΡΡΠ΅ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ javascript. ΠΊΠΎΠ΄.
Π‘ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² ΡΠ±ΠΎΡΠΊΠΈ ΠΌΡΡΠΎΡΠ° Π² Π²Π΅Π±-ΡΠ±ΠΎΡΠΊΡ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ javascript, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΡΠ°Π½ΡΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π±Π΅Π· Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΎΠΉ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ, ΡΠ°ΡΡΠΈΡΠΈΠ»ΠΎΡΡ Π±Ρ, Π½ΠΎ Π²ΡΠ΅ ΠΆΠ΅, Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, ΡΡΠΎ Π½Π΅ Π±ΡΠ»ΠΎ Π±Ρ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΡΠΎΡΡΡΠΌ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΎΠΌ ΠΈΠ· Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ·ΡΠΊ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Π°ΡΠΈ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ Π² javascript Π±ΡΠ΄ΡΡ Π»ΠΈΡΡ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠ΅Π½ΡΡΠ΅, Π²Π°ΠΆΠ½ΡΠ΅ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ Π² Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ (ΡΠ΅ΡΠΈ!) Π±ΡΠ΄ΡΡ ΡΠ°ΡΡΠΈΡΡΡΡΡΡ, Π° ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ javascript Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π±ΡΠ΄ΡΡ Π½Π΅Π΄ΠΎΡΡΠ³Π°Π΅ΠΌΡ, ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅Π΅ Π½Π° Β«javascriptΒ» (Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ ΡΠ° ΠΆΠ΅ Π»ΠΎΠ΄ΠΊΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Unity Ρ UnityScript, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ½ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°Π»ΠΈ Π΅Π΅ Π΄Π»Ρ Π»ΡΡΡΠ΅ΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΡΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΈ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΎ Π²ΡΠ·ΠΎΠ²Π°Ρ Π² ΡΠ΅Π»ΠΎΠΌ, ΠΏΠΎΠΌΠΈΠΌΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΈΡ ΠΎΡΠ΅ΠΉ).
Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΈΠ· Π½Π°Ρ, ΠΊΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅ΡΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ ΠΈ Webgl, ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ Π²Π°ΠΆΠ½ΠΎ Π±ΡΡΡ Π±ΡΡΡΡΠ΅Π΅ Π² ΠΈΠ³ΡΠ°Ρ
. Π― Π½Π°ΠΌΠ΅ΡΠ΅Π²Π°ΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ³ΡΡ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° Π² webgl, Π½ΠΎ ΡΠ΅ΠΊΡΡΠ°Ρ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΡΡΠΎΠ»ΡΠΊΠΎ ΠΌΡΡΠΎΡΠ°, ΡΡΠΎ ΠΊΠ°Π΄ΡΡ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ.
ΠΡΠ°ΡΠ·Π΅ΡΠ½ΡΠ΅ ΠΈΠ³ΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ³ΡΠΎΠ²ΡΡ
Π΄Π²ΠΈΠΆΠΊΠΎΠ² JS ΠΏΠΎΡΡΠΈ ΠΏΠΎΡΠ΅ΡΠΏΠ΅Π»ΠΈ Π½Π΅ΡΠ΄Π°ΡΡ, ΠΈ Unity ΡΡΠ°Π»Π° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠΉ. Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ C ++ => Wasm - ΡΡΠΎ Π½Π΅ΡΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ Π΄Π»Ρ ΡΠ°ΠΊΠΈΡ
ΠΊΡΡΠΏΠ½ΡΡ
ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ², ΠΊΠ°ΠΊ Unity, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΊΡΠΎΡΡ-ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ Π² WASM.
ΠΠΎ ΠΊΠ°ΠΊ Π½Π°ΡΡΠ΅Ρ Π»ΡΠ΄Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΈΡΡΡ JS Π²ΡΡΡΠ½ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Three JS ΠΈΠ»ΠΈ Babylon? .. ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ JS / Asm.js => ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Wasm ΠΎΠ·Π½Π°ΡΠ°Π»ΠΎ Π±Ρ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Js Π±ΡΠ΄Π΅Ρ ΠΌΠ΅ΡΡΠ²ΡΠΌ, ΠΈ Π»ΡΠ΄ΠΈ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ C ++ ΠΈ Π±ΡΠΊΠ΅Π½Π΄Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Wasm. Π’ΠΎΡΠ½Π΅Π΅ Π² ΠΈΠ³ΡΠ°Ρ
ΠΈ ΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ.
ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ Π±ΡΠΊΡΠ½Π΄Π° JS => Wasm Π½Π΅ΡΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ JS. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, EMCC Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΡΡ ΠΊΡΡΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅, ΠΈ ΠΈΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ ΡΠΊΠΎΡΠΎΡΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π°, Π½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Js, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΈΡΡΡ Ρ
ΠΎΡΠΎΡΠΈΠΉ ΠΊΠΎΠ΄ js, Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π΄ΠΎΡΡΠΈΡΡ ΡΠ°ΠΊΠΎΠΉ Π²ΡΡΠΎΠΊΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈΠ·-Π·Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π²Π΅ΡΠ΅ΠΉ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ gc ΡΠ°Π½ΡΡΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡ. ΠΡΠΎΠΏΡΡΠΊ ΠΊΠ°Π΄ΡΠΎΠ² ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ GC ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Webgl ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΠΊΠ°Π΄ΡΡ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅ΡΠΈΡΡ. ΠΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ Π΄Π»Ρ ΡΡΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΊΠΎΠ΄Π° JS Π»ΡΡΡΠ΅, ΡΠ΅ΠΌ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΠΊΠΎΠ΄Π°. ΠΊΠ°ΠΊ ΠΈ ΡΡΠΊΠΎΠΏΠΈΡΠ½Π°Ρ ΡΠ±ΠΎΡΠΊΠ°, ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΌΠ΅Π½ΡΡΠΈΠΉ ΠΈ Ρ
ΠΎΡΠΎΡΠΎ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄. ΠΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² Π²Π΅Π±-ΡΠ±ΠΎΡΠΊΠ΅.
@metacritical C ++ ΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² WASM, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ Π²ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ Π² ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π±ΠΎΡΡ. Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ ΠΈ Ρ JavaScript, Π½ΠΎ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΠΏΡΡΠ°Π΅ΡΡΡ ΡΡΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅Ρ ΠΎΡΠΎΠ±ΡΡ ΠΏΡΠΈΡΠΈΠ½: ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π²Π°ΡΠ΅Π³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° - ΡΡΠΎ ΡΠ±ΠΎΡΠΊΠ° ΠΌΡΡΠΎΡΠ°. ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ ΠΈΡΡΠ΅Π·Π½Π΅Ρ, ββΠ΅ΡΠ»ΠΈ Π²Ρ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΡΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΈ ΠΊΠΎΠ΄ WASM ... Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΆΠΈΠ²Ρ, ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅Ρ. Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΌΡΡΠΎΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΡΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ΅Π½ WASM, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π΅Π»Π°ΡΡ ΡΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ.
Π£Π»ΡΡΡΠ°-ΡΠΈΡΡΡΠΉ Javascript, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΌΠ°Π»ΠΎ ΠΌΡΡΠΎΡΠ°, ΠΏΠΈΡΠ°ΡΡ ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ. Π’Π°ΠΊΠΆΠ΅ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Plain Js Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ Π² WASM. Asm.js ΠΈΠ»ΠΈ Typescript Π±ΡΠ΄Π΅Ρ Π»Π΅Π³ΡΠ΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π² WASM ΠΈΠ·-Π·Π° Π½Π°Π»ΠΈΡΠΈΡ Π² Π½ΠΈΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΡΠΈΠΏΠΎΠ² ΠΈΠ»ΠΈ ΡΠΈΠΏΠΎΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
@metacritical Π‘Π»ΠΎΠΆΠ½ΠΎ, Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΠ°ΠΆΠ΅ Π² ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°Ρ C ++ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π° ΡΠ²ΡΠ·Π°Π½Π° Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π₯ΠΎΡΡ ΡΡΠΎ ΠΈ Π½Π΅ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ, Π½Π΅Ρ ΠΏΡΠΈΡΠΈΠ½, ΠΏΠΎ ΠΊΠΎΡΠΎΡΡΠΌ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π² JavaScript.
ΠΠ±ΡΡΠ½ΡΠΉ JS _ ΠΌΠΎΠΆΠ½ΠΎ_ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π² WASM, Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΡΡΠΎΠ±Ρ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ JavaScript, ΠΊΠ°ΠΊ ΡΠ±ΠΎΡΠΊΠ° ΠΌΡΡΠΎΡΠ°, ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ Ρ. Π. ΠΠΎ ΡΡΡΠΈ, Π²ΡΠ΅, ΡΡΠΎ Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΌΡ Π² Π±ΡΠ°ΡΠ·Π΅Ρ Π΄Π²ΠΈΠΆΠΊΡ JS. TypeScript ΠΌΠ°Π»ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ.
ΠΠ»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, ASM.JS Π»Π΅Π³ΠΊΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² WASM. Π‘ΡΡΠΎΠ³ΠΈΠΉ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ JS, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π½ΡΡ ASM.JS, ΡΠ°ΠΊΠΆΠ΅ Π½Π° 100% ΠΏΠΎΠΊΡΡΠ²Π°Π΅ΡΡΡ WASM. ΠΡΠ»ΠΈ Π±Ρ Π½Π° ASM.JS Π±ΡΠ» Π½Π°ΠΏΠΈΡΠ°Π½ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π°, ΡΡΠΎ ΡΡΠΎΠΈΠ»ΠΎ Π±Ρ ΡΡΠΈΠ»ΠΈΠΉ, Π½ΠΎ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, Π²ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ASM.JS ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° C ++, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΏΡΡΠΌΡΡ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° WASM.
ΠΠ»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, ASM.JS Π»Π΅Π³ΠΊΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² WASM.
ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ, ΠΈ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ C ++ Π² wasm ΡΠ΅Π³ΠΎΠ΄Π½Ρ - ΡΠ½Π°ΡΠ°Π»Π° ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² asm.js, Π° Π·Π°ΡΠ΅ΠΌ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ asm.js Π² wasm Ρ ΠΏΠΎΠΌΠΎΡΡΡ asm2wasm Binaryen .
@kripken ΠΠ»ΡΠ΄Ρ Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ asm.js, ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ Π»Π΅Π³ΠΊΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠΊΠΎΠΏΠΈΡΠ½ΡΠΉ asm.js, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΄Π»Ρ js-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² Π΅ΡΠ΅ Π½Π΅ Π²ΡΠ΅ ΠΏΠΎΡΠ΅ΡΡΠ½ΠΎ, ΠΌΡ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ WASM, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²ΡΡΠ΅ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅.
Π Π°Π·Π²Π΅ ΡΠ²ΠΎΠ»ΡΡΠΈΡ JS, Ρ.Π΅. ΡΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°, Π½Π΅ ΠΌΠΎΠ³Π»Π° Π±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ Ρ
ΠΎΡΠΎΡΠΈΠΌ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠΎΠΌ Π΄Π»Ρ JS -> WASM?
Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Ρ TC39 Π΅ΡΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ ΡΡΠ°Π½Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ.
@ aruns07 Π§Π΅ΠΌ ΠΌΠ΅Π½ΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ JavaScript Π²Ρ ΡΠ°Π·ΡΠ΅ΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π² WASM, ΠΈ ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ, ΡΡΠΎ Π»ΡΠ΄ΠΈ Π½Π΅ Π·Π°Ρ ΠΎΡΡΡ ΠΆΠΈΡΡ Ρ Π²Π°ΡΠΈΠΌΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΈΠ·-Π·Π° Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ ΡΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ Π»ΡΠ±ΠΈΠΌΡΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ.
@Kardax @ aruns07 ΠΡΠ΄ΡΠΌ Π½ΡΠ°Π²ΠΈΡΡΡ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°. Π‘ΠΈΠ»ΡΠ½ΡΠ΅ ΡΠΈΠΏΡ Π½ΡΠΆΠ½Ρ Π½Π°ΠΌ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈ Π½Π΅ Π²ΡΠ΅Π³Π΄Π°.
jfbastien ΠΏΡΠΎΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π» 24 ΠΈΡΠ½Ρ 2015 Π³.
JS β wasm Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΌΡΡΠ» ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ wasm ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ±ΠΎΡΠΊΡ ΠΌΡΡΠΎΡΠ° ΠΈ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ, Π΄ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π΅ΡΠ΅ Π΄Π°Π»Π΅ΠΊΠΎ. ΠΠΎ ΡΡΡΠΈ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π²ΠΈΠΆΠΊΠ° JS Π² wasm!
ΠΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΠ»ΠΊΠ΅:
https://lists.w3.org/Archives/Public/public-webassembly/2017Feb/0002.html
ΠΠΎΠ½ΡΠ΅Π½ΡΡΡ WebAssembly ΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅
Π’Π΅ΠΏΠ΅ΡΡ, ΡΠΏΡΡΡΡ 2 Π³ΠΎΠ΄Π° ΠΏΠΎΡΠ»Π΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ°, ΡΠ΅Π³ΠΎΠ΄Π½Ρ WebAssembly ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ Π²Π΅Π±-Π±ΡΠ°ΡΠ·Π΅ΡΠ°ΠΌΠΈ.
Π’Π°ΠΊ ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ JS-Π΄Π²ΠΈΠΆΠΊΠ° Π² wasm Π½Π΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Π°.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° js -> wasm - ΡΡΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° GC, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ΅Π½ΡΡΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΠ΄Π° ΠΈ Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π³ΠΈΠ±ΡΠΈΠ΄Π½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ Ionic2, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ°ΠΉΠ» JS ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΎΠΊΠΎΠ»ΠΎ 10 ΠΠ, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ 5 ΡΠ΅ΠΊΡΠ½Π΄Ρ (ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·Π±ΠΎΡ 2 ΠΠ JS = 1 ΡΠ΅ΠΊΡΠ½Π΄Π°)
@jfbastien ΠΡΠ°ΠΊ,
Π ΡΠ°ΠΌΠΊΠ°Ρ ΡΠ²ΠΎΠ΅ΠΉ ΠΌΠ°Π³ΠΈΡΡΠ΅ΡΡΠΊΠΎΠΉ Π΄ΠΈΡΡΠ΅ΡΡΠ°ΡΠΈΠΈ Ρ ΠΏΡΡΠ°ΡΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ Transpiler ΠΈΠ· ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° JavaScript Π² WebAssembly. Π‘Π½Π°ΡΠ°Π»Π° ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ TypeScript, Π½ΠΎ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Flow.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ΅Π»Ρ ΡΠΎΡΡΠΎΠΈΡ Π½Π΅ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠ·ΡΠΊ JavaScript, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡ Ρ ΡΠ΅ΠΌΠΈ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ JIT, ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΎΠΆΠΈΠ΄Π°ΡΡ Π½Π΅Π»ΡΠ·Ρ (Π±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠ½ΠΎ, ΠΌΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π² 100 ΡΠ°Π· ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅! ). ΠΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ, ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ SoundScript.
ΠΠΎΡ ΡΠ΅Π»Ρ - ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠ°ΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² WebAssembly Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΠΎΠΊΠΈΠ΄Π°Π» Π·Π½Π°ΠΊΠΎΠΌΡΡ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π΄ΡΡΠ³ΠΎΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π²Π°ΠΆΠ½ΡΡ ΡΠ°ΡΡΠ΅ΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° Π½Π΅ ΠΊΠ°ΠΊ ΡΡΠ°Π½ΡΠΏΠΈΠ»ΡΡΠΎΡ ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π»ΡΠ±ΠΎΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ JavaScript.
ΠΠ½Π΅ ΠΎΡΠ΅Π½Ρ Π»ΡΠ±ΠΎΠΏΡΡΠ½ΠΎ, ΠΊΠ°ΠΊΠΈΠΌΠΈ Π±ΡΠ΄ΡΡ ΠΌΠΎΠΈ Π²ΡΠ²ΠΎΠ΄Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ Π²ΠΈΠΆΡ ΠΏΠ»ΡΡΡ ΠΈ ΠΌΠΈΠ½ΡΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°. ΠΠ°ΠΉΡΠ΅ ΠΌΠ½Π΅ Π·Π½Π°ΡΡ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ.
@ Mohsen7s, ΠΌΠΎΠΉ ΠΎΡΠ²Π΅Ρ ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠΎΡΠ½ΡΠΌ: Π²Π΅ΡΡΠΈΡ WebAssembly MVP Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ GC ΠΈ JIT, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π±ΡΡΡΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ JavaScript. ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½, Ρ ΡΠΌΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΏΠ»ΠΎΡ ΠΈΠΌ, Π½ΠΎ Π½Π΅ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ, ΠΊΠ°ΠΊ ΡΠΎ, ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Π½Π°ΡΠΈΠ²Π½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΡΠΎ Π½Π΅ΠΎΡΡΠ΅ΠΌΠ»Π΅ΠΌΠΎ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Β«ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΆΠΈΠ·Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π½ΡΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡΒ»: ΡΠ½Π°ΡΠ°Π»Π° ΠΎΡΠΏΡΠ°Π²ΡΡΠ΅ ΡΡΠΎ-ΡΠΎ, ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π° Π·Π°ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. Π‘ΠΌ. Π‘Π»Π΅Π΄ΡΡΡΡΡ Π²Π΅ΡΠΊΡ Π΄Π»Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ MVP ΠΈ ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΡ Β«Π±ΡΠ΄ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉΒ»: https://github.com/WebAssembly/design/issues/992#issuecomment -281735235
ΠΡΡΠ°Π²Π»ΡΡ Π² ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄ΠΈΡΠΊΡΡΡΠΈΠΈ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΡΡΠΎ Π½Π΅Π»ΡΠ·Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ, Ρ ΡΠ΄ΠΈΠ²Π»Π΅Π½, ΡΡΠΎ JS -> WASM Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π»ΡΡ Π½ΠΎΠΌΠ΅Ρ 1 ΠΊΠ°ΠΊ Ρ ΡΠΈΠ»ΠΎΡΠΎΡΡΠΊΠΎΠΉ, ΡΠ°ΠΊ ΠΈ Ρ ΠΌΠ°ΡΠΊΠ΅ΡΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ - Ρ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΊΠ°ΠΊ Π²Ρ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ Π΄ΠΎΠ±ΡΠ΅ΡΠ΅ΡΡ ΡΡΠ°ΡΡΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ. ΠΡΠ»ΠΈ Π±Ρ Π²ΡΠ΅ ΡΡΠΈ front-end / back-end / full-stack ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ, ΠΎΠ±Π»Π°Π΄Π°ΡΡΠΈΠ΅ Π½Π°Π²ΡΠΊΠ°ΠΌΠΈ JS, ΡΠΏΠΎΡΠΎΠ±Π½ΡΠΌΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΡΡΠ½ΠΎΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ, Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΡΡΠ°ΡΠΈΡΡ ΡΠ²ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π° ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ C ++, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ΠΌ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅ ΠΎΡΡΠ°ΡΠ»Π΅ΠΉ, ΡΠΎ ΠΎΠ½ΠΈ ΡΠΆΠ΅ ΡΠ΄Π΅Π»Π°Π»ΠΈ Π±Ρ ΡΡΠΎ. ΡΠ°ΠΊ ΡΡΠΎ - Π·Π½Π°Ρ, Π³ΠΎΠ²ΠΎΡΡ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½. Π― Π½Π΅ ΠΌΠΎΠ³Ρ Π½Π΅ ΡΡΠ²ΡΡΠ²ΠΎΠ²Π°ΡΡ, ΡΡΠΎ Π²ΡΡ ΡΡΠ° Π΄ΠΈΡΠΊΡΡΡΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΠΌ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΡΡ ΠΎ-ΠΊΠ°ΠΌΠ΅ΡΡ ΠΈ ΡΡΠΎ ΡΠ΅, ΠΊΡΠΎ Π·Π°ΡΠΈΡΠ°Π΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, Π½Π°ΠΉΠ΄ΡΡ, ΡΡΠΎ ΠΈΡ Π²ΡΠ΅ΠΌΡ Π»ΡΡΡΠ΅ ΠΏΠΎΡΡΠ°ΡΠΈΡΡ Π½Π° ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΡ Ρ Π»ΡΠ΄ΡΠΌΠΈ Π½Π° Π·Π°Π±ΠΎΠ΅, ΡΠΏΡΠ°ΡΠΈΠ²Π°Ρ ΠΈΡ , ΡΠ΅Π³ΠΎ ΠΎΠ½ΠΈ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Ρ ΠΎΡΡΡ.
@BossLevel
ΠΡΡΠ°Π²Π»ΡΡ Π² ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄ΠΈΡΠΊΡΡΡΠΈΠΈ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΡΡΠΎ Π½Π΅Π»ΡΠ·Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ, Ρ ΡΠ΄ΠΈΠ²Π»Π΅Π½, ΡΡΠΎ JS -> WASM Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π»ΡΡ Π½ΠΎΠΌΠ΅Ρ 1 ΠΊΠ°ΠΊ Ρ ΡΠΈΠ»ΠΎΡΠΎΡΡΠΊΠΎΠΉ, ΡΠ°ΠΊ ΠΈ Ρ ΠΌΠ°ΡΠΊΠ΅ΡΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ - Ρ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΊΠ°ΠΊ Π²Ρ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ Π΄ΠΎΠ±ΡΠ΅ΡΠ΅ΡΡ ΡΡΠ°ΡΡΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ. ΠΡΠ»ΠΈ Π±Ρ Π²ΡΠ΅ ΡΡΠΈ front-end / back-end / full-stack ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ, ΠΎΠ±Π»Π°Π΄Π°ΡΡΠΈΠ΅ Π½Π°Π²ΡΠΊΠ°ΠΌΠΈ JS, ΡΠΏΠΎΡΠΎΠ±Π½ΡΠΌΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΡΡΠ½ΠΎΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ, Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΡΡΠ°ΡΠΈΡΡ ΡΠ²ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π° ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ C ++, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ΠΌ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅ ΠΎΡΡΠ°ΡΠ»Π΅ΠΉ, ΡΠΎ ΠΎΠ½ΠΈ ΡΠΆΠ΅ ΡΠ΄Π΅Π»Π°Π»ΠΈ Π±Ρ ΡΡΠΎ. ΡΠ°ΠΊ ΡΡΠΎ - Π·Π½Π°Ρ, Π³ΠΎΠ²ΠΎΡΡ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½.
ΠΡΠ°ΡΠ·Π΅ΡΡ ΡΠΆΠ΅ ΠΌΠΎΠ³ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ JavaScript. ΠΡΠ°ΡΠ·Π΅ΡΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ. Π Π΄ΠΎΠ²Π΅ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³ΠΎ, WebAssembly Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΡΠ΅ΠΌΠ»Π΅Π½ΠΈΠΉ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°.
ΠΡΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ https://github.com/WebAssembly/design/issues/992#issuecomment -281735235 ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΡΡ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ ΡΠ΅Π»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅ΡΠ»Π΅Π΄ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ Π»ΡΠ΄ΠΈ. ΠΡΠ΅ Π½Π΅ ΠΎΡΠΈΠ±Π»ΠΈΡΡ! MVP ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ°ΡΡΡΠ°Π²ΠΈΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΡ, ΠΊΡΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ.
Π― Π½Π΅ ΠΌΠΎΠ³Ρ Π½Π΅ ΡΡΠ²ΡΡΠ²ΠΎΠ²Π°ΡΡ, ΡΡΠΎ Π²ΡΡ ΡΡΠ° Π΄ΠΈΡΠΊΡΡΡΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΠΌ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΡΡ ΠΎ-ΠΊΠ°ΠΌΠ΅ΡΡ ΠΈ ΡΡΠΎ ΡΠ΅, ΠΊΡΠΎ Π·Π°ΡΠΈΡΠ°Π΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, Π½Π°ΠΉΠ΄ΡΡ, ΡΡΠΎ ΠΈΡ Π²ΡΠ΅ΠΌΡ Π»ΡΡΡΠ΅ ΠΏΠΎΡΡΠ°ΡΠΈΡΡ Π½Π° ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΡ Ρ Π»ΡΠ΄ΡΠΌΠΈ Π½Π° Π·Π°Π±ΠΎΠ΅, ΡΠΏΡΠ°ΡΠΈΠ²Π°Ρ ΠΈΡ , ΡΠ΅Π³ΠΎ ΠΎΠ½ΠΈ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Ρ ΠΎΡΡΡ.
ΠΡΠΎ Π±ΡΠ» Π²Π΅ΡΡ ΡΠΌΡΡΠ» ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π³ΡΡΠΏΠΏΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° W3C. ΠΡ Π΄ΡΠΌΠ°Π΅ΠΌ, ΡΡΠΎ ΡΡΠΎ ΡΠ΄Π°Π»ΠΎΡΡ, ΠΎ ΡΠ΅ΠΌ ΠΌΡ ΡΠ»ΡΡΠ°Π»ΠΈ ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΈΡ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΠ΅ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ MVP, Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡ Π±ΡΠ΄ΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ .
@jfbastien
ΠΡΠ°ΡΠ·Π΅ΡΡ ΡΠΆΠ΅ ΠΌΠΎΠ³ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ JavaScript.
Π₯Π°, Ρ ΠΏΡΡΠ°Π»ΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΡΡ HTML5-ΠΈΠ³ΡΡ, ΡΠΏΠΎΡΠΎΠ±Π½ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΡΠΈΠ»ΠΈΡΠ½ΡΠΌ FPS Π½Π° ΡΡΠ΅Π΄Π½Π΅ΠΌ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΌ ΡΠ΅Π»Π΅ΡΠΎΠ½Π΅ Ρ 2008 Π³ΠΎΠ΄Π°, Π½ΠΎ ΠΌΠ΅Π½Ρ Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π΅Ρ! Π, ΡΡΠΈΡΡΠ²Π°Ρ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Ρ Π·Π°ΠΊΠ»ΡΡΠ°Ρ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ Π½Π° ΠΎΠΏΠ»Π°ΡΡ ΡΡΠ΅ΡΠΎΠ², Ρ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ Π²ΠΎΠ·Π½Π°Π³ΡΠ°ΠΆΠ΄Π΅Π½, Ρ ΠΏΠΎΡΡΠΈ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠ° Π½Π΅ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΌΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΡΠΎ Π±ΡΠ» Π²Π΅ΡΡ ΡΠΌΡΡΠ» ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π³ΡΡΠΏΠΏΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° W3C.
Π‘Π½ΠΎΠ²Π° Ρ Π° - ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Ρ Π·Π½Π°Π΅ΡΠ΅ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ ΠΊ Π³ΡΡΠΏΠΏΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°? Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ, ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ²Π»ΡΡΡΡΡ Π΅Π²Π°Π½Π³Π΅Π»ΠΈΡΡΠ°ΠΌΠΈ ΠΈ Ρ. Π., ΠΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ ΠΎΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½Ρ, Π΄Π°, Π½ΠΎ ΡΡΠ²ΡΡΠ²ΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ Π±ΠΎΠ»ΠΈ ΠΎΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ².
Π ΠΌΠ½Π΅ ΠΎΡΠ΅Π½Ρ ΠΆΠ°Π»Ρ, Π½ΠΎ Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ Ρ ΠΎΡΡ Π½ΠΈΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ½ΠΈΠΆΠ°ΡΡ Π½Π° ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ / Π²ΠΎΠ²Π»Π΅ΡΠ΅Π½Π½ΠΎΠΉ / Π² W3C. ΠΠ°ΠΊ Π²Ρ Π³ΠΎΠ²ΠΎΡΠΈΡΠ΅, ΡΡΠΎ Π΄ΠΈΡΠΊΡΡΡΠΈΡ, ΠΈ ΡΡΠΎ ΠΌΠΎΡ ΡΠΎΡΠΊΠ° Π·ΡΠ΅Π½ΠΈΡ Ρ ΠΏΠ΅ΡΠ΅Π΄ΠΎΠ²ΠΎΠΉ.
ΠΡΠΈΠ½ΠΎΡΠΈΠΌ ΠΈΠ·Π²ΠΈΠ½Π΅Π½ΠΈΡ Π·Π° ΡΠΎ, ΡΡΠΎ Π²Π΅ΡΠ½ΡΠ»ΡΡ ΠΊ ΡΡΠΎΠΌΡ, ΠΊΠ°ΠΊ ΡΠΎΠ±Π°ΠΊΠ°, Π±Π΅ΡΠΏΠΎΠΊΠΎΡΡΠ°ΡΡΡ ΠΎ ΠΊΠΎΡΡΡ, Π½ΠΎ ΠΏΠΎΠΊΠ° Ρ Π±ΡΠ» Π² ΠΎΡΡΠ΅Π·Π΄Π΅, Ρ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π» Π»ΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± Π²ΡΡΠ°Π·ΠΈΡΡ ΡΠ²ΠΎΡ ΡΠΎΡΠΊΡ Π·ΡΠ΅Π½ΠΈΡ. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΌ Π±ΡΠ»Π»Π΅ΡΠ΅Π½Π΅ / ΠΌΠ΅ΡΠΎΠΏΡΠΈΡΡΠΈΠΈ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° ΠΈΠ»ΠΈ Π»ΡΠ±ΡΠΌ Π΄ΡΡΠ³ΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ Π·Π°Π΄Π°ΠΉΡΠ΅ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ (Π²Π°ΡΠΈΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ):
Π§ΡΠΎΠ±Ρ Π²ΡΠ²Π΅ΡΡΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ° Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΡΡΠΈΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ·ΡΠΊ; ΡΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ?
ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ, ΠΏΠΎ ΡΡΡΠΈ, Π²ΠΎΠΏΡΠΎΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ (Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, Π²ΡΠ΅Π΄Π½ΠΎ) ΡΠΆΠ΅ Π±ΡΠ»ΠΈ Π΄Π°Π½Ρ ΠΎΡΠ²Π΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π½Π° ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅.
Π Π½Π°ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠΊ (ΠΎΠ±Π΅ΡΠ°Ρ ;-)) @jfbastien , Π΅ΡΠ»ΠΈ:
Π Π΄ΠΎΠ²Π΅ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³ΠΎ, WebAssembly Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΡΠ΅ΠΌΠ»Π΅Π½ΠΈΠΉ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°.
ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«WebAssemblyΒ»?
@BossLevel ΠΡΠΌΠ°Ρ, Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΎΡΠΊΡΠ΄Π° Π²Ρ. Π― Π½Π΅ ΠΌΠΎΠ³Ρ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ Π»ΡΠ΄Π΅ΠΉ, ΠΏΡΠΎΠ²ΠΎΠ΄ΡΡΠΈΡ Π΅Π²Π°Π½Π³Π΅Π»ΠΈΠ·Π°ΡΠΈΡ, Π½ΠΎ Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΡΡΠΎ ΡΠ°Π·Π½ΡΠ΅ Π΅Π²Π°Π½Π³Π΅Π»ΠΈΡΡΡ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠ²Π°Π»ΠΈ Ρ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΌΠΈ Β«Π½Π°ΡΠΈΠ²Π½ΡΠΌΠΈΒ» ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½Ρ Π² WebAssembly. Π‘ Π²Π°ΡΠ΅ΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ, Π½ΠΎ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Ρ ΠΌΠΎΠ³Ρ ΡΠΊΠ°Π·Π°ΡΡ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ΅Ρ Unity ΠΊΠ°ΠΊ Π½Π° ΠΏΡΠΈΠ·Π½Π°ΠΊ Β«ΡΠ΅ΡΡΠ΅Π·Π½ΡΡ Β» ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΡΠΈ Π»ΡΠ΄ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π° github ΠΏΠΎΠ΄ ΡΠ²ΠΎΠΈΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Π½ΠΎ ΠΈΡ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΡ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π°. ΠΠ΅ ΠΌΠ½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΡΡ Π·Π° Π½ΠΈΡ .
Π₯Π°, Ρ ΠΏΡΡΠ°Π»ΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΡΡ HTML5-ΠΈΠ³ΡΡ, ΡΠΏΠΎΡΠΎΠ±Π½ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΡΠΈΠ»ΠΈΡΠ½ΡΠΌ FPS Π½Π° ΡΡΠ΅Π΄Π½Π΅ΠΌ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΌ ΡΠ΅Π»Π΅ΡΠΎΠ½Π΅ Ρ 2008 Π³ΠΎΠ΄Π°, Π½ΠΎ ΠΌΠ΅Π½Ρ Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π΅Ρ! Π, ΡΡΠΈΡΡΠ²Π°Ρ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Ρ Π·Π°ΠΊΠ»ΡΡΠ°Ρ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ Π½Π° ΠΎΠΏΠ»Π°ΡΡ ΡΡΠ΅ΡΠΎΠ², Ρ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ Π²ΠΎΠ·Π½Π°Π³ΡΠ°ΠΆΠ΄Π΅Π½, Ρ ΠΏΠΎΡΡΠΈ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠ° Π½Π΅ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΌΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°.
Π― Π½Π΅ ΠΈΠΌΠ΅Π» Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΠΏΠΈΡΠ°ΡΡ Π±ΡΡΡΡΡΠΉ JavaScript Π»Π΅Π³ΠΊΠΎ. Π― Ρ ΠΎΡΠ΅Π» ΡΠΊΠ°Π·Π°ΡΡ: WebAssembly Π½Π΅ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ JavaScript. Π‘ΠΊΠΎΡΠ΅Π΅, ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡΠΌΠ°Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π»ΡΡΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ TC39 ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° ΡΠ»ΡΡΡΠ΅Π½ΠΈΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ JavaScript, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ JavaScript Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅Π»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
Π‘Π½ΠΎΠ²Π° Ρ Π° - ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Ρ Π·Π½Π°Π΅ΡΠ΅ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ ΠΊ Π³ΡΡΠΏΠΏΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°? Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ, ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ²Π»ΡΡΡΡΡ Π΅Π²Π°Π½Π³Π΅Π»ΠΈΡΡΠ°ΠΌΠΈ ΠΈ Ρ. Π., ΠΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ ΠΎΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½Ρ, Π΄Π°, Π½ΠΎ ΡΡΠ²ΡΡΠ²ΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ Π±ΠΎΠ»ΠΈ ΠΎΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ².
Π ΠΌΠ½Π΅ ΠΎΡΠ΅Π½Ρ ΠΆΠ°Π»Ρ, Π½ΠΎ Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ Ρ ΠΎΡΡ Π½ΠΈΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ½ΠΈΠΆΠ°ΡΡ Π½Π° ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ / Π²ΠΎΠ²Π»Π΅ΡΠ΅Π½Π½ΠΎΠΉ / Π² W3C. ΠΠ°ΠΊ Π²Ρ Π³ΠΎΠ²ΠΎΡΠΈΡΠ΅, ΡΡΠΎ Π΄ΠΈΡΠΊΡΡΡΠΈΡ, ΠΈ ΡΡΠΎ ΠΌΠΎΡ ΡΠΎΡΠΊΠ° Π·ΡΠ΅Π½ΠΈΡ Ρ ΠΏΠ΅ΡΠ΅Π΄ΠΎΠ²ΠΎΠΉ.
ΠΠ°ΡΠ° ΡΠΎΡΠΊΠ° Π·ΡΠ΅Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π΅ΡΠ½Π°, ΠΈ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠ½ΠΎ, ΡΡΠΎ Ρ Π²Π°ΡΠ΅ΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Ρ Π³ΠΎΠ²ΠΎΡΡ ΡΠΎ, Π²ΠΎ ΡΡΠΎ ΡΡΡΠ΄Π½ΠΎ ΠΏΠΎΠ²Π΅ΡΠΈΡΡ. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π»ΡΡΡΠ΅ ΡΠΎΠΎΠ±ΡΠΈΡΡ ΠΎΠ± ΡΡΠΎΠΌ (ΠΈΠ»ΠΈ ΡΠΉ, ΠΌΠΎΠΆΠ΅Ρ Ρ ΠΎΡΠΈΠ±Π°ΡΡΡ: wink :).
Π§ΡΠΎΠ±Ρ Π²ΡΠ²Π΅ΡΡΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ° Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΡΡΠΈΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ·ΡΠΊ; ΡΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ?
ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ, ΠΏΠΎ ΡΡΡΠΈ, Π²ΠΎΠΏΡΠΎΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ (Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, Π²ΡΠ΅Π΄Π½ΠΎ) ΡΠΆΠ΅ Π±ΡΠ»ΠΈ Π΄Π°Π½Ρ ΠΎΡΠ²Π΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π½Π° ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅.
Π― ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ Π²Π°ΡΠ΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡΡΠ²ΠΎ, Π½ΠΎ Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ. ΠΠΏΡΡΡ ΠΆΠ΅, Ρ ΠΌΠΎΠ³Ρ ΠΎΡΠΈΠ±Π°ΡΡΡΡ. ΠΠ° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, WebAssembly ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°Π΅Ρ Π½Π° ΡΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π½ΠΎΠ²ΡΡ
ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², Ρ ΠΊΠΎΡΠΎΡΡΡ
Π±ΡΠ» ΠΏΠ»ΠΎΡ
ΠΎΠΉ ΠΎΠΏΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΠΌ Π² ΠΏΡΠΎΡΠ»ΠΎΠΌ ΠΈΠ»ΠΈ ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ»ΡΡΠ°Π»ΠΈ ΡΠΆΠ°ΡΠ½ΡΠ΅ ΠΈΡΡΠΎΡΠΈΠΈ. Π ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ JavaScript, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ
ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Β«ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΉΒ» ΠΊΠΎΠ΄ (ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Π·ΡΠ²Π°ΡΡ Β«ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌΒ»), ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄: ΠΌΡ Ρ
ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ WebAssembly ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ· JavaScript. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ npm
(ΡΡΠΎ ... Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π»Π΅Π³ΠΊΠΎ!).
Π― Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΠΈΠ·-Π·Π° ΠΎΡΠ·ΡΠ²ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² Twitter, Hacker News, Reddit ΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΡ . ΠΠΏΡΡΡ ΠΆΠ΅, ΠΌΠΎΠΆΠ΅Ρ Ρ ΠΎΡΠΈΠ±Π°ΡΡΡ ΠΈ ΡΠ»ΡΡΠ°Ρ ΡΡ ΠΎ-ΠΊΠ°ΠΌΠ΅ΡΡ. ΠΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ, Ρ ΠΌΠ΅Π½Ρ Π±ΡΠ»ΠΈ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Π΅ΡΠ°ΡΡΠΈΠ΅ Π΄ΠΈΡΠΊΡΡΡΠΈΠΈ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΡ Ρ Π»ΡΠ΄ΡΠΌΠΈ, Π²Π»Π°Π΄Π΅ΡΡΠΈΠΌΠΈ C ++, Π° ΡΠ°ΠΊΠΆΠ΅ JavaScript.
Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ TC39 Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΡΠ°Π΅ΡΡΡ ΡΠ»ΡΡΡΠΈΡΡ JavaScript. Π― ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π³ΠΎΠ΄Ρ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Ρ ES6.
ΠΠΎ Π²Π°ΡΠ° ΡΠΎΡΠΊΠ° Π·ΡΠ΅Π½ΠΈΡ ΠΎΡΡΠ°Π΅ΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΉ: Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π·Π°Ρ ΠΎΡΡΡ Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ Π² JavaScript, Π° ΡΠ°ΠΊΠΆΠ΅ Π² Π±ΠΎΠ»Π΅Π΅ Β«Π΄ΡΡΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΠΊ WebAssemblyΒ» ΡΠ·ΡΠΊΠ°Ρ , ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ C ++ ΠΈΠ»ΠΈ Rust. Π― Π½Π΅ Π·Π½Π°Ρ, ΠΊΠ°ΠΊ Π²ΡΠ΅ ΠΏΠΎΠΉΠ΄Π΅Ρ.
ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«WebAssemblyΒ»?
Π₯Π°! ΠΠ°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ. Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π΄ΠΎΠΊΠ»Π°Π΄ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«WebAssembly: Π½ΠΈ Web, Π½ΠΈ AssemblyΒ». ΠΡΠΈΠ΄Π΅ΡΡΡ ΠΎΠ³Π»Π°ΡΠΈΡΡ ΡΡΠΎ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ Ρ ΠΌΠΎΠ³ Π²ΡΡΠ°Π·ΠΈΡΡ ΡΠ²ΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊ Π½Π°Π·Π²Π°Π½ΠΈΡ: grin:
Π’Π°ΠΊ ΡΡΠΎ Ρ Π±ΡΠ΄Ρ Π΄Π΅ΡΠΆΠ°ΡΡ ΡΠ΅Π±Ρ Π² ΡΡΠΊΠ°Ρ .
Π§ΠΈΡΠ°Ρ Π·Π΄Π΅ΡΡ Π΄Π²Π° ΠΆΠ΅Π»Π°Π½ΠΈΡ:
ΠΡΠ½ΠΊΡ 2 ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΎΠΌ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ ΠΊΡΡΠΏΠ½ΡΡ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΈΠΉ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ. ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄Π²ΠΈΠΆΠΊΠΎΠ² JavaScript Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ 15 Π»Π΅Ρ, ΠΎΠ½ΠΈ ΡΠΎΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ... ΡΠ°Π·ΡΡΠ² ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΡΠ΅ ΠΌΠ΅Π½ΡΡΠ΅.
ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΠΏΡΠ½ΠΊΡ 1 Π½ΠΈΠΊΠ΅ΠΌ Π½Π΅ ΠΏΡΠΎΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ. ΠΡΠΎ ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ, ΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΡΠ΅ ΡΡΡΠ΄Π½Π΅Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ JavaScript ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ Π±ΡΡΡΡΡΠΌΠΈ ΡΠ΅ΠΌΠΏΠ°ΠΌΠΈ. WebAssembly ΠΎΡΠ΅Π½Ρ ΡΡΡΠΎΠ³ΠΈΠΉ ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΡΠΉ, ΠΈ Π½Π° Π΅Π³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΡΡΠ»ΠΈ Π³ΠΎΠ΄Ρ.
@jfbastien - Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π·Π²Π΅ΡΠ΅Π½Π½ΡΠΉ ΠΈ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ :)
ΠΡΠ°ΠΊ, ΠΏΠ°ΡΠ° ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅:
1) Π₯ΠΎΡΠΎΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ Π²ΠΈΠΆΡ ΠΈΠ· Π²ΡΠ΅Π³ΠΎ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΈ ΠΌΠΎΠ΅Π³ΠΎ Π²Π·Π³Π»ΡΠ΄Π° Π½Π° Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ, ΡΠ²ΡΠ·Π°Π½ Ρ NodeJS - JS API / ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ C ++ - Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ / Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²Π° ΠΈ Ρ. Π. Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ Ρ Π΄ΡΡΠ³ΠΎΠΉ.
2) ΠΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡ Node, Π΅ΡΠ΅ Π² 2008 Π³ΠΎΠ΄Ρ, ΠΊΠΎΠ³Π΄Π° Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΠ»ΡΡ Π² ΡΠ²ΠΎΡ Π»ΠΈΡΠ½ΡΡ ΠΎΠ΄ΠΈΡΡΠ΅Ρ ;-) ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π» ΠΊΠ°ΠΊ PHP, ΡΠ°ΠΊ ΠΈ Java Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ (Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π»ΡΡ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΠΎΡΠ»Π΅ Π΄Π΅ΡΡΡΠΈΠ»Π΅ΡΠΈΡ, ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° ΡΠ΅ΠΌΠ½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Π΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΠ’. ΠΈ ΠΏΡΠΎΠ΄Π°ΠΆΠΈ ;-)!) Π½ΠΎ Ρ Π±ΡΡΡΡΠΎ ΠΎΡΠΊΠ°Π·Π°Π»ΡΡ ΠΎΡ Π½ΠΈΡ
ΠΏΠΎ ΡΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅, ΡΡΠΎ Ρ Ρ
ΠΎΡΠ΅Π» Π²ΡΡΡΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ·ΡΠΊ, ΠΈ Π²ΡΡΡΠΈΡΡ Π΅Π³ΠΎ Ρ
ΠΎΡΠΎΡΠΎ! ΠΡΠΎ Π»ΠΈΡΠ½Π°Ρ ΠΈΡΡΠΎΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Ρ Π·Π½Π°Ρ, Π½ΠΎ Ρ ΡΠΎΠΌΠ½Π΅Π²Π°ΡΡΡ, ΡΡΠΎ Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΠΊ Π΄ΡΠΌΠ°Π΅Ρ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠ΅, ΠΊΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΡΠ΅Π±Ρ, Π° Π½Π΅ Π½Π° ΠΊΠΎΠΏΠ΅ΠΉΠΊΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ ΠΈΠ·ΡΡΠ°ΡΡ ΡΠ·ΡΠΊ.
3) Π― Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎ Π½Π΅ Π³ΡΠ³Π»ΠΈΠ» ΡΠΈΡΠ»Π°, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π²ΡΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠ²ΠΎΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΌΠ½Π΅Π½ΠΈΠ΅ (Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΡΠΌΠΎΠ³Ρ Π»ΠΈ Ρ Π²ΠΎΠΎΠ±ΡΠ΅), Π½ΠΎ Π³ΠΎΡΠΎΠ² ΠΏΠΎΡΠΏΠΎΡΠΈΡΡ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ASM Π±ΡΠ»ΠΎ Π½ΠΈΠ·ΠΊΠΈΠΌ. Π― Π·Π½Π°Ρ, ΡΡΠΎ Π±ΡΠ» ΠΎΡΠ΅Π½Ρ Π²Π·Π²ΠΎΠ»Π½ΠΎΠ²Π°Π½, ΠΊΠΎΠ³Π΄Π° ΡΠ²ΠΈΠ΄Π΅Π» Π½Π°ΡΠ°Π»ΡΠ½ΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ, Π½ΠΎ, ΡΠ·Π½Π°Π², ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π½Π΅ Π±ΡΠ»ΠΎ, Ρ ΡΡΠ°Π·Ρ ΠΆΠ΅ ΠΎΡΠΊΠ°Π·Π°Π»ΡΡ ΠΎΡ Π½Π΅Π΅. ΠΠΎΠΏΡΠΎΡΠΈΡΡ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ ΠΊΡΡΠΏΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π½Π° ΠΏΠ»Π°Π½Π΅ΡΠ΅ (JS) Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ API-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΡΠ΅ΡΡΡΡΠΎΠ², ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ², ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² ΠΈ Ρ. Π., ΠΠΎΡΡΡΠΏΠ½ΡΡ
Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅, ΠΎΡΠΎΠΉΡΠΈ ΠΎΡ ΡΡΠΎΠ³ΠΎ, Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠ³ΠΎ, ΠΈ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡ ΠΈΠΌ ΡΡΠ΅Π΄ΡΡΠ² ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π³ (Ρ. Π΅. ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ), ΡΠΏΡΡΠΊΠ°Π΅Ρ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΉ ΡΡΡΠΊ Ρ Π²Π°ΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Ρ. Π― Π±Ρ Π΄Π°ΠΆΠ΅ Π·Π°ΡΠ΅Π» ΡΠ°ΠΊ Π΄Π°Π»Π΅ΠΊΠΎ, ΡΡΠΎ ΠΏΠΎΡΠΏΠΎΡΠΈΠ», ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Shading langage (GLSL) Π²ΡΡΠΎΡΠ»Π° Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ASM, ΡΠ΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅: Π°) Π·Π°ΠΏΠΈΡΠ°ΡΡ Π΅Π³ΠΎ ΠΏΡΡΠΌΠΎ Π² ΠΎΡΠ»ΠΈΡΠ½ΡΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Pixi.js ΠΈ Three.js, ΠΈ Π±) ΠΏΠΎΠΈΠ³ΡΠ°ΡΡ Ρ Π½ΠΈΠΌ. ΠΏΡΡΠΌΠΎ Π½Π° ΡΠ°ΠΊΠΈΡ
ΡΠ°ΠΉΡΠ°Ρ
, ΠΊΠ°ΠΊ ShaderToy .
4) ΠΠ³ΡΠΎΠ²Π°Ρ ΠΈΠ½Π΄ΡΡΡΡΠΈΡ / ΠΈΠ³ΡΡ Π² ΡΠ΅Π»ΠΎΠΌ. Π― ΠΌΠΎΠ³Ρ ΡΠΊΠ°Π·Π°ΡΡ Π·Π΄Π΅ΡΡ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ ΠΎΠΏΡΡΡ: Π°) Ρ ΠΏΠΈΡΠ°Π» (Π΅ΡΠ΅ Π½Π΅ Π²ΡΠΏΡΡΠ΅Π½Π½ΡΠ΅!) ΠΠ³ΡΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ
9 Π»Π΅Ρ ΠΈ Π±) Ρ ΡΠ°Π±ΠΎΡΠ°Π» Π² ΡΠΎΠ²Π΅ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΎΠ² TIGA (ΡΠΎΡΠ³ΠΎΠ²Π°Ρ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈΠ³Ρ Π² ΠΠ΅Π»ΠΈΠΊΠΎΠ±ΡΠΈΡΠ°Π½ΠΈΠΈ) Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ 2 Π»Π΅Ρ. ΠΠΎΠ²Π΅ΡΡΡΠ΅ ΠΌΠ½Π΅, Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈΠ³Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ
ΠΎΡΠ΅Π»ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠΎΡΡΠΈΡΠ°ΡΡ ΠΏΠΎ ΠΏΠ°Π»ΡΡΠ°ΠΌ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΊΠΈ - ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈΠ³Ρ ΡΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠΎΠΉ ΠΈΠ½Π΄ΡΡΡΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ΠΈ Π»ΡΠ±ΡΡ, ΠΈ, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΡΠΎ, Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°ΡΠ°Π±ΠΎΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΡ / ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄ΠΎΠ»Π³ΠΈΠ΅ ΡΠ°ΡΡ, ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ΅Π»Π΅Π²ΠΎΠΉ Π°ΡΠ΄ΠΈΡΠΎΡΠΈΠ΅ΠΉ WA. ΠΠ°, ΠΈΡ
ΡΠ°Π±ΠΎΡΠΎΠ΄Π°ΡΠ΅Π»ΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΈΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ΅Π΄Ρ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° ΡΠ²ΠΎΠΈΡ
ΠΈΠ³Ρ, Π½ΠΎ Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΠΎΠ±ΠΌΠ°Π½ΡΠ²Π°ΡΡ ΡΠ°ΠΌΠΈΡ
ΡΠ΅Π±Ρ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ
ΡΡΡΡΠΎΠΉΡΡΠ² (Π³Π΄Π΅ Π½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ΄, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π²ΡΠΈΠ³ΡΡΠ²Π°Π΅Ρ, ΠΈ ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Ρ Ρ
ΠΎΡΡ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ WASM), ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π² Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΠΏΠ»ΠΎΡ
ΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΠ / ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΊΠ°ΠΊ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΡΠ°ΠΊ ΠΈ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΠΈ.
5) Π Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, Ρ
ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠΏΠ°Π»ΡΠ½Π΅ / ΠΈΠ½Π΄ΠΈ-ΡΡΠ΅Π½Π° Π΅ΡΠ΅ Π½Π΅ Π΄ΠΎΡΡΠΈΠ³Π»Π° Π·Π΅Π½ΠΈΡΠ°, ΠΊΠ°ΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ Π½Π°Π·Π°Π΄, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Ρ
ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²Π΅Π±-ΠΈΠ³ΡΡ Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. Π Ρ
ΠΎΡΡ Ρ Π½Π΅ Ρ
ΠΎΡΡ ΠΎΡΠΊΡΡΡΠΎ Π²ΠΌΠ΅ΡΠΈΠ²Π°ΡΡΡΡ Π² ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ ΠΈ Π½ΠΈΠΊΠΎΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π΅ ΡΠ±ΠΈΠ²Π°Ρ Ρ ΡΠΎΠ»ΠΊΡ ΡΠ΅Π±ΡΡ ΠΈΠ· Unity (Ρ ΠΈΠΌΠ΅Π» Π΄Π΅Π»ΠΎ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΈΠ· Π½ΠΈΡ
, ΠΈ ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ), Π»ΠΈΡΠ½ΠΎ Ρ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΎΠ± ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ°Ρ
Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ
ΠΏΠ°ΡΠ½Π΅ΠΉ, Π° Π½Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ½Ρ (ΡΡΠΎ ΠΈΠΌΠ΅Π΅Ρ ΠΊΠ°ΠΊ ΡΠΈΠ»ΠΎΡΠΎΡΡΠΊΠΈΠΉ, ΡΠ°ΠΊ ΠΈ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΠΉ ΡΠΌΡΡΠ»).
Π― Ρ Π½Π΅ΡΠ΅ΡΠΏΠ΅Π½ΠΈΠ΅ΠΌ ΠΆΠ΄Ρ Π²Π°ΡΠ΅Π³ΠΎ Π²ΡΡΡΡΠΏΠ»Π΅Π½ΠΈΡ @jfbastien :)
@RyanLamansky - Π― Π΄ΡΠΌΠ°Ρ, Π²Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅ ΡΠ°Π·ΡΠΌΠ½ΠΎΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅. Π ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ:
ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΠΏΡΠ½ΠΊΡ 1 Π½ΠΈΠΊΠ΅ΠΌ Π½Π΅ ΠΏΡΠΎΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ. ΠΡΠΎ ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ, ΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΡΠ΅ ΡΡΡΠ΄Π½Π΅Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ JavaScript ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ Π±ΡΡΡΡΡΠΌΠΈ ΡΠ΅ΠΌΠΏΠ°ΠΌΠΈ.
ΠΠ° ΡΡΠ³ΡΠ±ΠΎ Π»ΠΈΡΠ½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅, ΠΊΠ°ΠΊ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΈΡΠ΅Ρ JS ΠΏΠΎ 8 ΡΠ°ΡΠΎΠ² Π² Π΄Π΅Π½Ρ Ρ 2008 Π³ΠΎΠ΄Π°, Ρ Π±Ρ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠ΅Π», ΡΡΠΎΠ±Ρ ΡΠ²ΠΎΠ»ΡΡΠΈΡ JS ΠΏΡΠΎΡΡΠΎ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ»Π°ΡΡ Π½Π° Π²ΡΠ΅ΠΌΡ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° Π²ΡΠ΅ΠΌ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌ Π½Π°Π²Π΅ΡΡΡΠ°ΡΡ ΡΠΏΡΡΠ΅Π½Π½ΠΎΠ΅! Π― Π²ΡΠ΅Π³Π΄Π° ΡΠ°Π±ΠΎΡΠ°Π» ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π»Ρ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ Π·Π½Π°ΠΌΠ΅Π½Π°ΡΠ΅Π»Ρ, Ρ.Π΅. Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ 100% ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ, ΡΡΠΎΠ³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ (ΠΊΡΠΎΠΌΠ΅ IE6 / 7/8/9 ;-)). Π ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΡΡ Π² Π½Π΅Π»Π΅ΠΏΠΎΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΡΠΎΡΡΠ΅Π΄ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΡΡ Π½Π° ΠΌΠΎΠ΄Π½ΡΡ ΡΠ°Π±Π»ΠΎΠ½Π°Ρ ES6 ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π΄Π°ΠΆΠ΅ Π½Π΅Ρ 100% ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ ES5 Π΄Π»Ρ Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ² ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ². Π―Π·ΡΠΊ ΡΠ²Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ Π΅ΡΡΡ (Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° Π΅Π³ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ), ΠΎ ΡΠ΅ΠΌ ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²ΡΠ΅Ρ Π΅Π³ΠΎ ΡΡΠ½ΠΎΡΠ½Π°Ρ Π΄ΠΎΠ»Ρ, ΡΠ°ΠΊ ΡΡΠΎ ΠΊΠ°ΠΊ Π½Π°ΡΡΠ΅Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΌΡ, ΠΊΠ°ΠΊ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΏΠΎΡΡΠ°ΡΠΈΠ»ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ Π½Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ, ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ, Π° Π½Π΅ Π² ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΡΠ°Π· Π·Π°Π½ΠΎΠ²ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ°Ρ ΠΊΠΎΠ»Π΅ΡΠΎ Ρ Π½ΠΎΠ²ΡΠΌ Ρ ΠΈΠΏΡΡΠ΅ΡΡΠΊΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ (ΠΈΠ·Π²ΠΈΠ½ΠΈΡΠ΅, Ρ ΠΏΠΎΠΏΠ°Π» Π½Π° ΡΠ΅ΡΡΠΈΡΠΎΡΠΈΡ ΡΠ°Π·Π³Π»Π°Π³ΠΎΠ»ΡΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ;-))?
ΠΡΠΌΠ°Ρ, ΠΏΠΎΡΠ° ΠΌΠ½Π΅ Π½Π°Π΄Π΅ΡΡ ΠΏΠ°Π»ΡΡΠΎ ;-)
@RyanLamansky Π£ ΠΌΠ΅Π½Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΠ΅, ΡΡΠΎ WebAssembly Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΡΠΎ Π½ΠΎΠ²ΠΎΠΉ ΡΠ΅Π»ΡΡ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΈ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ Π²ΡΠ΅ ΡΡΠ°Π½Π΅Ρ Π±ΡΡΡΡΠ΅Π΅. Π―ΡΠ½ΠΎ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ. WebAssembly ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΠ΅Π½Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠ΅Π»Π΅Π²ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ ΡΠΈΠΏΠΈΡΠ½ΠΎΠΌΡ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ Π±Π°Π·ΠΎΠΉ ΠΊΠΎΠ΄Π° JS, ΠΏΠΎΠ»Π½ΠΎΠΉ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΈ.
ΠΠΎ, ΠΊΠ°ΠΊ Π²Ρ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ, Π² ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠΌ ΡΠΈΠΊΠ»Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ JS Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ±Π΅Π»Ρ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΠΏΠΈΡΠ½ΡΡ
Π±ΠΈΠ·Π½Π΅Ρ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ:
1) ΠΠΎΠ»ΡΡΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ JS ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ
ΠΎΠ΄Ρ Π½Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΈ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΡ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΡ.
2) Π ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ JS ΠΎΡΡΡΡΡΡΠ²ΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠΈΠΏΠΎΠ² (ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ), Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° JIT / Native.
ΠΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ - ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΈ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ JS, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠ΅ ΠΏΡΡΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ ΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ·ΡΠΊΠ°.
Π ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°Ρ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ, ΡΡΠΎ WASM ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΠΌΠΈΠΌΠΎ JS ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΡ ΠΆΠ΅ Π΄Π²ΠΈΠΆΠΎΠΊ JS Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ² (ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ). https://developer.mozilla.org/en-US/docs/WebAssembly
Π― Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ ΡΡΠΎΠ³ΠΎ Π²ΠΎΠΏΡΠΎΡΠ°.
ΠΠ·Π²ΠΈΠ½ΠΈΡΠ΅, ΡΡΠΎ Π·Π°Π΄Π°Ρ Π³Π»ΡΠΏΡΠΉ Π²ΠΎΠΏΡΠΎΡ ΠΈ Π΄Π΅Π»Π°Ρ Π³Π»ΡΠΏΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ: ΠΎΠ·Π½Π°ΡΠ°ΡΡ Π»ΠΈ Π²ΠΎΠΏΡΠΎΡ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Webassembly, ΡΡΠΎ Webassembly is FASTER than Javascript? I do not see performance comparison for WebAssembly Code and similar Javascript Code?
Π― Π²ΠΈΠΆΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΌΡΡΠ»ΠΈ. ΠΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ? ΠΡΠ»ΠΈ Webasembly Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ Javascript, ΠΏΠΎΡΠ΅ΠΌΡ Π±Ρ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΡΠ°Π½ΡΠΏΠΈΠ»ΡΡΠΎΡ? ΠΡΠ»ΠΈ Javascript Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½, ΠΏΠΎΡΠ΅ΠΌΡ Π±Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ ES7 / TS? ΠΠΎΡΠ΅ΠΌΡ Π²ΠΎΠΊΡΡΠ³ ΡΡΠΎΠ³ΠΎ ΡΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΎΡΡΠΈ?
@ganeshkbhat ΠΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΠΉ Π²ΡΠΏΡΡΠΊ WASM ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ asm.js, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΡΡΠΎΠ³ΠΈΠΌ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ JavaScript. ΠΠ½ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ asm.js, Π΅ΡΠ»ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ 64-Π±ΠΈΡΠ½ΡΠ΅ ΡΠ΅Π»ΡΠ΅ ΡΠΈΡΠ»Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°Π½Ρ Π² asm.js.
ΠΡΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² WASM ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΡΡ Π΅Π³ΠΎ ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌ ΠΊ JavaScript (ΡΠ±ΠΎΡΠΊΠ° ΠΌΡΡΠΎΡΠ°, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ DOM, ΠΏΠΎΡΠΎΠΊΠΈ), Π½ΠΎ Π½Π΅Ρ ΠΏΠ»Π°Π½ΠΎΠ² ΠΏΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° ΡΡΠ½ΠΊΡΠΈΠΉ JavaScript. Π’Π°ΠΊ ΡΡΠΎ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΡΡΠ°Π½ΡΠΏΠΈΠ»ΡΡΠΎΡΠ° JS-> WASM Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π±ΡΠ΄ΡΡ ΡΠΎΠ·Π΄Π°Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ WASM. Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΡΡΠΎ C ΠΈ C ++, Π³Π΄Π΅ ΡΠ·ΡΠΊΠΎΠ²ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Ρ ΠΎΡΠΎΡΠΎ ΡΠΎΠ³Π»Π°ΡΡΡΡΡΡ Ρ WASM ΠΈ asm.js.
ΠΠ΅Ρ Π½ΠΈ ΡΠ΅ΠΊΡΠ΅ΡΠ°, Π½ΠΈ Π²ΠΎΠ»ΡΠ΅Π±ΡΡΠ²Π°. Wasm Β«Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ JavaScriptΒ», ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ·ΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±Π»ΠΈΠΆΠ΅ ΠΊ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ. JavaScript - ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΡΠ·ΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Π»Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΠΎΠ³ΠΎΡΡΠΎΡΡΠΈΡ Π²Π΅ΡΠ΅ΠΉ. ΠΠ½ Π½Π΅ ΡΡΠ°Π» Π±Ρ Π²ΠΎΠ»ΡΠ΅Π±Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π±ΡΡΡΡΠ΅Π΅, Π΅ΡΠ»ΠΈ Π±Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠ΅ΡΠ΅Π· Wasm, Π° Π½Π΅ Π½Π°ΠΏΡΡΠΌΡΡ.
@ganeshkbhat Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π²Π½ΡΡΡΠΈ asm.js / webassembly. Π asm.js ΠΈ webassembly Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ JavaScript Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΠΏΠΎΠ² Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² JavaScript (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, var obj = {a: 1, b: 'test'}
) ΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, var a = [];
) Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Π½ΡΡΡΠΈ Π²Π΅Π±-ΡΠ±ΠΎΡΠΊΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΅ΡΠ΅ Π½Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΡΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΡΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Minimal Viable Product, ΡΠ΄Π΅Π»Π°Π½Π½ΠΎΠ΅ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΡΠ΅Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π²Π΅Π±-ΡΠ±ΠΎΡΠΊΠΈ Π²ΠΎ Π²ΡΠ΅Ρ
ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ
.
Π Π²Π΅ΡΡΠΈΠΈ Π±ΡΠ΄ΡΡΠ΅Π³ΠΎ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° GC ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ webassembly. ΠΡ (ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ LeaningTech.com ) ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Π½Π°Π΄ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² Π²Π΅Π±-ΡΠ±ΠΎΡΠΊΠ΅, Π½ΠΎ ΡΡΠΎ Π·Π°ΠΉΠΌΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΠΎ Π²ΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ . ΠΠΎ ΡΠ΅Ρ ΠΏΠΎΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ JavaScript (Π° ΡΠ°ΠΊΠΆΠ΅ CoffeeScript, TypeScript ΠΈ Ρ. Π.) Π Π²Π΅Π±-ΡΠ±ΠΎΡΠΊΡ. ΠΠΎΠ³Π΄Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ½ΡΡΠΎ, ΠΏΠΎΡΠ²ΠΈΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠ°Π½ΡΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅Π΅ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ JavaScript , Π½ΠΎ ΠΎΠ½ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ
ΠΠΎΠ½Π΅ΡΠ½ΠΎ. ΠΠ°Π΄Π΅Π΅ΠΌΡΡ Π½Π° Π»ΡΡΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ JS Π·Π΄Π΅ΡΡ. Π― ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ ΡΡΠ²ΡΡΠ²ΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°ΡΡ. ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ°Π½ΡΠΏΠΈΠ»ΡΡΠΎΡΠ° - ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ Π΄Π»Ρ ΡΠ·ΡΠΊΠΎΠ², ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΡ ΡΠΈΠΏΡ.
ΠΠ· ΡΠΎΠ³ΠΎ, ΡΡΠΎ Ρ ΡΠΈΡΠ°Π» ΠΎ Π²Π΅Π±-ΡΠ±ΠΎΡΠΊΠ΅, ΠΎΠ½ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π½Π° Π²Π΅Π±-Π±ΡΠ°ΡΠ·Π΅ΡΡ, ΠΈ Π² ΡΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ js -> webassembly. ΠΠΎ Ρ ΠΌΠΎΠ³Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π·Π°ΠΏΡΡΠΊ Π²Π΅Π±-ΡΠ±ΠΎΡΠΊΠΈ Π² ΡΡΠ΅Π΄Π΅, ΠΎΡΠ»ΠΈΡΠ½ΠΎΠΉ ΠΎΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°. ΠΡΠΎ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ Π²Π΅ΡΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ in ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² nodejs, Π½ΠΎ Ρ Π²ΠΈΠΆΡ Π΅Π³ΠΎ ΠΈΡΡΠΈΠ½Π½ΡΠΉ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π» Π² ΡΡΠ΅Π΄Π°Ρ nodejs Π² ΡΠ΅ΠΌ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ vertx - polyglot, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅ΠΌ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½Π° Π»ΡΠ±ΠΎΠΌ ΡΠ·ΡΠΊΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Ρ Π² Π²Π΅Π±-ΡΠ±ΠΎΡΠΊΡ. ΠΠΎΠ³Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ, ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΠΊΡΠ°ΠΉΠ½Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π°ΠΆΠ΅ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π°, Π½ΠΎ Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ. ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ ΡΠΎΠΆΠ΅ ΡΠΊΠ΅ΠΏΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΠ½ΠΎΡΠΈΠ»ΠΈΡΡ ΠΊ asm.js, ΠΈ Π²Π·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° Π½Π΅Π³ΠΎ ΡΠ΅Π³ΠΎΠ΄Π½Ρ.
ΠΠ»Ρ Π²ΡΠ΅Ρ ΡΠ΅Ρ , ΠΊΡΠΎ (ΠΊΠ°ΠΊ ΠΈ Ρ) Π² Π²ΠΎΡΡΠΎΡΠ³Π΅ ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ js -> webassembly, Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠΎΡΠ²Π΅Π½Π½ΡΠΉ ΠΈ ΠΎΡΠ΅Π½Ρ ΡΡ Π°Π±ΠΈΡΡΡΠΉ ΠΏΡΡΡ ΡΠ΅ΡΠ΅Π· js -> c -> webassembly Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ°Π½ΡΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°
@ mauron85 Π‘ΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±Π΅Π· Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΈ Π±Π΅Π· JavaScript, Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ, ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΎΠΌ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ Π΄ΠΈΠ·Π°ΠΉΠ½Π°, ΠΏΡΠΎΡΡΠΎ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ JS API.
Π‘ΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Ρ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π» Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ .NET JIT ΠΈ Π½Π΅ Π²ΠΈΠΆΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΠΈΠΉ, ΠΊΡΠΎΠΌΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΈ Ρ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ Π΅ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ WASM Π² ΡΠ²ΠΎΠΈ Π»ΡΠ±ΠΈΠΌΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. Π― ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΡΠ΅ΡΠ΅Π· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ Π΄Π»Ρ WebAssembly ΠΏΠΎΡΠ²ΡΡΡΡ Π²ΡΡΠΎΠΊΠΎΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΎΡΠ»ΠΈΡΠ½ΡΠ΅ ΠΎΡ JavaScript, Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΎΡΠΊΡΡΡΡΠΉ Π²ΠΎΠΏΡΠΎΡ - Π² ΠΊΠ°ΠΊΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ WebAssembly.
IMO ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ JavaScript -> WebAssembly
Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ / ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Javascript, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΠΌΠΎΠ³ΡΡ Π²ΡΠΏΡΡΡΠΈΡΡ ΡΠ²ΠΎΠΈ API Π² Π΄Π²ΡΡ
ΡΠΎΡΠΌΠ°ΡΠ°Ρ
:
Π ΡΡΠΎ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ JS Π½Π° C / C ++, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Ρ
ΠΎΡΡΡ ΡΠ°ΡΠΊΡΡΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ WASM Π² ΡΠ²ΠΎΠΈΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ
JS.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΠΌΠΎΠ³ΡΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π½Π° Javascript ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ Π΄Π²Π° Π²ΡΠ²ΠΎΠ΄Π° Π΄Π»Ρ Π΄Π²ΡΡ
ΡΠ°Π·Π½ΡΡ
ΡΠ΅Π»Π΅ΠΉ ΠΊΠ°ΠΊ Π½Π° JS, ΡΠ°ΠΊ ΠΈ Π½Π° WASM.
Π ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π²Π΅ΡΡΠΈΠΉ WASM ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠ΅, ΡΡΠΎ ΠΈΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΠΊΡΡΡΡΠΉ API ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΈ ΠΈΠΌ, ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, Π±ΡΠ΄Π΅Ρ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ, Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π»ΠΈ ΠΎΠ½ΠΎ Π½Π° WASM ΠΈΠ»ΠΈ Π½Π΅Ρ. ΠΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ, ΡΠ»ΡΡΡΠΈΡΡΡ.
WASM ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ
ΠΠΎΡΠ΅ΠΌΡ? ΠΠ°ΡΠ΅ΠΌ Π±ΡΠ»ΠΎ Π±Ρ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π²Π΅Π±-ΡΠ±ΠΎΡΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ javascript (Π½Π°ΠΈΡ ΡΠ΄ΡΠΈΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ, Π²ΠΊΠ»ΡΡΠ°Ρ Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° javascript Π² ΡΡΠΎΠΌ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅; Π»ΡΡΡΠΈΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠ»ΠΎΠΉ, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΏΠΎΠ²Π΅ΡΡ Π±ΡΠ΄ΡΡΠ΅Π³ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ wasm GC, ΠΊΠΎΡΠΎΡΡΠΉ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΡΠ΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ ) ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΡΡΠΎΡ javascript, Π±ΡΠΎΡΠ΅Π½Π½ΡΠΉ Π² jit, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΡΠΉ ... Π·Π°ΠΏΡΡΠΊΡ javascript?
Π₯ΠΎΡΠΎΡΠΎ, Π²Ρ ΠΈΠΌΠ΅Π΅ΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π΅ΡΠ΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠΌΠΈ ΡΠ°ΡΡ ΠΎΠ΄Π°ΠΌΠΈ?
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ ΡΠ΅Π³ΠΎ-ΡΠΎ Π½Π΅ ΠΏΠΎΠ½ΡΠ». ΠΠ°ΠΊ C/C++/Rust -> WebAssembly
ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½, ΠΈ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° JS -> WASM
, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ·ΠΎΠ²Π΅Ρ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ
ΠΎΠ΄Ρ? ΠΡΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ JS - ΡΡΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ, Π° C, C ++ ΠΈ Rust - Π½Π΅Ρ? ΠΠ»ΠΈ ΡΡΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ JS ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠΈΡΠΎΠ΄Π΅ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ
ΡΠ·ΡΠΊΠΎΠ²?
Π― ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ JS Π² WASM Π²ΡΡΠ΄ Π»ΠΈ ΠΏΠΎΠ²ΡΡΠΈΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ; ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΠ΄Π° ΠΈ Π²ΡΠ΅ΠΌΡ Π°Π½Π°Π»ΠΈΠ·Π° Π·Π° ΡΡΠ΅Ρ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ.
Π― Π΄ΡΠΌΠ°Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ Π΄Π»Ρ JS ΠΈ ΠΏΠΎΠΊΠ° ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΈ Ρ. Π. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ.
@kabirbaidhya ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ JS -> WASM ΠΏΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π²Π½ΡΡΡΠΈ Π½Π΅Π³ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ΅ΠΊ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΆΠΈΠ²Ρ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ ΠΊΠΎΠΏΠΈΡ Π²ΡΠ΅Ρ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ (ΠΊΡΡΠ΅) ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π΅Π΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ, ΡΡΠΎ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎ ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. Π Π½Π΅ΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΎΠ½ΠΎΠ²Π°Ρ ΡΠ±ΠΎΡΠΊΠ° ΠΌΡΡΠΎΡΠ° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°. Π Π±ΡΠ΄ΡΡΠΈΡ Π²Π΅ΡΡΠΈΡΡ WASM ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΡΡΠΎΡΠ° Ρ ΠΎΡΡ-Π±ΡΠ°ΡΠ·Π΅ΡΠ°, ΡΡΠΎ ΡΡΡΡΠ°Π½ΠΈΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΡΡΠ³ΠΈΠΌ ΡΠ΅ΡΡΠ΅Π·Π½ΡΠΌ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΠΈΠ΅ΠΌ Π΄Π»Ρ JS -> WASM ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅. WASM ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΡΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ, ΡΡΠΎ Π²ΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΈΡΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ JS ΠΏΠΎΡΡΠ΅Π±ΡΡΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΠ»ΠΎΠΈ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΡΠΌΡΠ»ΡΡΠΈΡ ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π ΡΡΠ°ΡΡΡΡ, TypeScript ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π² ΡΡΠΎΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΡΠΎΠ³ΠΎΠ΅ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ TypeScript ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ Π½Π°ΡΠ΅Π»Π΅Π½ΠΎ Π½Π° WASM. Π― Π·Π½Π°Ρ, ΡΡΠΎ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΠΏΡΡΠ°Π΅ΡΡΡ ΡΡΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ.
C / C ++ Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΏΠ΅ΡΠ²ΡΠΌ Π²ΡΠΏΡΡΠΊΠΎΠΌ WASM ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ WASM ΡΠ΅ΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½Ρ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΡΠΈΡΠ°Π½ C / C ++.
FWIW Π΅ΡΡΡ ΠΎΡΠ»ΠΈΡΠ½Π°Ρ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ V8 ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΡ JavaScript: https://docs.google.com/presentation/d/1wZVIqJMODGFYggueQySdiA3tUYuHNMcyp_PndgXsO1Y/edit
tl; dr ΡΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ _one_ ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅, ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ, ΠΈ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½Π°Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° ΠΌΠΎΠΆΠ΅Ρ (ΠΈ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π±ΡΠ΄Π΅Ρ) Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°Π±ΠΎΡΡ Π»ΡΡΡΠ΅ ΠΈ Π±ΡΡΡΡΠ΅Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ΄Π½Π°Ρ ΠΈ ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΈ API wasm Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ - ΠΈ (Π²Π΅ΡΠΎΡΡΠ½ΠΎ) ΡΠ°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ - Π³ΠΎΠ΄Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ.
ΠΡΠΎ Π½Π΅ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ _subset_ JS / TypeScript Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ThinScript , TurboScript ΠΈ Ρ. Π. ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΠΎΡΠ΅Π½Ρ Π·Π½Π°ΠΊΠΎΠΌΡ JS-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ.
Π― Π²ΡΠ΅ Π΅ΡΠ΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΎ Ρ ΠΎΡΠΎΡΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ, ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ Π·Π°Π΄Π°Π²Π°ΡΡ ΠΈΡ . ΠΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΌΡ Π²ΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π»ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π±ΡΠ΄ΡΡΠ΅Π΅ WebAssembly, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΡΠ΅Π»ΠΈ.
6 Π°ΠΏΡΠ΅Π»Ρ 2017 Π³ΠΎΠ΄Π° Π² 00:36 Π Π°ΠΉΠ°Π½ ΠΠ°ΠΌΠ°Π½ΡΠΊΠΈ [email protected] Π½Π°ΠΏΠΈΡΠ°Π»:
ΠΡΡΠ³ΠΈΠΌ ΡΠ΅ΡΡΠ΅Π·Π½ΡΠΌ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΠΈΠ΅ΠΌ Π΄Π»Ρ JS -> WASM ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ
ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½Ρ. WASM ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΡΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ, ΡΡΠΎ Π²ΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΈΡΡΠΎ
ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅, ΡΠ°ΠΊ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΠ»ΠΎΠΈ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΡΠΌΡΠ»ΡΡΠΈΡ ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°
ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΡΡΡ ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ JS. Π ΡΡΠ°ΡΡΡΡ,
TypeScript ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π² ΡΡΠΎΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΡΠΎΠ³ΠΎΠ΅ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ TypeScript ΠΌΠΎΠΆΠ΅Ρ
Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ Π½Π°ΡΠ΅Π»Π΅Π½Ρ Π½Π° WASM. Π― Π·Π½Π°Ρ, ΡΡΠΎ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΠΏΡΡΠ°Π΅ΡΡΡ
ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΡΠΎ.Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Ρ ΡΠΎΠΌΠ½Π΅Π²Π°ΡΡΡ, ΡΡΠΎ TypeScript ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π² ΡΡΠΎΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ. ΠΡ Π²Π°ΡΠΈΡΡ
JS Π½Π°ΡΠ»Π΅Π΄ΠΈΠ΅, Π΅Π³ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΈΠΏΠΎΠ² Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π³Π»ΡΠ±ΠΎΠΊΠΎ ΠΈ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎ Π½Π΅ΡΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½Π°, ΡΡΠΎ
ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Β«ΡΡΡΠΎΠ³ΠΎΠ³ΠΎΒ» ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π½Π΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ
Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΏΠΎΠ½ΡΡΠΈΠ΅ TS ΠΎ ΠΏΠΎΠ΄ΡΠΈΠΏΠ°Ρ , ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π»ΠΎ Π±Ρ Π΅Π³ΠΎ ΠΊΡΠ°ΡΠΈΠ²ΡΠΌ
ΠΌΠ½ΠΎΠ³ΠΎ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ Π² ΡΠ²ΠΎΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ.
ΠΡΠ»ΠΈ Ρ
ΠΎΡΠΎΡΠΈΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎ SafeTypeScript, Π½ΠΎ Π½Π΅
ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ½ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ, ΠΎΠ½ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ΅Π±ΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π°
Π΄ΠΎΡΠΎΠ³ΠΎΡΡΠΎΡΡΠ°Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π±ΡΡ
Π³Π°Π»ΡΠ΅ΡΠΈΡ ΠΈ ΡΠ΅ΠΊΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π»ΠΈΡΠ°ΡΡΠ°Ρ ΡΠ΅Π»ΠΈ
ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ (ΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ·ΡΠΊ, ΡΠ΅ΠΌ JS / TS).
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ ΡΠ΅Π³ΠΎ-ΡΠΎ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, Π½ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΈΠ΄Π΅ΠΉ WebAssembly - Π½Π°ΠΏΡΡΠΌΡΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡ AST, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° js, Π²Π΅ΡΠ½ΠΎ?
ΠΡΠ°ΠΊ, Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ js Π² ΡΡΠΎΡ ΡΠΎΡΠΌΠ°Ρ ast ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π΅Π³ΠΎ Π±ΡΠ°ΡΠ·Π΅ΡΡ, ΡΠ°Π·Π²Π΅ ΠΎΠ½ Π½Π΅ Π²ΡΠΈΠ³ΡΠ°Π΅Ρ ΠΎΡ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·?
@agnivade , ΡΡΠΎ AST Π΄Π»Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ, Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°.
ΠΡΠ»ΠΈ Π±Ρ Π²Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π»ΠΈ JS Π² Wasm Π² Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, ΡΠΎ Π΄Π°, Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° (ΠΏΡΠΎΡΡΠΎ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ). Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ JS Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠΆΠ΅Π½, ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΠ΄Π° ΡΠ΅Π·ΠΊΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡΡ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π² 5 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π·, ΡΡΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΠΎΠΆΠ΅. (Π ΡΡΠΎ Π΄Π°ΠΆΠ΅ Π±Π΅Π· ΡΡΠ΅ΡΠ° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²Π°ΠΌ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΠΊΠ»ΡΡΠΈΡΡ Π² Wasm Π²ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ JS VM, ΠΊΠΎΡΠΎΡΠ°Ρ Π»Π΅Π³ΠΊΠΎ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ΅Π³Π°Π±Π°ΠΉΡΡ ΠΊΠΎΠ΄Π°.)
ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π±Π΅Π· ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠ΅ΡΠ°ΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ JS. ΠΡΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ Π΅Π³ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ. Π£ΠΆΠ΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Wasm AST Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠΎΠ³ΠΎ, Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ AST ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
@ rossberg-chromium - ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ. ΠΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΠΏΡΠΎΡΡΠ½ΡΠ΅Ρ! Π₯ΠΎΡΡ ΠΎΠ΄Π½ΠΎ ΡΠΎΠΌΠ½Π΅Π½ΠΈΠ΅ -
Π ΡΡΠΎ Π΄Π°ΠΆΠ΅ Π±Π΅Π· ΡΡΠ΅ΡΠ° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²Π°ΠΌ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ»Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ JS VM Π² Wasm, ΠΊΠΎΡΠΎΡΠ°Ρ Π»Π΅Π³ΠΊΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΌΠ΅Π³Π°Π±Π°ΠΉΡΡ ΠΊΠΎΠ΄Π°.
ΠΠ°ΡΠ΅ΠΌ Π²Π°ΠΌ Π½ΡΠΆΠ½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½? Π Π°Π·Π²Π΅ ΡΠ°ΠΌ Π±ΡΠ°ΡΠ·Π΅Ρ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ΅Π΄ΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ? Π― ΠΏΡΠΎΡΡΠΎ Ρ ΠΎΡΡ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠ΄ Π±ΡΠ» Π² ΡΠΎΡΠΌΠ°ΡΠ΅ AST, ΡΡΠΎΠ±Ρ Π±ΡΠ°ΡΠ·Π΅Ρ ΠΌΠΎΠ³ Π»Π΅Π³ΠΊΠΎ Π½Π°ΡΠ°ΡΡ Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ. Π― ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΡΡΠΎ ΡΠΈΡΡΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°ΠΌ ΡΠ·ΡΠΊ ΡΠ»ΠΎΠΆΠ΅Π½, ΠΈ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ. ΠΠΎ Π·Π°ΡΠ΅ΠΌ Π½Π°ΠΌ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡ ΡΠ°ΠΌΡ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ, Π΅ΡΠ»ΠΈ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ Π±ΡΠ°ΡΠ·Π΅Ρ?
@agnivade , Π±Π΅Π· Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ JavaScript Π±ΡΠ΄Π΅Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΌ, Ρ ΠΈΠΌΠ΅Ρ Π² Π²ΠΈΠ΄Ρ
ΠΠΎΠ΄ Β«ΡΡΠ΅Π΄ΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡΒ» Ρ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Ρ Π½Π΅ ΡΠ°ΠΊΠΈΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΡΠ΅ Π²Π΅ΡΠΈ, ΠΊΠ°ΠΊ DOM, Π° ΠΏΡΠΎΡΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠ·ΡΠΊΠ° JS, ΡΠΎ Π΅ΡΡΡ ΡΠ°ΠΊΠΈΠ΅ Π²Π΅ΡΠΈ, ΠΊΠ°ΠΊ ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ ΠΈ Π±Π°Π·ΠΎΠ²ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ Ρ. Π. ΠΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π»Ρ JavaScript, ΠΈ Π²Ρ Π±Ρ Π½ΡΠΆΠ½ΠΎ Π·Π°Π½ΠΎΠ²ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΡΡΠΎ Π²Π½ΡΡΡΠΈ Wasm.
Π, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, Π²Π°ΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΡΠΎΠ²Π΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄Π»Ρ DOM.
Π₯ΠΎΡΠΎΡΠΎ, Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ Π²Π΅ΡΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡΡΡΠ΅. Π― Π΄ΡΠΌΠ°Π», ΡΡΠΎ
ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ ΠΈ Π±Π°Π·ΠΎΠ²ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ Ρ. Π΄.
ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ· ΡΠ°ΠΌΠΎΠ³ΠΎ Π±ΡΠ°ΡΠ·Π΅ΡΠ°. Π Ρ ΠΌΠΎΠ³Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡ AST ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ²ΠΎΡ ΠΎΠ±ΡΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ. ΠΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΡΡΠΎ Π²ΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ Π²Π½ΡΡΡΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ WASM.
ΠΠ°ΠΉΡ-ΠΊΠΎΠ΄ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² Π±ΡΠ» Π±Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½! Π¦Π΅Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½Π°Ρ Π΄Π»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΡΠΎ ΡΠ±ΠΎΡΠΊΠΎΠΉ ΠΌΡΡΠΎΡΠ°, ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΏΡΠΈΡΡΠ΄Π»ΠΈΠ²ΡΠΌΠΈ ΠΊΡΠ°ΠΉΠ½ΠΈΠΌΠΈ ΡΠ»ΡΡΠ°ΡΠΌΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΈΠ· Π½ΠΈΡ (javascript, ruby, python, lua), ΠΏΠΎΠΊΡΡΡΡΠΌΠΈ (Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ) ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΊΠΎΠ΄Π°ΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΈ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ ΠΈ Ρ. Π.
@distransient , Π·Π½Π°ΡΠΈΡ, Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π΅Π·ΡΠΌΠΈΡ Π²ΡΠ΅Ρ ΡΠ·ΡΠΊΠΎΠ² ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π²? Π― ΠΎΠΏΡΠΈΠΌΠΈΡΡΠΈΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠ΅Π½, ΡΡΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΡΠ²ΠΎ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ±ΡΠ°ΡΡ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ ΠΊ 2050 Π³ΠΎΠ΄Ρ. :)
Π’Π΅ΠΌ, ΠΊΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ TypeScript Π² WebAssembly Ρ ΠΏΠΎΠΌΠΎΡΡΡ LLVM. ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ ΡΡΠΈΠΌ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ. https://github.com/MichaReiser/speedy.js
ΠΠΎΡ
ΠΎΠΆΠ΅, ΡΡΠ° Π΄ΠΈΡΠΊΡΡΡΠΈΡ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡ ...
@ rossberg-chromium Π― ΡΠΊΠ°Π·Π°Π», ΡΡΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ "ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ", Π½Π΅ΠΏΡΠΎΡΡΠΎ ΠΈΠ»ΠΈ ΠΊΡΠ°ΡΠΈΠ²ΠΎ π
ΠΠ°ΠΉΡ-ΠΊΠΎΠ΄ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² Π±ΡΠ» Π±Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ ...
Π₯ΠΎΡΡ WASM ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ, ΡΡΠΎΠ±Ρ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°ΡΡ ΡΠ°ΠΊΠΈΠ΅ Π²Π΅ΡΠΈ, ΠΊΠ°ΠΊ Python, ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΊΠ»Π°ΡΡΠ½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ·ΡΠΊΠΎΠ² ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² Π΄Π»Ρ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° Π³ΠΎΡΠ°Π·Π΄ΠΎ ΡΠ°Π½ΡΡΠ΅, ΡΠ΅ΠΌ WASM ΡΠΌΠΎΠΆΠ΅Ρ Π΅Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ, Π΅ΡΠ»ΠΈ Π±Ρ ΠΌΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΠ»ΠΈ ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ Ρ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ.
ΠΠ»Ρ Π΄Π²ΠΈΠΆΠΊΠΎΠ² JavaScript Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ AST JavaScript, Π° ΠΏΡΠΈΠ½ΡΡΡΠ΅ ΠΈΠΌΠΈ AST ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ (Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΡΠ°Π·Ρ ΠΆΠ΅ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΡΡΡΡ Π² Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ Π²Π½ΡΡΡΠ΅Π½Π½Π΅).
ΠΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΡΠΎΡΠΌΠ°Ρ AST (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, estree
) ΠΈ ΡΠΎΡΠΌΠ°Ρ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, JSON), ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΎΡΠΌΠ°Ρ ΡΠ°ΠΉΠ»Π° Ρ Π½ΠΎΠ²ΡΠΌ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ. ΠΡΠ»ΠΈ Π±Ρ Π±ΡΠ°ΡΠ·Π΅ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π»ΠΈ ΡΠΎΡΠΌΠ°Ρ Π² ΡΠ΅Π³Π°Ρ
ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΈ Ρ. Π., Π’ΠΎ ΡΠ°ΠΊΠΈΠ΅ ΡΠ·ΡΠΊΠΈ, ΠΊΠ°ΠΊ TypeScript ΠΈ CoffeeScript, ΠΏΡΠΎΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π»ΠΈ Π±Ρ Π΄Π»Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π΅ΡΠ΅Π²ΡΠ΅Π², ΠΈ Π±ΡΠ°ΡΠ·Π΅Ρ Π±ΡΠ°Π» Π±Ρ Π΅Π³ΠΎ ΠΎΡΡΡΠ΄Π°. Π’ΡΠ°Π½ΡΠ»ΠΈΡΡΠ΅ΠΌΡΠΌ ΡΠ·ΡΠΊΠ°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄, ΠΈ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ°ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»ΠΈΡΡ Π±Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π±ΡΠ»Π° Π±Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ΅.
ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π±Π°Π·ΠΎΠ²Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π°, ΡΡΠ°Π½Π΄Π°ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ, ΡΡΠΎΠ±Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ WASM Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅, ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠΈΠΏΡ ΡΠ·Π»ΠΎΠ². ΠΠ°ΡΠ°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΡΠΎΡΡΡΡ
Π²Π΅ΡΠ΅ΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ²Π½ΡΡ
ΡΠ·Π»ΠΎΠ² add
ΠΈ concat
ΠΈΠ»ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ
ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ
, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ DEC64.
ΠΠΎ ΠΌΠ΅ΡΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ WASM ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ Π΄ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠ·ΡΠΊΠΎΠ² ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π², ΠΏΡΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ°ΠΊΠΈΡ Π²Π΅ΡΠ΅ΠΉ, ΠΊΠ°ΠΊ ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ°, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ AST Π±ΡΠ΄Π΅Ρ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ Π²Π½ΠΈΠ·, ΡΠ°ΡΡΠΈΡΡΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ JavaScript Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΠΈΠΉ Π½Π°Π±ΠΎΡ ΡΠ·ΡΠΊΠΎΠ² ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² ΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ΄Π° Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ JavaScript .
25 ΠΌΠ°Ρ 2017 Π³ΠΎΠ΄Π° Π² 02:57 ΠΠ°ΡΠ» Π‘ΠΌΠΈΡ [email protected] Π½Π°ΠΏΠΈΡΠ°Π»:
>
ΠΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅ΡΠΈΡΡ, Π½ΠΎ ΡΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ
ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π΄Π»Ρ Π΄Π²ΠΈΠΆΠΊΠΎΠ² JavaScript ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ²ΠΎΡ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ
Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ AST JavaScript, ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡΠ΅ AST Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ
ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΎΠ²Π°Π½ (Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ AST ΡΡΠ°Π·Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ Π² Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ,
ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡ Π²Π½ΡΡΡΠΈ).
Π’ΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΠΌΠΈΠ½Π° "ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠΉ", ΡΠ΅ΠΌ Π²Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ,
ΠΈΠΌΠ΅ΡΡ Π² Π²ΠΈΠ΄Ρ... ;)
ΠΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ WASM Π²ΡΠ΅ ΠΏΡΠΎΡΡΠΎ.
@bguiz ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠ²ΠΈΠΆΠΎΠΊ Google V8 ΡΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ JavaScript Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π² Π²ΡΡ Π·Π°Π΄Π°ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ Π΅Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π±ΡΠ»ΠΎ Π±Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ WASM ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, WASM Π±ΡΠ» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠ΅ΠΉ ΠΠ°Π½Π΄Π΅Π»ΡΠ±ΡΠΎΡΠ°, Π° Π·Π°ΡΠ΅ΠΌ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ Unity "Tanks", Π½ΠΎ Ρ ΠΎΡΠ΅Π½Ρ ΡΠΎΠΌΠ½Π΅Π²Π°ΡΡΡ, ΡΡΠΎ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ASM-> CPU (Π΄Π°ΠΆΠ΅ Ρ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΡΡ SSE) ΠΌΠΎΠ³Π»ΠΎ Π±Ρ Π±ΡΡΡ Π±ΡΡΡΡΠ΅Π΅. ΡΠ΅ΠΌ WebGL-> GPU, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ, ΠΊΠ°ΠΊ Π·Π°ΡΠ²Π»ΡΠ΅Ρ ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ, GPU Π½Π΅ Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΡΡΠ΅ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ. Π ΡΡΠΎ?
@ivanherczeg ΠΠ³ΠΎ ! ΠΠ΄Π΅ ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ, ΡΡΠΎ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ?
@SephReed
Π£ Π½Π°Ρ ΡΠΆΠ΅ Π΅ΡΡΡ ΡΠ°Π·Π½ΠΎΠ³Π»Π°ΡΠΈΡ ΠΈΠ·-Π·Π° ΡΠ°Π·Π»ΠΈΡΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ARM ΠΈ x86. Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ ΡΠ΅Π»Π΅ΠΉ Π²ΡΠ·ΠΎΠ²Π΅Ρ Π±ΠΎΠ»ΡΡΡΡ Π½Π°ΠΏΡΡΠΆΠ΅Π½Π½ΠΎΡΡΡ: Π±ΠΎΠ»ΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π»ΠΈΠ±ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΌ ΠΈΠ·-Π·Π° Π·Π°ΡΡΠ°Ρ Π½Π° ΡΠΌΡΠ»ΡΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ΅Π»Π΅ΠΉ, Π»ΠΈΠ±ΠΎ Π±ΠΎΠ»ΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ Π²ΡΠ΅ ΠΌΠΎΠ³Π»ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±ΡΡΡΡΠΎ. ΠΡΠΌΠ°Ρ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π½Π΅Π²ΡΠ³ΠΎΠ΄Π½ΡΠΌ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ GPU Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ (ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ).
-Π€ΠΈΠ»
https://github.com/WebAssembly/design/issues/273#issuecomment -123094583
Π‘ΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ C # Π±ΡΠ»Π° ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ΅Π½Π° Π½Π° wasm ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ»Π° ΡΠΎΠ±ΠΎΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠΎΡΠΈΠΏ, ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π·Π°ΠΌΠ΅Π½ΡΡΡΠΈΠΉ JS. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΆΠΈΠ΄Π°ΡΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΌΠ΅Π½ΡΡ JS Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ ΠΈ Π½Π°ΠΏΠΈΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Java, C # ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ C ++ Ρ Π·Π°ΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ: Β«ΠΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ Π½Π°ΡΠΈΠ²Π½ΡΠΉΒ» , Β«Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π°Β». ΠΈΠ»ΠΈ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π΅ΡΠ΅ Π±Π΅Π· ΠΏΠΎΠΌΠΎΡΠΈ JavaScript.
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΡΠΎ Π²ΠΈΠ΄Π΅ΠΎ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Ρ ΠΏΡΡΠ°ΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ.
WebASM Π±ΡΠ» Π²Π²Π΅Π΄Π΅Π½ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊ JS, Π° Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ, Π·Π°ΠΌΠ΅Π½ΠΈΠ² ΡΠ·ΡΠΊ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°.
Π Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅ΠΌ Π±ΡΠ΄ΡΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΆΠΈΠ΄Π°ΡΡ, ΡΡΠΎ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ Π±ΡΠ΄ΡΡ Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Ρ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ.
@Steakeye ΠΡΠ΅Π½Ρ ΠΌΠΈΠ»ΠΎ :) Π―
Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ JS Π² WebAssembly Ρ ΠΏΠΎΠΌΠΎΡΡΡ NectarJS. ΠΠ΅ΠΌΠΎ: http://nectar-lang.com/ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΈΠ· ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡΠ΅Π³ΠΎΡΡ ΡΠΏΠΈΡΠΊΠ° WebAssembly
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΡΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ NectarJS ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ emscripten, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΡΠΎ Π² Π²ΡΠ²ΠΎΠ΄Π΅ asm.js. ΠΠΎΡ ΠΎΠΆΠ΅, ΠΎΠ½ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ JS Π²ΠΎ ΡΡΠΎ-ΡΠΎ - Π²Π΅ΡΠΎΡΡΠ½ΠΎ, C ΠΈΠ»ΠΈ LLVM IR - Π° Π·Π°ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΡΡΠΎ ΡΠ΅ΡΠ΅Π· emscripten.
Π Π²ΡΠ²ΠΎΠ΄Π΅ wasm ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ emscripten (ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΏΡΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°), Π½ΠΎ ΠΎΠ½, ΠΏΠΎΡ ΠΎΠΆΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠ°ΡΡΡ Π²Π΅ΡΡΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΡΠΏΡΡΠΊΠ°Π΅Ρ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ wasm 0xd, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Π°Ρ . ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π²Π°ΠΌ wasm, Π° Π½Π΅ JS, ΡΠ°ΠΊ ΡΡΠΎ ΠΎΠ½ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ. Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ ΠΎΠ½ ΠΏΡΠΎΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ Π΄Π»Ρ asm.js, ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ emscripten Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ ΡΠ»Π°Π³ΠΎΠΌ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° wasm.
ΠΠ΅ΠΌΠΎ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²Ρ ΠΎΠ΄ Π² 300 Π±Π°ΠΉΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΡΠ΄Π½ΠΎ ΡΠΊΠΎΡΠΌΠΈΡΡ Π΅ΠΌΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΡΠ²ΡΡΠ²ΠΎΠ²Π°ΡΡ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΡΠ½ΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡ Π°Π½Π°Π»ΠΈΠ·, ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΠΌ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ ΠΏΡΠΈ ΡΠ°ΠΊΠΎΠΌ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅. Π ΡΠ΅Π»ΠΎΠΌ Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅ Π²Π½ΡΡΠ°ΡΡ ΡΠΊΠ΅ΠΏΡΠΈΡΠΈΠ·ΠΌ.
ΠΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π΅ΠΌΠΎΠ²Π΅ΡΡΠΈΠΈ Π΄Π»Ρ Windows ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ°ΡΡΡ Π΄Π»Ρ ΠΌΠ΅Π½Ρ π€
Π― ΡΠΎΠ³Π»Π°ΡΠ΅Π½ ΡΠΎ ΡΠΊΠ΅ΠΏΡΠΈΡΠΈΠ·ΠΌΠΎΠΌ @kripken Π·Π΄Π΅ΡΡ. Π― ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ JS Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² WebAssembly. ΠΡΠ±ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΏΡΠ΅ΡΠ΅Π½Π΄ΡΡΡΠΈΠΉ Π½Π° Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π°Π΄ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΡΠ·ΡΠΊΠ° JS ΠΈΠ»ΠΈ ΠΎΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΎΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
JS - ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΡΠΉ ΡΠ·ΡΠΊ. ΠΠ΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ ΠΊΠΎΠ΄Π°. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ΅ΠΆΠ°ΡΡΠΈΠΉ (ΠΈΠ»ΠΈ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠΉ) ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΡ Ρ ΡΠ΄ΡΠ΅Π΅ ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠ΅Π½Ρ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΎΠ±ΡΠΈΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π²ΠΎΠ·ΡΠΌΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ JS-ΠΊΠΎΠ΄:
var a = {prop1: 1};
func(a);
ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ (Π² ΠΏΡΠ΅Π²Π΄ΠΎ-ΠΈΠ·ΠΌΠ°) Π² ΡΡΠΎΡ
i32.const 42
call $CreateJSValFromStrTable ;; Returns prop1
i32.const 1
call $CreateJSValFromInt
call $CreateJSObj1 ;; Consume a JS string and a JS value to make an object
call $_func
ΠΡΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΡΠΎΡ Π²ΡΠ·ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Ρ ΠΏΠΎΠ»Π½ΡΠΌ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠΈΡΠ°ΡΡ Β«ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠ΅ΠΉΒ», ΠΈ ΠΎΠ½ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ JS-ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π΄Π»Ρ Wasm, Π½ΠΎ ΡΡΠΎ Π²ΡΡΠ΄ Π»ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π²ΡΠΈΠ³ΡΡΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
JS-Π΄Π²ΠΈΠΆΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ V8 ΠΈ Spidermonkey, ΠΌΠΎΠ³ΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ JS-ΠΊΠΎΠ΄ ΡΠ°ΠΊ ΠΆΠ΅ Π±ΡΡΡΡΠΎ, ΠΊΠ°ΠΊ ΠΈ ΠΏΡΠΈ Π΅Π³ΠΎ ΡΠ²ΠΎΠ΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΡΠΏΠΎΠ»Π½ΡΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π½Π°Π±Π»ΡΠ΄Π°ΡΡ, ΠΊΠ°ΠΊΠΎΠ²Π° ΡΠ΅Π°Π»ΡΠ½Π°Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΠ°Ρ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ° Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ° JS, ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π±ΡΡΡΡΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ, ΠΏΡΠΈ ΡΡΠΎΠΌ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΏΡΠΎΡΠ²Π»ΡΡ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ Π»ΡΠ±ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΡΠ΅Π΄Π΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΠ΅ΠΊΡΡΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΎ. ΠΠ΄Π½Π°ΠΊΠΎ Ρ Π±Ρ Π½Π΅ ΠΏΡΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ JavaScript. ΠΠ»ΠΈ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΠ½ΠΈΠ·ΠΈΡ Π΄ΠΈΠ½Π°ΠΌΠΈΠ·ΠΌ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ΄.
ΠΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ Π½ΠΎΠ²ΠΎΡΡΠΈ ΠΏΠΎ ΡΡΠΎΠ½ΡΡ "ΡΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ°", ΠΊΡΡΠ°ΡΠΈ?
@ Simran-B, ΠΌΡ Π΄Π°Π²Π½ΠΎ ΠΎΡΠΊΠ°Π·Π°Π»ΠΈΡΡ ΠΎΡ ΡΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ° ΠΏΠΎ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ, ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌ Π·Π΄Π΅ΡΡ . ΠΡΠ²ΠΎΠ΄ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠΆΠ΅ΡΡΠΎΡΠΈΡΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ JavaScript Π±Π΅Π· ΠΏΠΎΡΠ΅ΡΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
ΠΠΎ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΈΡΠΈΠ½Π΅ Ρ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅Ρ ΠΎΡΠΎΠ±ΡΡ Π½Π°Π΄Π΅ΠΆΠ΄ Π½Π° ΠΈΠ΄Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Β«ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎΒ» Π΄ΠΈΠ°Π»Π΅ΠΊΡΠ° JavaScript ΠΈΠ»ΠΈ TypeScript - ΡΡΠΎ Π±ΡΠ» Π±Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ·ΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄, ΡΠ°ΠΊ ΡΡΠΎ ΠΎΡΠΎΠ±ΠΎΠ³ΠΎ ΡΠΌΡΡΠ»Π° Π½Π΅Ρ.
@ Simran-B: Β«Π― Π±Ρ Π½Π΅ ΠΎΡΠΊΠ°Π·Π°Π»ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ JavaScript. ΠΠ»ΠΈ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½ΡΒ»
Π ΡΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΡΠ°Π±ΠΎΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ AssemblyScript, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠΎΠ³ΠΈΠΌ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ TypeScript, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² WebAssembly, https://github.com/AssemblyScript/assemblyscript
@rossberg : Β«Π― ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ ΠΎΡΠ΅Π½Ρ Π½Π°Π΄Π΅ΡΡΡ Π½Π° ΠΈΠ΄Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈΒ« ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ Β»Π΄ΠΈΠ°Π»Π΅ΠΊΡΠ° JavaScript ΠΈΠ»ΠΈ TypeScript - ΡΡΠΎ Π±ΡΠ» Π±Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ·ΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄, ΡΠ°ΠΊ ΡΡΠΎ ΠΎΡΠΎΠ±ΠΎΠ³ΠΎ ΡΠΌΡΡΠ»Π° Π½Π΅ΡΒ».
Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π» ΡΠ°ΠΊΠΈΡ Π²Π΅ΡΠ΅ΠΉ, ΠΊΠ°ΠΊ AssemblyScript, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π½Π΅ Π² Π·Π°ΠΏΡΡΠΊΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° (Ρ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ Ρ Π²Π°ΠΌΠΈ Π² ΡΡΠΎΠΌ, ΡΡΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ), Π° Π² ΡΠΎΠΌ, ΡΡΠΎ Π½Π°Π»ΠΈΡΠΈΠ΅ Π΄ΡΡΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈ Π·Π½Π°ΠΊΠΎΠΌΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° - ΡΡΠΎ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ Π΄Π΅Π»ΠΎ.
ΠΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ TypeScript ΠΈ Ρ ΠΎΡΠΈΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ WebAssembly, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ C ++ ΠΈΠ»ΠΈ Rust. ΠΠ±Π° ΡΠ²Π»ΡΡΡΡΡ Ρ ΠΎΡΠΎΡΠΈΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ, Π½ΠΎ Ρ Π½ΠΈΡ Π΅ΡΡΡ ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ. ΠΠ»Ρ ΠΊΠΎΠ³ΠΎ-ΡΠΎ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΎΠΏΡΡΠΎΠΌ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ AssemblyScript ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΠΌΡΠΌ Π±ΡΡΡΡΡΠΌ ΠΏΡΡΠ΅ΠΌ ΠΊ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ.
ΠΡΠ»ΠΈ AssemblyScript ΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ Π² JavaScript, ΡΠ°ΠΊ ΠΈ Π² ΡΠ±ΠΎΡΠΊΡ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ. Π‘ Π½Π΅ΡΠ΅ΡΠΏΠ΅Π½ΠΈΠ΅ΠΌ ΠΆΠ΄Ρ ΡΡΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ, Π΅ΡΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ Π½Π΅ ΡΠ΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΌ, Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΏΠΎΠΏΡΠΎΠ±ΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ½Π²Π΅ΡΡΠ΅Ρ TypeScript -> Assembly Script, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΡΠ°ΠΉΠ»Ρ, Π·Π°Π΄Π°Π΅Ρ Π²ΠΎΠΏΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π΄Π°ΡΡ, Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅. ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ!
@SephReed ΠΠ°, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² JavaScript, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ WebAssembly -> asm.js , ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎ Π²ΡΠ΅ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ WebAssembly.
Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅ Β«ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ WebAssembly Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠ»Π»Π°ΠΌΠΈ?Β»
ΠΡΠ»ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π²Ρ ΠΈΠΌΠ΅Π»ΠΈ Π² Π²ΠΈΠ΄Ρ Β«Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π΄Π»Ρ AssemblyScript ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ΄ΠΈΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ΄ JavaScript?Β», Π’ΠΎΠ³Π΄Π° Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΏΡΠΎΡΠΈΡΡ, Π·Π°ΡΠ΅ΠΌ Π²Π°ΠΌ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° WebAssembly / asm.js Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΠΈΠ΄ΠΈΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ΄ JavaScript?
Π₯ΠΎΡΡ Ρ ΠΏΠΎΠ»Π°Π³Π°Ρ, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΊΠΎΠ΄ AssemblyScript ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ TypeScript. ΠΠ΄Π½Π°ΠΊΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π²Π΅ΡΠ°Ρ .
Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΡ ΡΠ°Π·Π΄Π΅Π» Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ AssemblyScript.
WALT
, ΡΠ·ΡΠΊ WebAssembly, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ JavaScript.UPD. ΠΠ·Π²ΠΈΠ½ΠΈΡΠ΅ Π·Π° Π½Π΅ΠΊΡΠΎΠΏΠΎΡΡΠΈΠ½Π³
Π― Π²ΠΈΠΆΡ, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ ΡΡΠΈΡΠ°ΡΡ ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ "JS -> WASM" Ρ ΠΎΡΠΎΡΠ΅ΠΉ ΠΈΠ΄Π΅Π΅ΠΉ.
ΠΠ»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Π½Π΅ ΡΡΠΈΡΠ°Π΅Ρ ΡΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠ΄Π½Π°ΠΊΠΎ Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ, Π½ΠΎ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ. Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ JS-Π΄Π²ΠΈΠΆΠΎΠΊ Π² wasm Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠΈΡΡΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π²ΠΎΡ ΠΌΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ³ΠΎ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π²Ρ "ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ°, Π½ΠΎ ΡΡΠΎ Π²ΡΠ΅". ΠΠ΄Π½Π° ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΉ WebAssembly:
WebAssembly - ΡΡΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ Ρ ΠΎΡΠΎΡΡΡ ΡΡΠ°ΡΡΡ ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π°Ρ ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Figma .
Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ. ΠΠ°ΠΌ Π½ΡΠΆΠ΅Π½ Ρ ΠΎΡΠΎΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄. ΠΠ°ΠΌ Π½ΡΠΆΠ½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΡΡΠ΅Π΄Π°, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π°Ρ.
WebAssembly Π΄Π°Π΅Ρ Π²Π°ΠΌ ΡΡΠΎ - ΡΠΈΡΡΡΡ ΡΡΠ΅Π΄Ρ Π±Π΅Π· Π±Π΅ΡΠΏΠΎΡΡΠ΄ΠΊΠ°, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ. AssemblyScript Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΌ - Ρ Π²Π°Ρ ΠΏΠΎΡΡΠΈ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΡΡΠ΅Π΄Π° TypeScript, ΡΡΠΎ ΠΈ ΡΡΠ΅Π΄Π° Π²Π°ΡΠ΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΊΡΡΡΠΎ.
ΠΠΎ Π²ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Β«ΠΏΠΎΡΡΠΈ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅Β»:
ΠΠ΅Ρ.
Π§ΡΠΎ ΠΆ, ΡΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ WALT - ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ΄Π° Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° AssemblyScript. ΠΡΠΎ ΠΏΠΎΡΡΠΈ Π½Π΅ JS, Π° ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ js. ΠΡΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° TS-like. ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ / ΡΡΠ°Π½ΡΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ js Ρ ΡΡΠΈΠΌ.
ΠΠ΅Ρ.
AssemblyScript - ΡΡΠΎ ΡΠΎΠΆΠ΅ TS-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠ·ΡΠΊ. ΠΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎ-ΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π½Π° TS, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠΊΡΡΡΠΎ ΡΠΈΠΏΠ°ΠΌΠΈ. ΠΠ΅Π· ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ. ΠΠΈΠΊΠ°ΠΊΠΈΡ
any
. ΠΠΎ ΡΠ°ΡΡΠΎ Ρ Π»ΡΠ΄Π΅ΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΡΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΈΠ»ΠΈ Ρ Π½ΠΈΡ
Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ @ts-ignore
, ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΡΠ°ΡΠ΅ - ΠΎΠ½ΠΈ ΠΏΠΈΡΡΡ ΠΏΠ°ΠΊΠ΅Ρ Π½Π° js ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠΈΠΏΡ Π² ΡΠ°ΠΉΠ»Π°Ρ
.d.ts
- Π²ΠΎ Π²ΡΠ΅Ρ
ΡΡΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
Π²Ρ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ Π² WASM.
@JerryGreen - Ρ ΠΎΡΠΎΡΠΈΠ΅
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΠ΅Π°Π»ΡΠ½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΡΠ°ΡΡΠ°ΠΏΠ° , ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΎΡΠΈΡ ΠΏΠΎΠ»ΡΠ·Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅ΠΌ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°ΠΌ. ΠΠ°ΠΆΠ΅ΡΡΡ, ΠΌΠ°Π»ΠΎ ΠΊΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ WebAssembly Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΡΡΡΠ΅Π΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ° (Π½Π° Π±Π°ΠΉΡ), ΡΡΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄ΠΈΡ Π»ΡΠ±ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, gzip Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ, ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ JavaScript, Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΌΠΈΡΠ΅ ΠΌΠ°Π»ΠΎ Π²Π»ΠΈΡΠ΅Ρ Π½Π° PLT - Π²Π°ΠΆΠ΅Π½ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° .
ΠΠΎ ΠΈΡΠΎΠ½ΠΈΠΈ ΡΡΠ΄ΡΠ±Ρ, ΠΈΠ½Π΄ΡΡΡΡΠΈΡ ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠ° PLT (Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡΡ) ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΠ°ΠΌΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ, Π½ΠΎ Π½ΠΈΠΊΡΠΎ Π½Π΅ Π²ΠΈΠ΄ΠΈΡ ΠΊΠΎΡΡΠ΅Π»ΡΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ WebAssembly ΠΈ ΡΡΠΈΠΌΠΈ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ? ΠΠ° JavaScript ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π±ΠΎΠ»Π΅Π΅ 30% Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π·Π°ΡΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π΄ΠΎ ΡΡΠΈΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ Π½Π° Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠ². Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠΏΡΡΠΊΠ½Π°Ρ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ Π²Π»ΠΈΡΡΡ Π½Π° PLT ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΌΠΈ ΡΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π·Π°ΠΏΡΡΠΊΠ° JavaScript ΠΈ Π·Π°Π΄Π΅ΡΠΆΠΊΠΎΠΉ.
Π‘ ΡΡΠ΅ΡΠΎΠΌ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ½Π΅ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ JS -> WebAssembly.
ΠΠΎΠ΄Ρ ΠΎΠ΄ @JerryGreen Figma ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ»ΡΡΠ°Π΅ΠΌ, ΠΈ Ρ Π΄ΡΠΌΠ°Ρ, Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² iframe ΠΈΠ»ΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Ρ ΠΎΡΠΎΡΠΈ Π΄Π»Ρ ΡΡΠΎΡΠΎΠ½Π½Π΅ΠΉ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ javascript. Π ΠΎΡΠΎΠ±ΡΡ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° ΠΈΠ·ΠΎΠ»ΡΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΠΌΠΎΠΉ, Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΡΠ°Π·ΠΌΠ΅Ρ ΠΈ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π΅ ΡΠ°ΠΊ Π²Π°ΠΆΠ½Ρ, Π²Ρ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ QuickJS ΠΈΠ»ΠΈ JavaScriptCore Π² WebAssembly.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Web Workers ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΊΠΎΠ΄ ΠΏΠ΅ΡΠ΅Π΄ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΄Π°Π»ΡΠ΅Ρ Π²ΡΠ΅ API, ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ Ρ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π² WASM @JerryGreen!
ΠΠ°Π΄Π΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠΎΡΡ ΠΊΠ°Π΄ΡΠΎΠ² Π² ΡΡΠ΅Ρ js Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ, Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΠΌΠΎΠΆΠ΅Ρ Π»ΠΈ wasm ΠΏΠΎΠΌΠΎΡΡ, Π½ΠΎ ΡΡΠΎ ΡΠΎΡΠ½ΠΎ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΠ°ΠΊ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄.
ΠΠ΅Ρ ΠΏΡΠΈΡΠΈΠ½ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ JS Π² wasm, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Π°ΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅Π»ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ javascript. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΌ ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΡΠ΅ΠΌ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½Π°Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° JS.
Π Π°Π·Π²Π΅ ΠΌΡ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π²ΡΡ ΠΌΠΎΠ½ΠΎΠΌΠΎΡΡΠΈΠ·Π°ΡΠΈΡ ΠΈ Ρ. Π., ΠΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΌΠ°ΡΠΈΠ½Π°ΠΌΠΈ JS, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅
Π‘Π±ΠΎΡΠΊΠ° PGO ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ ΡΡΠ°ΠΏΠΎΠ²: ΠΏΠ΅ΡΠ²ΡΠΉ ΡΡΠ°ΠΏ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², Π·Π°ΡΠ΅ΠΌ Π²ΡΠΎΡΠΎΠΉ ΡΡΠ°ΠΏ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΏΡΠΎΡΠΈΠ»Ρ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΠ΅ΡΠ²ΡΠΉ Π·Π°ΠΏΡΡΠΊ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡ Π½Π°ΠΌ Π²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΈΠΏΠ΅ (ΠΊΠ°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Ρ ΠΊΠ°ΠΊΠΈΠΌΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ Ρ. Π.), ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠ°ΠΌΠΈ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ (+ ΠΎΠ±ΡΠΈΠΉ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π΄Π»Ρ Π½Π΅ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°) . ΠΠ°ΠΌ Π½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π²ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° JS
PGO ΡΡΠ΅Π±ΠΎΠ²Π°Π» ΠΎΡΠ»ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠΊΡΡΡΠΈΡ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΈΠΏΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² v8. Π‘ΠΌ. ΠΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ: https://docs.google.com/document/d/1JY7pUCAk8gegyi6UkIdln6j_AeJqQucZg92advaMJY4/edit#heading = h.xgjl2srtytjt
ΠΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ TypeScript ΠΎΠ± ΡΡΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΈ ΠΎΠ½ΠΈ ΠΏΡΠΎΡΠ²ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ, Π½ΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡ Π² Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² JS.
ΠΠ΅ Π½ΡΠΆΠ½Ρ ΡΠΈΠΏΡ
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ QuickJS Π² WASM?
ΠΠ°, Figma, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ QuickJS Π΄Π»Ρ ΡΠ²ΠΎΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ².
Π ΠΎΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² http://numcalc.com/ .
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π― ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠ°Π» ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΈΠ³ΡΡΡΠ΅ΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌ: https://github.com/evanw/thinscript. ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π² ΡΡΠΈΠ»Π΅ TypeScript ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² WebAssembly. Π― ΠΏΠΎΠ΄ΡΠΌΠ°Π», ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ ΠΎΠ± ΡΡΠΎΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ. Π’Π°ΠΊΠΆΠ΅ Ρ Π±ΡΠ» ΠΏΡΠΈΡΡΠ½ΠΎ ΡΠ΄ΠΈΠ²Π»Π΅Π½ ΡΠ΅ΠΌ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Π³ΠΊΠΎ Π±ΡΠ»ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ WebAssembly. ΠΡΠ΅ΠΌ ΠΎΡΠ»ΠΈΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ!