Francuski matematičar Fabrice Bellard, koji je osnovao projekte QEMU i FFmpeg, a koji je ujedno stvorio najbržu formulu za izračunavanje broja Pi i razvio BPG format slike.
Fabrice Bellard je najpoznatiji kao vodeći programer QEMU-a (emulator koji oponaša različite hardverske arhitekture) i Tiny C Compiler (tcc), vrlo mali, ali sveobuhvatan C kompajler, prvobitno napisan da pobijedi na „Međunarodnom natjecanju za skriveni C kod“.
Sada nedavno podijelio je javnosti prvu verziju svog novog djela koji je u JavaScript-u i ovo je novi mehanizam nazvan JavaScript QuickJS.
O JavaScript QuickJS-u
JavaScript Engine QuickJS kompaktan je i dizajniran za ugradnju u druge sisteme. Kod projekta Napisan je na C jeziku i distribuiran pod MIT licencom. Dostupna je i izrada motora kompajlirana u WebAssembly koristeći Emscripten i pogodna za pokretanje u pregledačima.
Implementacija JavaScript-a podržava specifikaciju ES2019, uključujući module, asinkrone generatore i proxyje.
U JavaScript Engine QuickJS podržana su opcionalna nestandardna matematička proširenja za JavaScript, kao što su tipovi BigInt i BigFloat, kao i preopterećenje operatora.
Svojim performansama QuickJS značajno nadmašuje dostupne analogeNa primjer, u testu bench-v8, XS motor ima 35% prednosti, DukTape više nego udvostručen, JerryScript tri puta i MuJS sedam puta.
Pored biblioteke za ugradnju motora u aplikaciju, projekat takođe nudi qjs tumač, koji se može koristiti za pokretanje JavaScript koda iz naredbenog retka.
Takođe, qjsc kompajler je dostupan i sposoban za izvođenje izvršnih datoteka koje se mogu pokrenuti odvojeno i da za njih nisu potrebne vanjske zavisnosti.
Od glavnih karakteristika QuickJS JavaScript motora izdvajaju se sljedeće tačke:
- Kompaktan i jednostavan za integraciju u druge projekte. Kôd uključuje samo nekoliko C datoteka koje ne zahtijevaju vanjske ovisnosti za izgradnju. Jednostavna kompajlirana aplikacija traje oko 190 Kb
- Vrlo visoke performanse i brza vremena pokretanja. Prolazak 56 hiljada testova kompatibilnosti ECMAScripta traje približno 100 sekundi kada se pokreće normalna radna površina na jezgru. Inicijalizacija izvođenja traje manje od 300 mikrosekundi
- Gotovo puna podrška za specifikaciju ES2019 i puna podrška za aplikaciju "B", koja definira komponente za kompatibilnost sa starijim web aplikacijama
- Dovršite prolazak svih testova paketa ECMAScript Test Suite
- Podrška za kompajliranje Javascript koda u izvršne datoteke bez vanjskih ovisnosti
- Sakupljač smeća oslanja se na brojanje referenci bez cikličkog čišćenja, omogućavajući predvidljivo ponašanje i smanjenu potrošnju memorije
- Skup proširenja za matematičke proračune na JavaScript jeziku
- Ljuska za izvršavanje koda u načinu naredbenog retka, koja podržava isticanje kontekstualnog koda
- Kompaktna standardna biblioteka nad C bibliotekom
Pored ovoga, S druge strane, projekt također razvija tri C biblioteke povezane strane uključene u QuickJS i pogodne za individualnu upotrebu:
- freegexp: mala i brza biblioteka regularnih izraza koja je u skladu sa JavaScript ES2019 specifikacijom
- libunicode: mala Unicode biblioteka koja podržava pretvaranje velikih i malih slova, normalizaciju Unicodea, zahtjeve skripte Unicode, upite opće kategorije Unicode i sva binarna svojstva Unicodea
- libbf: Ovo je također mala biblioteka koja implementira IEEE 754 operacije s pomičnim zarezom i transcendentalne funkcije s tačnim zaokruživanjem. Čuva se kao zaseban projekat.
Kako doći do SavaScript QuickJS-a?
Preuzimanje izvornog koda za kompilaciju može se izvršiti iz sljedeći link. Nakon instalacije, nalazi se Makefile za kompajliranje motora na Linuxu ili Mac OS / X.
Na istom linku možete pogledati QuickJS dokumentaciju za više informacija. Takođe pruža referentne informacije koje pokazuju performanse QuickJS-a sa Googleovim V8 motorom i poređenje između njega i drugih alata iz iste kategorije.