Реализация JavaScript поддерживает спецификацию ES2019, включая модули, асинхронные генераторы и прокси. Опционально поддерживаются нестандартные математические расширения для JavaScript, такие как типы BigInt и BigFloat, а также перезагрузка операторов. По производительности QuickJS существенно превосходит имеющиеся аналоги, например, в тесте bench-v8 опережает движок XS на 35%, DukTape более чем в два раза, JerryScript в три раза, а MuJS в семь раз.
Кроме библиотеки для встраивания движка в приложения проектом также предлагается интерпретатор qjs, который можно использовать для запуска JavaScript-кода из командной строки. Более того, доступен компилятор qjsc, способный на выходе генерировать пригодные для обособленного запуска исполняемые файлы, не требующие внешних зависимостей.
Основные особенности:
- Компактность и простота встраивания в другие проекты. Код включает лишь несколько файлов на языке Си, не требующих для сборки внешних зависимостей. Скомпилированное простейшее приложение занимает около 190 Кб;
- Очень высокая производительность и быстрое время запуска. Прохождение 56 тысяч тестов на совместимость с ECMAScript занимает около 100 секунд при выполнении на одном ядре обычного настольного ПК. Инициализация runtime занимает менее 300 микросекунд;
- Почти полная поддержка спецификации ES2019 и полная поддержка приложения «B», определяющего компоненты для совместимости со старыми web-приложениями;
- Полное прохождение всех тестов из набора ECMAScript Test Suite;
- Поддержка компиляции кода на языке Javascript в исполняемые файлы без внешних зависимостей;
- Сборщик мусора на основе подсчёта ссылок без цикличного выполнения чистки, позволивший добиться предсказуемого поведения и снижения потребления памяти;
- Набор расширений для математических вычислений на языке JavaScript;
- Оболочка для выполнения кода в режиме командной строки, поддерживающая контекстную подсветку кода;
- Компактная стандартная библиотека с обвязками над Си-библиотекой.
Проектом также развиваются три сопутствующие Си-библиотеки, задействованные в QuickJS и пригодные для отдельного применения:
- libregexp — быстрая реализация регулярных выражений, полностью совместимых со спецификацией Javascript ES 2019;
- libunicode — компактная библиотека для работы с Unicode;
- libbf — реализация операций с плавающей запятой произвольной точности и трансцендентных функций с точным округлением.
Источник: http://www.opennet.ru/opennews/art.shtml?num=51079