първото издание , един от много бързите интерпретатори на междинен код WebAssembly, предимно проектиран да се използва за стартиране на WebAssembly приложения на микроконтролери и платформи, за които няма реализация на JIT за WebAssembly, недостатъчно памет за работа с JIT или не е позволено създаването на изпълними страници в паметта, необходими за реализиране на JIT. Кодът на проекта е написан на C и под лиценз MIT.
Wasm3 преминава в съответствие със спецификацията WebAssembly 1.0 и може да се използва за стартиране на много WASI приложения, осигурявайки производителност, която е само 4-5 пъти по-ниска от JIT двигателите (, ) и 11.5 пъти по-ниска от изпълнението на нативен код. В сравнение с другите интерпретатори на WebAssembly (, , ), wasm3 се оказа по-бърз с 15.8 пъти.
За работа с wasm3 е необходима 64Kb памет за код и 10Kb RAM, което позволява използването на проекта за изпълнение на компилирани приложения в 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).
Високата производителност се постига благодарение на използването в интерпретатора на техниката (M3), при която за намаляване на разходите за декодиране на байткод се извършва предварителен превод на байткода в по-ефективни операции, генериращи псевдо-машинен код, а моделът на изпълнение на стековата виртуална машина се трансформира в по-ефективен регистров подход. Операциите в M3 представляват C функции, аргументите на които са регистрите на виртуалната машина, които могат да бъдат отразени на регистрите на CPU. Често срещаните операции за оптимизация се преобразуват в обобщаващи операции.
Допълнително може да се отбележи разпространение
WebAssembly в уеба. Следвайки 948 хиляди от най-популярните сайтов по класирането на Alexa, изследователите установиха, че WebAssembly се използва на 1639 сайта (0.17%), т.е. на всеки 600 сайта. Общо на сайтовете са открити 1950 модула WebAssembly, от които 150 са уникални. При разглеждане на областите на употреба на WebAssembly бяха направени тревожни заключения — в над 50% от случаите WebAssembly е използван за злонамерени цели, като например за копаене на криптовалути (55.7%) и скриване на кода на злонамерени скриптове (0.2%). Сред легитимните приложения на WebAssembly са изпълнение на библиотеки (38.8%), създаване на игри (3.5%) и изпълнение на собствен код, написан не на JavaScript (0.9%). В 14.9% от случаите WebAssembly е използван за анализ на средата за идентификация на потребителя (fingerprinting).

Източник: opennet.ru
