В последнее время, выпущена первая версия wasm3, который переводчик очень быстрый промежуточный код от WebAssemblyПоскольку он предназначен в первую очередь для запуска приложений WebAssembly на микроконтроллерах и платформах, для которых нет реализации JIT для WebAssembly, не хватает памяти для работы JIT или создания исполняемых страниц памяти, необходимых для реализации JIT.
Тем, кто не знаком с WebAssembly, следует знать, что это язык низкого уровня, изначально задуман как целевой формат при компиляции из C и C ++, хотя он также поддерживает исходный код для других языков, таких как Rust и Go. Этот переносимый формат двоичного кода используется для полного выполнения скриптов из клиентского браузера.
О wasm3
Wasm3 проходит тесты на совместимость со спецификацией WebAssembly 1.0 и может использоваться для запуска многих приложений WASI, обеспечивая только в 4-5 раз меньшую производительность, чем JIT-движки, и в 11.5 раз меньше, чем выполнение собственного кода.
По сравнению с другими исполнителями из WebAssembly (wac, life, wasm-micro-runtime), wasm3 был в 15.8 раза быстрее.
Wasm3 начинался как исследовательский проект и продолжает им пользоваться. Оценка двигателя в различных средах является частью исследования. Поскольку у нас есть Lua, JS, Python, Lisp, (…), работающие на MCU, WebAssembly на самом деле является многообещающей альтернативой. Он обеспечивает полностью изолированную, четко определенную и предсказуемую среду. Среди практических вариантов использования мы можем перечислить передовые вычисления, сценарии, выполнение правил Интернета вещей, контракты на блокчейн и т. Д.
Васм3 требуется 64 КБ памяти для кода и 10 КБ ОЗУ, что ты позволяет использовать проект для запуска скомпилированных приложений в WebAssembly в микроконтроллерах, таких как Arduino MKR *, Arduino Due, Particle Photon, ESP8266, ESP32, Air602 (W600), nRF52, nRF51 Blue Pill (STM32F103C8T6), MXChip AZ3166 (EMW3166), Maix (K210), HiFive1 (E310), AT40ga а также на платах и компьютерах на основе архитектур x86, x64, ARM, MIPS, RISC-V и Xtens.
Высокая производительность достигается за счет использования техники Massey Meta Machine. (M3) в интерпретаторе, в котором, для уменьшения накладных расходов на декодирование байт-кода, байт-код активно переводится в более эффективных операциях, которые генерируют псевдомашинный код, и модель выполнения стековой виртуальной машины становится более эффективным регистровым подходом, операции в M3 - это функции C, аргументы которых являются регистрами виртуальной машины, которые могут быть отражены в ЦП регистры.
Частые рабочие процессы для оптимизации превращаются в сводные операции.
Кроме того, Результаты исследования можно увидеть на WebAssembly в Интернете. После анализа 948 тысяч самых популярных сайтов, оцененных Alexa, исследователи обнаружили, что WebAssembly используют 1639 сайтов (0.17%), что составляет 1 из 600 сайтов.
Всего на сайтах выявлена загрузка 1950 модулей WebAssembly, из которых 150 уникальных.
При рассмотрении объема WebAssembly были сделаны неутешительные выводы: более чем в 50% случаев WebAssembly использовался для злонамеренных целей, например, для майнинга криптовалют (55,7%) и для сокрытия кода от вредоносных скриптов (0,2%). .
Поддерживаемых операционных систем для Wasm3, мы можем найти Linux включая маршрутизаторы на базе OpenWRT, Windows, macOS, Android и iOS. Также было возможно скомпилировать wasm3 в промежуточный код WebAssembly для запуска интерпретатора в браузере или для самостоятельного размещения.
Из законных видов использования WebAssembly наблюдалось выполнение библиотеки (38.8%), создание игр (3.5%) и выполнение нативного кода, отличного от JavaScript (0.9%). В 14,9% случаев WebAssembly использовался для анализа среды на предмет идентификации пользователя (отпечатков пальцев).
Попробуйте wasm3
Для тех, кто заинтересован в возможности использовать этот интерпретатор в своей системе, можете ознакомиться с документацией, а также с кодом проекта который написан на C и распространяется по лицензии MIT, По следующей ссылке.