Francúzsky matematik Fabrice Bellard, zakladateľ projektov QEMU a FFmpeg, ako aj tvorca najrýchlejšieho vzorca na výpočet čísla Pi a autor formátu obrázkov , publikoval prvé vydanie nového JavaScriptového enginu . Engine vyniká kompaktnosťou a je orientovaný na zabudovanie do iných systémov. Kód projektu je napísaný v jazyku C a je šírený pod licenciou MIT. K dispozícii je aj zostava enginu skompilovaná do WebAssembly pomocou Emscripten, ktorá je vhodná na spúšťanie v prehliadačoch.
Implementácia JavaScriptu špecifikáciu ES2019, vrátane modulov, asynchrónnych generátorov a proxy. Voliteľne podporuje neštandardné matematické funkcie pre JavaScript, ako sú typy BigInt a BigFloat, ako aj . Z hľadiska výkonu je QuickJS výrazne lepší ako existujúce alternatívy, napríklad v teste
bench-v8 prekonáva engine o 35%, viac než dvakrát, trikrát, a až sedemkrát.
Okrem knižnice na zabudovanie enginu do aplikácií projekt ponúka aj interpret qjs, ktorý možno použiť na spúšťanie JavaScriptového kódu z príkazového riadku. Navyše je k dispozícii kompilátor qjsc, ktorý dokáže generovať samostatne spustiteľné súbory, ktoré nevyžadujú externé závislosti.
Hlavné vlastnosti:
- Kompaktnosť a jednoduchosť integrácie do iných projektov. Kód obsahuje len niekoľko súborov v jazyku C, ktoré na zostavenie nevyžadujú externé závislosti. Skompilovaná najjednoduchšia aplikácia zaberá približne 190 kB;
- Veľmi vysoký výkon a krátky čas spustenia. Pardón 56 tisíc testov na kompatibilitu s ECMAScript trvá približne 100 sekúnd pri vykonávaní na jednom jadre bežného stolného PC. Inicializácia runtime trvá menej ako 300 mikrosekúnd;
- Takmer úplná podpora špecifikácie ES2019 a plná podpora aplikácie 'B', definujúcej komponenty pre kompatibilitu so starými webovými aplikáciami;
- Úplné absolvovanie všetkých testov zady z ECMAScript Test Suite;
- Podpora kompilácie kódu v jazyku JavaScript na spustiteľné súbory bez externých závislostí;
- Zberný spracovateľ na základe počítania odkazov bez cyklickej činnosti čistenia, ktorý umožnil dosiahnuť predvídateľné správanie a zníženie spotreby pamäte;
- Súbor rozšírení pre matematické výpočty v jazyku JavaScript;
- Skripta na vykonávanie kódu v režime príkazového riadku s podporou syntaxu kódu;
- Kompaktná štandardná knižnica s obalmi na C knižnicu.
Projekt tiež vyvíja tri sprievodné C knižnice, ktoré sú použité v QuickJS a vhodné na samostatné použitie:
- libregexp — rýchla implementácia regulárnych výrazov, plne kompatibilná so špecifikáciou Javascript ES 2019;
- libunicode — kompaktná knižnica na prácu s Unicode;
- libbf — implementácia operácií s pohyblivou desatinnou čiarkou ľubovoľnej presnosti a transcendentných funkcií s presným zaokrúhľovaním.
Zdroj: opennet.ru
