Огляд JavaScript двигуна Micro QuickJS для вбудованих систем
Новий JavaScript двигун Micro QuickJS для вбудованих систем
Фабріс Беллард, засновник QEMU та FFmpeg, представив свій новий проект — Micro QuickJS. Це новий JavaScript двигун, спеціально розроблений для вбудованих систем. Micro QuickJS не є продовженням або форком QuickJS, іншого проекту того ж автора. Це окрема кодова база, що створена для застосування в умовах з дуже обмеженими ресурсами, таких як мікроконтролери та інші вбудовані платформи.
Опис Micro QuickJS: оптимізація для обмежених ресурсів
Двигун зосереджується на строгому підмножі ES5. При цьому пріоритетом є передбачуване поводження, низьке використання пам’яті та простота, а не широкий охоплення мови. Основною метою є досягнення мінімального споживання пам’яті. Двигун призначений для роботи в середовищах з кількома кілобайтами доступної оперативної пам’яті.
Згідно з описом проекту, він може компілювати та виконувати JavaScript програми з усього лише 10 кБ оперативної пам’яті. Це значно нижче, ніж вимоги традиційних JavaScript двигунів, що робить його актуальним для пристроїв, де підтримка скриптів раніше була непрактичною.
Особливості Micro QuickJS
Щоб досягти цієї мети, кілька функцій, що зазвичай присутні в більших середовищах виконання, спеціально опущено. Реалізація уникає динамічної поведінки, що може підвищити навантаження на пам’ять. Стандартна бібліотека розроблена для компіляції в ROM, що зменшує виділення пам’яті під час виконання та забезпечує швидший запуск. Цей підхід відповідає типічним вимогам вбудованих систем, де код зберігається у флеш-пам’яті, а використання оперативної пам’яті потрібно контролювати.
Крім того, API та модель виконання також спрощені для переваги детермінації та зручності вбудовування у проекти прошивок, написані на C.
Ліцензування та доступність Micro QuickJS
Micro QuickJS випущено під відкритою ліцензією і публічно розміщено на GitHub. Хоча він не має на меті замінити повнофункціональні JavaScript двигуни, він надає новий варіант для виконання JavaScript логіки на апаратних платформах, де така можливість раніше була непридатною.




