The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

23.12.2025 22:02

Французский математик Фабрис Беллар (Fabrice Bellard), основавший в своё время проекты QEMU, FFmpeg, BPG, QuickJS, TinyGL и TinyCC, опубликовал новый JavaScript-движок для встраиваемых систем - Micro QuickJS, способный компилировать и выполнять JavaScript-программы, потребляя всего 10 КБ ОЗУ. Вместе с Си-библиотекой движок занимает примерно 100 КБ постоянной памяти. Возможна компиляция JavaScript в байткод и отдельный запуск байткода. Код проекта написан на языке Си и распространяется под лицензией MIT.

Движок поддерживает подмножество языка 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 имеется несколько проходов для оптимизации).

  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: Основатель QEMU и FFmpeg опубликовал звуковой кодек TSAC
  3. OpenNews: Новая версия встраиваемого JavaScript-движка от основателя QEMU и FFmpeg
  4. OpenNews: Основатель QEMU и FFmpeg опубликовал JavaScript-движок QuickJS
  5. OpenNews: Создатель QEMU и FFmpeg предложил новый формат изображений BPG
  6. OpenNews: Основатель QEMU и FFmpeg развивает систему синхронизации файлов VFsync
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/64483-quickjs
Ключевые слова: quickjs, javascript
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (15) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 22:27, 23/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Самое весёлое, это когда JSеры пробуют движки типа QuickJS после того, как всю жизнь сидели на V8 и т.д., и ох*евают от того, насколько это неоптимизированный медленный язык без миллиардов инвестиций V8.
     
     
  • 2.4, Кошкажена (?), 22:35, 23/12/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    У него есть продолжение https://github.com/quickjs-ng/quickjs и какой-то jit https://github.com/bnoordhuis/quickjit

    Для задач типа разборка жс в yt-dlp самое то. v8 ради такой задачи тащить это слишком.

     
     
  • 3.12, Аноним (12), 23:24, 23/12/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Для задач типа разборка жс в yt-dlp самое то

    ну конечно если ты готов полчаса ждать пока код прожуёт

     
  • 2.16, Аноним (16), 23:51, 23/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Самое весёлое, это когда JSеры пробуют движки типа QuickJS

    JSеры об этих QuickJS и прочем даже и не слышали, лол. Серьезный JS пишется под реальные браузеры и Ноду, а не вот эти вот поделки.

     

  • 1.2, Аноним (2), 22:28, 23/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Подмножество-убожество. Добавлять встраиваемый язык только для парсинга какого-нить конфига - очень паршивая концепция.
     
     
  • 2.6, _kp (ok), 22:52, 23/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Это зависит от того, с какой нагрузкой и скоростью хочется "парсить".
    Часто нужен просто какой то простой скриптовый язык в дополнение к основному ПО.
    И требуется например вовсе не скорость, а стабильность и отсутствие зависимостей.
    Что протестировал, то только именно то и работает.
    А столь компактные варианты интересны во встраиваемой технике.
     
     
  • 3.9, Витюшка (?), 23:08, 23/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Тогда и lua подойдёт. И nushell.
     
     
  • 4.13, _kp (ok), 23:26, 23/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Да, lua и использую. Хотя, мне больше JS по душе.  


     
  • 2.11, Аноним (11), 23:15, 23/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Интересно, не знал об этом. Буду иметь в виду при разработке своих решений.
     

  • 1.3, Аноним (3), 22:28, 23/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Отличная новость! Его можно собрать в wasm модуль, чтоб выполнять js из wasm рантайма вне браузера
     
  • 1.5, Кошкажена (?), 22:38, 23/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Он бесспорно молодец. Но файл quickjs.c в 55 тыс строк как-то не очень. Можно же было разбить.
     
     
  • 2.8, _kp (ok), 22:54, 23/12/2025 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Вы там вручную покопаться собираетесь?
    А если с ИИ править и изучать, то в одном файле нормально.
     

  • 1.10, Аноним (10), 23:14, 23/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Эпичный чел
     
  • 1.14, Аноним (14), 23:29, 23/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Круто такто
     
  • 1.15, Аноним (15), 23:51, 23/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Если у тебя такие ограничение по железу зачем тебе джаваскрипт, Фабрис не сказал? А так ради искусства красиво.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру