ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ выпуск wasm3, быстрого ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° WebAssembly

ДоступСн ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ выпуск wasm3, ΠΎΡ‡Π΅Π½ΡŒ быстрого ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° WebAssembly, Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ рассчитанного Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ для запуска WebAssembly-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… отсутствуСт рСализация JIT для WebAssembly, нСдостаточно памяти для Ρ€Π°Π±ΠΎΡ‚Ρ‹ JIT ΠΈΠ»ΠΈ Π½Π΅ допускаСтся созданиС исполняСмых страниц памяти, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ JIT. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° написан Π½Π° языкС Π‘ΠΈ ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT.

Wasm3 ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ тСсты Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ со спСцификациСй WebAssembly 1.0 ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для запуска ΠΌΠ½ΠΎΠ³ΠΈΡ… WASI-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, обСспСчивая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ лишь Π² 4-5 Ρ€Π°Π· Π½ΠΈΠΆΠ΅ JIT-Π΄Π²ΠΈΠΆΠΊΠΎΠ² (liftoff, cranelift) ΠΈ Π² 11.5 Ρ€Π°Π· Π½ΠΈΠΆΠ΅ выполнСния Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠŸΡ€ΠΈ сравнСнии с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ WebAssembly (wac, life, wasm-micro-runtime), wasm3 оказался быстрСС Π² 15.8 Ρ€Π°Π·.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ wasm3 Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ 64Kb памяти для ΠΊΠΎΠ΄Π° ΠΈ 10Kb ΠžΠ—Π£, Ρ‡Ρ‚ΠΎ позволяСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ для выполнСния скомпилированных Π² WebAssembly ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Arduino MKR*, Arduino Due, Particle Photon, ESP8266, ESP32, Air602 (W600), nRF52, nRF51 Blue Pill (STM32F103C8T6), MXChip AZ3166 (EMW3166),
Maix (K210), HiFive1 (E310), Fomu (ICE40UP5K) ΠΈ ATmega1284, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° ΠΏΠ»Π°Ρ‚Π°Ρ… ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… Π½Π° Π±Π°Π·Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ x86, x64, ARM, MIPS, RISC-V ΠΈ Xtensa. Из ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Linux (Π² Ρ‚ΠΎΠΌ числС ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ Π½Π° основС OpenWRT), Windows, macOS, Android ΠΈ iOS. Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° компиляция wasm3 Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ WebAssembly для выполнСния ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΈΠ»ΠΈ для Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ запуска (self-hosting).

Высокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ достигаСтся благодаря ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Massey Meta Machine (M3), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ для сокращСния Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов Π½Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π° выполняСтся ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π°Ρ трансляция Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π° Π² Π±ΠΎΠ»Π΅Π΅ эффСктивныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ псСвдо-ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Π° модСль выполнСния стСковой Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ прСобразуСтся Π² Π±ΠΎΠ»Π΅Π΅ эффСктивный рСгистровый ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² M3 ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π‘ΠΈ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ рСгистры Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½Ρ‹ Π½Π° рСгистры CPU. Часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² сводныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ исслСдования распространСния
WebAssembly Π² Web. ΠŸΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π² 948 тысяч самых популярных сайтов ΠΏΠΎ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³Ρƒ Alexa, исслСдоватСли выяснили, Ρ‡Ρ‚ΠΎ WebAssembly ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π° 1639 сайтах (0.17%), Ρ‚.e. Π½Π° 1 ΠΈΠ· ΠΊΠ°ΠΆΠ΄Ρ‹Ρ… 600 сайтов. ВсСго Π½Π° сайтах выявлСна Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° 1950 ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ WebAssembly, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… 150 ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅. ΠŸΡ€ΠΈ рассмотрСнии области примСнСния WebAssembly Π±Ρ‹Π»ΠΈ сдСланы Π½Π΅ΡƒΡ‚Π΅ΡˆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²Ρ‹Π²ΠΎΠ΄Ρ‹ — Π² Π±ΠΎΠ»Π΅Π΅ 50% случаСв WebAssembly примСнялся Π²ΠΎ врСдоносных цСлях, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для ΠΌΠ°ΠΉΠ½ΠΈΠ½Π³Π° ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Π°Π»ΡŽΡ‚Ρ‹ (55.7%) ΠΈ скрытия ΠΊΠΎΠ΄Π° врСдоносных скриптов (0.2%). Из Π»Π΅Π³ΠΈΡ‚ΠΈΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ WebAssembly ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (38.8%), созданиС ΠΈΠ³Ρ€ (3.5%) ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ собствСнного ΠΊΠΎΠ΄Π°, написанного Π½Π΅ Π½Π° JavaScript (0.9%). Π’ 14.9% случаСв WebAssembly примСнялся для Π°Π½Π°Π»ΠΈΠ·Π° окруТСния для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (fingerprinting).

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ выпуск wasm3, быстрого ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° WebAssembly

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru