Fabrice Bellard, a QEMU és az FFmpeg megalkotója egy teljesen új JavaScript-motorral jelentkezett. A Micro QuickJS kifejezetten erősen korlátozott beágyazott rendszerekre készült, ahol eddig a JavaScript futtatása gyakorlatilag elképzelhetetlen volt. Az új projekt nem a QuickJS folytatása, hanem egy tiszta lappal indított, minimalista megközelítés.
Nem a QuickJS utódja, hanem egy új alapokra épülő motor
Fontos hangsúlyozni, hogy a Micro QuickJS nem a QuickJS forkja vagy továbbfejlesztése. Bár ugyanaz a szerző áll mögötte, a két projekt célja és belső felépítése gyökeresen eltér.
A Micro QuickJS teljesen külön kódbázis, amelyet eleve mikrokontrollerekhez és extrém erőforrás-szegény környezetekhez terveztek.
Szűkített JavaScript, kiszámítható működés
A motor egy szigorúan ES5-alapú JavaScript részhalmazt valósít meg. A fejlesztési filozófia tudatosan lemond számos modern nyelvi funkcióról, cserébe:
- kiszámítható futási viselkedést,
- alacsony memóriahasználatot,
- egyszerű, könnyen integrálható felépítést kínál.
Ez a megközelítés jól illeszkedik a firmware-szintű fejlesztések világához, ahol a determinisztikus működés gyakran fontosabb, mint a nyelvi kényelem.
Akár 10 kB RAM is elegendő
A projekt egyik legérdekesebb állítása, hogy a Micro QuickJS már körülbelül 10 kilobájt RAM-mal is képes JavaScript kódot fordítani és futtatni.
Ez nagyságrendekkel kisebb memóriaigény, mint amit a hagyományos JavaScript-motorok (V8, SpiderMonkey vagy akár a QuickJS) megkövetelnek.
Ennek érdekében:
- elmaradnak a dinamikus, memóriát terhelő nyelvi megoldások,
- a futtatókörnyezet nem tartalmaz „luxus” szolgáltatásokat,
- a memóriahasználat minden lépése szigorúan kontrollált.
ROM-ba fordítható szabványkönyvtár
A szabványkönyvtár (standard library) kialakítása kifejezetten beágyazott rendszerekhez igazodik. A könyvtár:
- ROM-ba (flash memóriába) fordítható,
- minimális futásidejű memóriafoglalással dolgozik,
- gyors indulást biztosít.
Ez a megoldás tökéletesen illeszkedik azokhoz a környezetekhez, ahol a kód flash memóriában, az adatok pedig nagyon szűk RAM-területen kapnak helyet.
Egyszerű API és C-alapú integráció
A Micro QuickJS letisztult API-t és egyszerű végrehajtási modellt kínál, amelyet kifejezetten C nyelvű firmware-projektekhez optimalizáltak.
A cél az, hogy a JavaScript ne egy nehézkes runtime legyen, hanem egy könnyen beágyazható szkriptnyelv, amely logikát, szabályokat vagy konfigurációt biztosít a firmware számára.
Nyílt forráskód, speciális célra
A projekt nyílt forráskódú, és nyilvánosan elérhető a GitHubon. Nem célja, hogy teljes értékű JavaScript-motorokat váltson le, viszont:
- új lehetőséget ad JavaScript használatára mikrokontrollereken,
- alternatívát kínál Lua vagy egyedi szkriptnyelvek mellett,
- megnyitja az utat JS-alapú logika alkalmazására ott, ahol eddig ez nem volt reális.
A Micro QuickJS jól mutatja Fabrice Bellard jellegzetes szemléletét: radikálisan egyszerű, mégis technikailag elegáns megoldás egy nagyon konkrét problémára. A projekt nem a JavaScript jövőjét akarja újradefiniálni, hanem egy szűk, de fontos területen – az extrém erőforrás-szegény beágyazott rendszereknél – kínál valódi, használható alternatívát.

