Перейти к основному содержимому

Hako – новый встраиваемый движок для JavaScript

·271 слово·2 минут·
Александр Мунько
Автор
Александр Мунько
Любитель порассказывать про Фронтенд
Оглавление
Оригинальная новость

Мир встраиваемых движков для JavaScript’а весьма небольшой – если рассматривать количество движков, хоть и для динамического языка их достаточно. С точки зрения того, сколько необходимо сделать для запуска JavaScript’а в отдельном контексте исполнения – этот мир очень большой.

Для чего нужны встраиваемые движки?
#

Встраиваемые JavaScript-движки позволяют запускать код внутри других программ, в том числе без прямой зависимости от браузера. Например при помощи встраиваемых движков можно реализовать систему плагинов (VS Code, Figma), создать песочницу для выполнения кода (CodeSandbox, StackBlitz, Cloudflare Workers), использовать в IoT-устройствах вместо V8 и т.д. Также, такие движки имеют некоторое количество ограничений, например не могут работать с DOM напрямую, или с файловой системой пользователя.

WASM и как он поможет
#

WebAssembly (WASM)

WASM is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable compilation target for programming languages, enabling deployment on the web for client and server applications.
WebAssembly.org

С приходом WASM встраиваемые движки могут быть написаны на C / C++ (или любом другом компилируемом языке) и позже скомпилированы в WASM, что в свою очередь даёт несколько преимуществ: кросс-платформенность, повышенная безопасность, защита от уязвимостей, контроль ресурсов, возможность идентификации пользователей и т.д. Ну и самое главное – можно такой встраиваемый движок JavaScript’а запустить в движке JavaScript’а, чтобы получить движок JavaScript’а внутри JavaScript’а.

Мем с кадром из передачи “Тачку на прокачку” – “Мы сделали движок в движе, чтобы ты  смог интерпретировать код во время интерпретации кода”
Когда встроил движок JavaScript’а

Hako выходит на сцену
#

Всеми этими преимуществами обладает Hako – новый встраиваемый движок, основанный на другом движке – PrimJS, который основан на QuickJS.

Мем “Три человека паука указывают друг на друга”, напдиси на “пауках”: Hako, PrismJS и QuickJS
Ну вы поняли…

Hako находится в активной разработке и имеет все амбиции чтобы стать одним из производительных встраиваемых JavaScript-движков.