Design: Π‘ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ компилятор JS -> WASM?

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 24 июн. 2015  Β·  93ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: WebAssembly/design

Π˜Π·ΡƒΡ‡ΠΈΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, я смог Π½Π°ΠΉΡ‚ΠΈ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΎ ΠΏΠΎΠ»ΠΈΡ„ΠΈΠ»Π»Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пСрСносит WASM -> JS. Π― Ρ‚Π°ΠΊΠΆΠ΅ смог Π½Π°ΠΉΡ‚ΠΈ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΎ компиляторС C ++ -> WASM.

Однако ΠΌΠ½Π΅ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ упоминания ΠΎ компиляторС JS -> WASM.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² свободно Π²Π»Π°Π΄Π΅ΡŽΡ‚ Javascript, поэтому компилятор JS -> WASM Π±Ρ‹Π» Π±Ρ‹ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ. Π’Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ захотят ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ свои Π²Π΅Π±-сайты с использованиСм Javascript вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡ… с использованиСм C ++. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, я Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½ΠΈ с MVP, Π½ΠΈ с Ρ€Π°Π·Π΄Π΅Π»Π°ΠΌΠΈ post-MVP, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ упоминаСтся компилятор JS -> WASM. Π§Ρ‚ΠΎ здСсь происходит?

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π― Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π°Π» ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΈΠ³Ρ€ΡƒΡˆΠ΅Ρ‡Π½Ρ‹ΠΌ языком программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ: https://github.com/evanw/thinscript. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ синтаксис Π² стилС TypeScript ΠΈ компилируСтся Π² WebAssembly. Π― ΠΏΠΎΠ΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΎΠ± этом, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ интСрСсный ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π’Π°ΠΊΠΆΠ΅ я Π±Ρ‹Π» приятно ΡƒΠ΄ΠΈΠ²Π»Π΅Π½ Ρ‚Π΅ΠΌ, насколько Π»Π΅Π³ΠΊΠΎ Π±Ρ‹Π»ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ WebAssembly. ВсСм ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹!

ВсС 93 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ 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
это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ?

W: http://bguiz.com

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
это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ?

W: http://bguiz.com

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:

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ я Π±ΡƒΠ΄Ρƒ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ тСбя Π² Ρ€ΡƒΠΊΠ°Ρ….

Π§ΠΈΡ‚Π°ΡŽ здСсь Π΄Π²Π° ТСлания:

  1. Π”Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ прСдставлСниС стандартного JavaScript для быстрой Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.
  2. Π§Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Ρ‚ΡŒ Ρ€Π°Π·Ρ€Ρ‹Π² Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ скомпилированным Π² исходном ΠΊΠΎΠ΄Π΅ C ++ ΠΈ стандартным JavaScript.

ΠŸΡƒΠ½ΠΊΡ‚ 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 Π² Π΄Π²ΡƒΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ…:

  1. Π² JS (ΠΊΠ°ΠΊ сСйчас), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² ΠΈ ΡƒΠ·Π»ΠΎΠ²
  2. WASM ΠΊΠ°ΠΊ скомпилированная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, которая ΠΌΠΎΠ³Π»Π° Π±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивной.

И это Π±Π΅Π· нСобходимости ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ 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 НапримСр:

  • Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ пСрСвСсти JS Π² ASM, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ.
  • Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ DOM ΠΈΠ· ASM, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρƒ вас Π½Π΅Ρ‚ доступа ΠΊ Π΅Π³ΠΎ рСсурсам Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ процСссора.

Π”Π²ΠΈΠΆΠΎΠΊ 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:

<= XXX Β« Π—ΠΠŸΠ˜Π‘ΠΠΠΠžΠ• ΠžΠšΠ Π£Π–Π•ΠΠ˜Π• Β» XXX =>

WebAssembly - это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π°Ρ… ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Figma .

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ систСму ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² довольно слоТно. Π’Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ способ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ собствСнный ΠΊΠΎΠ΄. Π’Π°ΠΌ Π½ΡƒΠΆΠ½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ срСда, бСзопасная.

WebAssembly Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ это - Ρ‡ΠΈΡΡ‚ΡƒΡŽ срСду Π±Π΅Π· бСспорядка, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ. AssemblyScript Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ смыслС ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ - Ρƒ вас ΠΏΠΎΡ‡Ρ‚ΠΈ такая ΠΆΠ΅ срСда TypeScript, Ρ‡Ρ‚ΠΎ ΠΈ срСда вашСго основного прилоТСния, Ρ‡Ρ‚ΠΎ довольно ΠΊΡ€ΡƒΡ‚ΠΎ.

Но Π²ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Β«ΠΏΠΎΡ‡Ρ‚ΠΈ такая ΠΆΠ΅Β»:

ΠœΠΎΠ³Ρƒ Π»ΠΈ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ JS ΠΈΠ· NPM Π² ΠΌΠΎΠ΅ΠΉ бСзопасной срСдС?

НСт.

Π§Ρ‚ΠΎ ΠΆ, этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ WALT - своСго Ρ€ΠΎΠ΄Π° Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° AssemblyScript. Π­Ρ‚ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ JS, Π° Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ js. Π­Ρ‚ΠΎ большС ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° TS-like. Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ / Ρ‚Ρ€Π°Π½ΡΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ js с этим.

ΠœΠΎΠ³Ρƒ Π»ΠΈ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ TS ΠΎΡ‚ NPM Π² ΠΌΠΎΠ΅ΠΉ бСзопасной срСдС?

НСт.

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/ .

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ

Π‘ΠΌΠ΅ΠΆΠ½Ρ‹Π΅ вопросы

chicoxyzzy picture chicoxyzzy  Β·  5ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

nikhedonia picture nikhedonia  Β·  7ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

dpw picture dpw  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

beriberikix picture beriberikix  Β·  7ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

badumt55 picture badumt55  Β·  8ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ