Движок поддерживает подмножество языка JavaScript, близкое к спецификации ECMAScript 5 (ES2019), но предъявляющее более строгие требования к коду и не допускающее использования некоторых неэффективных или приводящих к ошибкам JavaScript-конструкций. Например, глобальные переменные обязательно должны объявляется через ключевое слово «var», запрещено использование «with», массивы не могут иметь пустоты, невозможна инициализация при объявлении вида «new Number(1)», из eval невозможен доступ к локальным переменным.
Производительность Micro QuickJS близка к движку QuickJS, развиваемому Фабрисом c 2019 года. В Micro QuickJS задействована часть кода из движка QuickJS, но архитектура во многом отличается и спроектирована для минимального потребления памяти. Например, в Micro QuickJS задействован трассирующий сборщик мусора, в то время как в QuickJS использован подсчёт ссылок. Накладные расходы сборщика мусора составляют всего несколько бит на каждый выделенный блок памяти. Для выделения памяти используется собственный аллокатор, не зависящий от библиотечной функции malloc().
Другие отличия от QuickJS: не использующая стек виртуальная машина; иное внутреннее представление объектов; хранение строк в кодировке UTF-8; генерация стандартной библиотеки во время компиляции и её хранение в постоянной памяти с созданием в ОЗУ всего нескольких объектов; близкий к QuickJS, но не использующий рекурсию, парсер; совмещение в одном проходе генерации байткода и оптимизации (в QuickJS имеется несколько проходов для оптимизации).
Источник: http://www.opennet.ru/opennews/art.shtml?num=64483
