Перший випуск wasm3, швидкого інтерпретатора WebAssembly

доступний перший випуск wasm3, дуже швидкого інтерпретатора проміжного коду WebAssembly, головним чином розрахованого застосування для запуску WebAssembly-додатків на мікроконтролерах і платформах, для яких відсутня реалізація JIT для WebAssembly, недостатньо пам'яті для роботи JIT або не допускається створення сторінок пам'яті, необхідних для реалізації JIT. Код проекту написаний мовою Сі та поширюється під ліцензією MIT.

Wasm3 проходить тести на сумісність зі специфікацією WebAssembly 1.0 і може застосовуватися для запуску багатьох WASI-додатків, забезпечуючи продуктивність лише в 4-5 разів нижче за JIT-движки (зніміть, cranelift) і в 11.5 разів нижче за виконання нативного коду. У порівнянні з іншими інтерпретаторами WebAssembly (вак, життя, 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. Часто зустрічаються послідовності операцій для оптимізації перетворюються на зведені операції.

Додатково можна відзначити результати дослідження поширення
WebAsembly в Web. Проаналізувавши 948 тисяч найпопулярніших сайтів за рейтингом Alexa, дослідники з'ясували, що WebAssembly використовується на 1639 сайтах (0.17%), тобто. на 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

Додати коментар або відгук