Francuski matematičar Fabrice Bellard, koji je osnovao projekte QEMU i FFmpeg, kao i stvorio najbržu formulu za izračunavanje broja Pi i razvio format slika , objavio je prvi broj novog JavaScript engine-a . Engine se odlikuje kompaktnošću i namijenjen je ugradnji u druge sustave. Kod projekta napisan je na jeziku C i distribuiran je pod MIT licencom. Također je dostupna verzija engine-a koja je kompajlirana u WebAssembly uz pomoć Emscriptena i pogodna je za izvršavanje u preglednicima.
Implementacija JavaScript specifikacije ES2019, uključujući module, asinhrone generatore i proxy. Opcionalno podržava nestandardne matematičke tipove BigInt i BigFloat, kao i . U pogledu performansi, QuickJS značajno postojeće analoge, primjerice, u testu
bench-v8 nadmašuje engine za 35%, više od dva puta, tri puta, a sedam puta.
Osim biblioteke za ugradnju engine-a u aplikacije, projekt nudi i interpreter qjs, koji se može koristiti za pokretanje JavaScript koda iz komandne linije. Štoviše, dostupan je i kompajler qjsc, sposoban generirati izvršne datoteke pogodne za samostalno pokretanje, bez vanjskih ovisnosti.
Glavne značajke:
- Kompaktnoća i jednostavnost ugradnje u druge projekte. Kod uključuje samo nekoliko datoteka na jeziku C, ne zahtijevajući vanjske ovisnosti za kompilaciju. Skompilirana najjednostavnija aplikacija zauzima oko 190 Kb;
- Veoma visoke performanse i kratko vrijeme pokretanja. Prolazak od 56 tisuća testova kompatibilnosti s ECMAScriptom traje oko 100 sekundi kada se izvršava na jednom jerdru običnog stolnog računala. Inicijalizacija runtime-a traje manje od 300 mikrosekundi;
- Gotovo potpuna podrška za specifikaciju ES2019 i potpuna podrška za aplikaciju 'B', koja određuje komponente za kompatibilnost sa starim web aplikacijama;
- Potpuno prolazak svih testova iz skupa ECMAScript Test Suite;
- Podrška za kompilaciju koda na jeziku Javascript u izvršne datoteke bez vanjskih ovisnosti;
- Sakupljač smeća temeljen na brojanju referenci bez cikličkog čišćenja, što je omogućilo postizanje predvidljivog ponašanja i smanjenje potrošnje memorije;
- Skup ekstenzija za matematičke izračune na jeziku JavaScript;
- Okruženje za izvršavanje koda u komandnoj liniji koje podržava isticanje sintakse;
- Kompaktna standardna biblioteka s obradama iz C biblioteke.
Projekat takođe razvija tri prateće C biblioteke, korišćene u QuickJS-u i prikladne za samostalnu primenu:
- libregexp — brza implementacija regularnih izraza, potpuno kompatibilna sa specifikacijom JavaScript ES 2019;
- libunicode — kompaktna biblioteka za rad sa Unicode-om;
- libbf — implementacija operacija s pomičnom tačkom proizvoljne preciznosti i transcendentnih funkcija s tačnim zaokruživanjem.
Izvor: opennet.ru
