Първото издание на wasm3, бърз интерпретатор на WebAssembly

Достъпен първото издание wasm3, един от много бързите интерпретатори на междинен код WebAssembly, предимно проектиран да се използва за стартиране на WebAssembly приложения на микроконтролери и платформи, за които няма реализация на JIT за WebAssembly, недостатъчно памет за работа с JIT или не е позволено създаването на изпълними страници в паметта, необходими за реализиране на JIT. Кодът на проекта е написан на C и разпространява под лиценз 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 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).

Високата производителност се постига благодарение на използването в интерпретатора на техниката Massey Meta Machine (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).

Първото издание на wasm3, бърз интерпретатор на WebAssembly

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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster