14.04.2025, Ссылка на новость
Мир встраиваемых движков для JavaScript’а весьма небольшой – если рассматривать количество движков, хотя для динамического языка их достаточно. С точки зрения того, сколько необходимо сделать для запуска JavaScript’а в отдельном контексте исполнения - этот мир очень большой.
Встраиваемые JavaScript-движки позволяют запускать код внутри других программ, в том числе без прямой зависимости от браузера. Например при помощи встраиваемых движков можно реализовать систему плагинов (VS Code, Figma), создать песочницу для выполнения кода (CodeSandbox, StackBlitz, Cloudflare Workers), использовать в IoT-устройствах вместо V8 и т.д. Также, такие движки имеют некоторое количество ограничений, например не могут работать с DOM напрямую, или с файловой системой пользователя.
С приходом WASM встраиваемые движки могут быть написаны на C / C++ (или любом другом компилируемом языке) и позже скомпилированы в WASM, что в свою очередь даёт несколько преимуществ: кросс-платформенность, повышенная безопасность, защита от уязвимостей, контроль ресурсов, возможность идентификации пользователей и т.д. Ну и самое главное - можно такой встраиваемый движок JavaScript’а запустить в движке JavaScript’а, чтобы получить движок JavaScript’а внутри JavaScript’а.
Всеми этими преимуществами обладает [Hako](hakojs.com) – новый встраиваемый движок, основанный на другом движке – PrimJS, который основан на QuickJS.
Hako находится в активной разработке и имеет все амбиции чтобы стать одним из производительных встраиваемых JavaScript-движков.