Запуск WebAssembly runtime как модуля ядра Linux

Проект Wasmjit развивает не привязанный к браузеру небольшой встраиваемый WebAssembly runtime для запуска WebAssembly-модулей, сгенерированных компилятором Emscripten. Помимо средств для выполнения в пространстве пользователя на базе Wasmjit также развивается модуль ядра Linux, позволяющий выполнять промежуточный код WebAssembly на уровне ядра (ring 0). При выполнении на уровне ядра модуль позволяет обращаться к системным вызовам в форме вызова обычных функций. Код написан на языке C (C90), что позволяет легко портировать Wasmjit на различные платформы. Наработки проекта распространяются под лицензией MIT.

Запуск WebAssembly-приложений на уровне ядра даёт возможность избавиться от накладных расходов, связанных с вытеснением таблиц страниц памяти и трансляцией вызовов между ядром и пространством пользователя. Использование модуля ядра позволяет существенно увеличить производительность приложений, в которых производится активное обращение к системным вызовам, например, web-серверов и реализаций файловых систем на базе FUSE.

Из планов на будущее отмечается: создание модуля для ядра macOS; доведение проекта до возможности выполнения nginx, скомпилированного в WebAssembly; подготовка runtime для псевдокода WebAssembly, сгенерированного из кода на языках Rust и Go; создание интерпретатора; подготовка JIT для архитектуры ARM64; оптимизация x86_64 JIT.

©  OpenNet