Основатель QEMU и FFmpeg опубликовал JavaScript-движок QuickJS

11 июля 2019 года

Французский математик Фабрис Беллар (Fabrice Bellard), основавший в свое время проекты QEMU и FFmpeg, а также создавший самую быструю формулу вычисления числа Пи и разработавший формат изображений BPG, опубликовал первый выпуск нового JavaScript-движка QuickJS. Движок отличается компактностью и ориентирован на встраивание в другие системы. Код проекта написан на языке Си и распространяется под лицензией MIT. Также доступна сборка движка, скомпилированная в WebAssembly при помощи Emscripten и пригодная для выполнения в браузерах.

Реализация 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 - реализация операций с плавающей запятой произвольной точности и трансцендентных функций с точным округлением.

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Основатель QEMU и FFmpeg опубликовал JavaScript-движок QuickJS», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.