Выпущен движок Micro QuickJS для JavaScript на 10 КБ ОЗУ Обложка: Skyread

Выпущен движок Micro QuickJS для JavaScript на 10 КБ ОЗУ

Новости
Главное:

  • Фабрис Беллар представил Micro QuickJS — компактный движок JavaScript для встраиваемых систем, работающий с 10 КБ оперативной памяти.
  • Micro QuickJS написан на C, занимает около 100 КБ постоянной памяти и доступен на GitHub под лицензией MIT.
  • Движок использует отличную от QuickJS архитектуру, включая трассирующий сборщик мусора и нестековую виртуальную машину, что обеспечивает минимальное потребление ресурсов.

Французский разработчик Фабрис Беллар, известный созданием проектов QEMU, FFmpeg и QuickJS, анонсировал новый JavaScript-движок Micro QuickJS, ориентированный на встраиваемые системы с ограниченными ресурсами. Это решение способно компилировать и выполнять JavaScript-код, потребляя всего около 10 КБ оперативной памяти, что делает его привлекательным для применения в устройствах с минимальными аппаратными возможностями.

Исходный код Micro QuickJS написан на языке C и опубликован на GitHub под свободной лицензией MIT, что способствует широкому распространению и интеграции в различные проекты. Совокупно движок и сопровождающая библиотека занимают примерно 100 КБ постоянной памяти, что существенно меньше традиционных движков JavaScript, позволяя оптимизировать использование аппаратных ресурсов.

Архитектура Micro QuickJS существенно отличается от более известного QuickJS, также разработанного Белларом. В частности, Micro QuickJS использует трассирующий сборщик мусора с низкой накладной нагрузкой, в отличие от подсчёта ссылок в QuickJS. Кроме того, для управления памятью применяется собственный аллокатор, не зависящий от стандартной функции malloc().

Ключевые технические особенности Micro QuickJS включают отсутствие использования стека в виртуальной машине, хранение строк в UTF-8, генерацию стандартной библиотеки на этапе компиляции с минимальным расходом оперативной памяти во время исполнения, а также парсер, избегающий рекурсии. Помимо этого, генерация байткода и его оптимизация выполняются совместно за один проход, что повышает эффективность работы по сравнению с многоступенчатой оптимизацией QuickJS.

По сравнению с QuickJS, производительность Micro QuickJS близка, при этом новое решение лучше подходит для задач с жесткими ограничениями по памяти. Это открывает перспективы использования Micro QuickJS в IoT-устройствах, микроконтроллерах и других встроенных системах, где важно сочетание функциональности JavaScript и минимального потребления ресурсов.

Tagged