Запуск WebAssembly runtime как модуля ядра Linux
Проект Wasmjit развивает небольшой встраиваемый WebAssembly runtime для запуска WebAssembly-модулей, сгенерированных компилятором Emscripten, без привязки к браузеру. Помимо средств для выполнения в пространстве пользователя на базе Wasmjit также развивается модуль ядра Linux, позволяющий выполнять промежуточный код WebAssembly на уровне ядра (ring 0). Модуль выполняется на уровне ядра (ring 0) и позволяет обращаться к системным вызовам в форме вызова обычных функций. Код написан на языке C (C90), что позволяет легко портировать его на различные платформы. Наработки проекта распространяются под лицензией MIT.
Запуск WebAssembly-приложений на уровне ядра позволяет избавиться от накладных расходов, связанных с вытеснением таблиц страниц памяти и трансляцией вызовов между ядром и пространством пользователя. Использование модуля ядра позволяет существенно увеличить производительность приложений, в которых производится активное обращение к системным вызовам, например, web-серверов и реализаций файловых систем на базе FUSE.
Из планов на будущее отмечается: создание модуля для ядра macOS; доведение проекта до возможности выполнения nginx, скомпилированного в WebAssembly; подготовка runtime для псевдокода WebAssembly, сгенерированного из кода на языках Rust и Go; создание интерпретатора и подготовка JIT для архитектуры ARM64; оптимизация x86_64 JIT.