Французский математик Фабрис Беллар, который основал проекты QEMU и FFmpeg, а также создал самую быструю формулу для вычисления числа Пи и разработал формат изображения BPG.
Фабрис Беллар наиболее известен как ведущий разработчик QEMU (эмулятор, эмулирующий различные аппаратные архитектуры) и Tiny C Compiler (tcc), очень маленький, но всеобъемлющий компилятор C, изначально написанный для победы в «Международном конкурсе запутанного кода C».
Сейчас недавно поделился с публикой первой версией своей новой работы который находится в JavaScript, и это новый движок под названием JavaScript QuickJS.
О JavaScript QuickJS
Движок QuickJS JavaScript он компактен и разработан для встраивания в другие системы. Код проекта Он написан на C и распространяется под лицензией MIT. Также доступна сборка движка, скомпилированная в WebAssembly с использованием Emscripten и подходящая для работы в браузерах.
Реализация JavaScript поддерживает спецификацию ES2019, включая модули, асинхронные генераторы и прокси.
В движке QuickJS JavaScript поддерживаются дополнительные нестандартные математические расширения для JavaScript, такие как типы BigInt и BigFloat, а также перегрузка операторов.
По производительности QuickJS значительно превосходит доступные аналогиНапример, в тесте bench-v8 движок XS опережает на 35%, DukTape более чем вдвое, JerryScript в три раза и MuJS семь раз.
Помимо библиотеки для встраивания движка в приложение, в проекте также есть интерпретатор qjs, который можно использовать для запуска кода JavaScript из командной строки.
Кроме того, компилятор qjsc доступен и способен выводить исполняемые файлы, которые можно запускать отдельно и что они не требуют внешних зависимостей.
Из основных возможностей движка QuickJS JavaScript выделяются следующие моменты:
- Компактный и легко интегрируемый в другие проекты. Код включает только несколько файлов C, для сборки которых не требуются внешние зависимости. Простое скомпилированное приложение занимает около 190 Кб.
- Очень высокая производительность и быстрое время запуска. Прохождение 56 тысяч тестов совместимости с ECMAScript занимает примерно 100 секунд при запуске обычного рабочего стола на ядре. Инициализация времени выполнения занимает менее 300 микросекунд
- Практически полная поддержка спецификации ES2019 и полная поддержка приложения «B», которое определяет компоненты для совместимости со старыми веб-приложениями.
- Завершите прохождение всех тестов ECMAScript Test Suite
- Поддержка компиляции кода Javascript в исполняемые файлы без внешних зависимостей
- Сборщик мусора полагается на подсчет ссылок без выполнения циклической очистки, что обеспечивает предсказуемое поведение и снижает потребление памяти.
- Набор расширений для математических вычислений на языке JavaScript
- Оболочка для выполнения кода в режиме командной строки, поддерживающая контекстную подсветку кода.
- Компактная стандартная библиотека поверх библиотеки C
Кроме этого, С другой стороны, проект также разрабатывает три библиотеки C. связанные стороны, участвующие в QuickJS и подходящие для индивидуального использования:
- свободное выражение: небольшая и быстрая библиотека регулярных выражений, соответствующая спецификации JavaScript ES2019
- либуникод: небольшая библиотека Unicode, которая поддерживает преобразование регистра, нормализацию Unicode, запросы сценариев Unicode, запросы общих категорий Unicode и все двоичные свойства Unicode
- библиотека: Это также небольшая библиотека, которая реализует операции с плавающей запятой IEEE 754 и трансцендентные функции с точным округлением. Он хранится как отдельный проект.
Как получить SavaScript QuickJS?
Скачать исходный код для компиляции можно из следующая ссылка. После установки предоставляется Makefile для компиляции движка в Linux или Mac OS / X.
По той же ссылке вы можете ознакомиться с документацией QuickJS. для дополнительной информации. Он также предоставляет контрольную информацию, показывающую производительность QuickJS с движком Google V8, и сравнение его с другими инструментами в той же категории.