
Разработчик и автор проектов QEMU, FFmpeg, BPG, QuickJS, TinyGL и TinyCC французский математик Фабрис Беллар (Fabrice Bellard) представил открытый проект JavaScript‑движка для встраиваемых систем под названием Micro QuickJS. Решение способно компилировать и выполнять JavaScript‑программы, потребляя всего 10 КБ ОЗУ. Исходный код проекта написан на языке C и опубликован на GitHub под лицензией MIT.
Вместе с C‑библиотекой движок Micro QuickJS занимает примерно 100 КБ постоянной памяти. Инструмент позволяет выполнять компиляции JavaScript в байткод и отдельный запуск байткода.
Согласно пояснению ресурса OpenNET, производительность Micro QuickJS близка к движку QuickJS, который также является проектом Беллара и находится в разработке с 2019 года.
В решении Micro QuickJS задействована часть кода из движка QuickJS, но архитектура во многом отличается и спроектирована для минимального потребления памяти. Например, в Micro QuickJS задействован трассирующий сборщик мусора, в то время как в QuickJS использован подсчёт ссылок. Накладные расходы сборщика мусора составляют всего несколько бит на каждый выделенный блок памяти. Для выделения памяти используется собственный аллокатор, не зависящий от библиотечной функции malloc().
Другие отличия Micro QuickJS от QuickJS:
не использующая стек виртуальная машина; иное внутреннее представление объектов;
хранение строк в кодировке UTF-8;
генерация стандартной библиотеки во время компиляции и её хранение в постоянной памяти с созданием в ОЗУ всего нескольких объектов;
близкий к QuickJS, но не использующий рекурсию парсер;
совмещение в одном проходе генерации байткода и оптимизации. В QuickJS имеется несколько проходов для оптимизации.
