Francouzský matematik Fabrice Bellard, zakladatel projektů QEMU a FFmpeg, a také tvůrce nejrychlejšího vzorce pro výpočet čísla Pí a autor formátu obrazů , publikoval první verzi nového JavaScriptového enginu . Engine se vyznačuje kompaktností a je zaměřen na integraci do jiných systémů. Kód projektu je napsán v jazyce C a je distribuován pod licencí MIT. Také je k dispozici sestavení enginu, které bylo zkompilováno do WebAssembly pomocí Emscripten a je vhodné pro provádění v prohlížečích.
Implementace JavaScriptu specifikaci ES2019, včetně modulů, asynchronních generátorů a proxy. Volitelně jsou podporovány nestandardní matematické pro JavaScript, jako typy BigInt a BigFloat, stejně jako . Z hlediska výkonu je QuickJS podstatně lepší než dostupné analogy, například v testu
bench-v8 překonává engine o 35 %, více než dvakrát, třikrát, a sedmkrát.
Kromě knihovny pro integraci enginu do aplikací projekt také nabízí interpret qjs, který lze použít pro spuštění JavaScriptového kódu z příkazového řádku. Navíc je k dispozici kompilátor qjsc, který může generovat spustitelné soubory připravené k samostatnému spuštění, které nevyžadují externí závislosti.
Hlavní vlastnosti:
- Kompaktnost a jednoduchost integrace do dalších projektů. Kód obsahuje pouze několik souborů v jazyce C, které nevyžadují pro sestavení externí závislosti. Zkompilovaná základní aplikace zabírá přibližně 190 Kb;
- Velmi vysoký výkon a krátká doba spuštění. Procházení 56 tisíc testy na kompatibilitu s ECMAScript zabere přibližně 100 sekund při provádění na jednom jádru běžného stolního PC. Inicializace runtime zabere méně než 300 mikrosekund;
- Skoro úplná podpora specifikace ES2019 a plná podpora aplikace „B“, která určuje komponenty pro kompatibilitu se starými webovými aplikacemi;
- Úplné projití všech testů z balíčku ECMAScript Test Suite;
- Podpora kompilace kódu v jazyce JavaScript do spustitelných souborů bez externích závislostí;
- Garbage collector na základě počítání odkazů bez cyklického čištění, což vedlo k předvídatelnému chování a snížení paměťové náročnosti;
- Sada rozšíření pro matematické výpočty v jazyce JavaScript;
- Škrabka pro provádění kódu v režimu příkazového řádku, podporující kontextové zvýraznění kódu;
- Kompaktní standardní knihovna s obálkami nad C knihovnou.
Projekt také vyvíjí tři přidružené C knihovny, které se používají v QuickJS a jsou vhodné pro samostatné použití:
- libregexp — rychlá implementace regulárních výrazů, plně kompatibilní se specifikací Javascript ES 2019;
- libunicode — kompaktní knihovna pro práci s Unicode;
- libbf — implementace operací s plovoucí desetinnou čárkou libovolné přesnosti a transcendentních funkcí s přesným zaokrouhlením.
Zdroj: opennet.ru
