Fabrice Bellard francia matematikus, aki megalapította a QEMU és az FFmpeg projekteket, és aki elkészítette a Pi szám kiszámításának leggyorsabb képletét és kifejlesztette a BPG képformátumot is.
Fabrice Bellard az legismertebb a QEMU vezető fejlesztőjeként (egy emulátor, amely különféle hardverarchitektúrákat emulál) és a Tiny C Compiler (tcc), egy nagyon kicsi, de átfogó C fordító, amelyet eredetileg a „Nemzetközi Obfuscated C Code Contest” megnyerésére írtak.
Mostanában megosztotta a nyilvánossággal új művének első változatát ami JavaScript-ben van és ez az egy új motort, a JavaScript QuickJS nevet.
A JavaScript QuickJS-ről
A QuickJS JavaScript motor kompakt és úgy tervezték, hogy beépíthető legyen más rendszerekbe. A projekt kódja C-ben van megírva és az MIT licenc alatt terjesztik. Rendelkezésre áll továbbá az Emscripten használatával a WebAssembly-be összeállított motorbővítés, amely böngészőkben történő futtatásra alkalmas.
A JavaScript implementáció támogatja az ES2019 specifikációt, beleértve a modulokat, az aszinkron generátorokat és a proxykat.
A QuickJS JavaScript motorban az opcionális, nem szabványos matematikai kiterjesztések a JavaScript számára támogatottak, például a BigInt és a BigFloat típusok, valamint a kezelő túlterhelése.
Teljesítménye szerint a QuickJS jelentősen felülmúlja az elérhető analógokatPéldául a bench-v8 tesztben az XS motor 35% -kal előzi meg, a DukTape több mint kétszeresére, JerryScript háromszor és MuJS hétszer.
Amellett, hogy a könyvtár beágyazza a motort az alkalmazásba, a projekt a qjs tolmácsot is kínálja, amellyel a JavaScript-kód futtatható a parancssorból.
Ezen túlmenően, A qjsc fordító elérhető, és külön futtatható futtatható fájlok kiadására képes és ezekhez nincs szükség külső függőségekre.
A QuickJS JavaScript motor főbb jellemzői közül a következő pontok emelkednek ki:
- Kompakt és könnyen integrálható más projektekbe. A kód csak néhány C fájlt tartalmaz, amelyek felépítéséhez nincs szükség külső függőségekre. Egy egyszerű lefordított alkalmazás kb. 190 Kb
- Nagyon nagy teljesítmény és gyors indítási idő. 56 ezer ECMAScript kompatibilitási teszt teljesítése körülbelül 100 másodpercet vesz igénybe, amikor egy normál asztalt futtat egy kernelen. A futásidejű inicializálás kevesebb, mint 300 mikroszekundumot vesz igénybe
- Majdnem teljes támogatás az ES2019 specifikációhoz és teljes támogatás a "B" alkalmazáshoz, amely meghatározza az összetevőket a régebbi webalkalmazásokkal való kompatibilitás érdekében
- Töltse ki az ECMAScript Test Suite összes tesztjét
- Támogatás a Javascript kód futtatható fájlokba történő fordításához külső függőségek nélkül
- A szemétszedő a referenciaszámlálásra támaszkodik ciklikus tisztítás nélkül, lehetővé téve a kiszámítható viselkedést és a csökkentett memóriafelhasználást
- Bővítmények halmaza matematikai számításokhoz a JavaScript nyelven
- Héj a parancs végrehajtásához parancssori módban, amely támogatja a kontextus szerinti kódkiemelést
- Kompakt szabványos könyvtár a C könyvtár felett
Ezen felül Másrészt a projekt három C könyvtárat is fejleszt a QuickJS-ben részt vevő és egyéni használatra alkalmas kapcsolt felek:
- freegexp: egy kicsi és gyors regex könyvtár, amely megfelel a JavaScript ES2019 specifikációnak
- libunicode: egy kis Unicode könyvtár, amely támogatja az esetkonverziót, az Unicode normalizálást, az Unicode szkript kéréseket, az Unicode általános kategóriájú lekérdezéseket és az összes Unicode bináris tulajdonságot
- libbf: Ez is egy kis könyvtár, amely az IEEE 754 lebegőpontos műveleteket és transzcendentális funkciókat valósítja meg pontos kerekítéssel. Külön projektként őrzik.
Hogyan szerezhetem meg a SavaScript QuickJS-t?
A forráskód letöltése fordításra innen: a következő link. A telepítés után egy Makefile áll rendelkezésre a motor Linux vagy Mac OS / X rendszerre történő fordításához.
Ugyanezen a linken megtekintheti a QuickJS dokumentációját további információért. Ezenkívül összehasonlító információkat is tartalmaz, amelyek bemutatják a QuickJS teljesítményét a Google V8-as motorjával, valamint összehasonlítják azt és az azonos kategóriába tartozó egyéb eszközöket.