Zakladatel QEMU a FFmpeg zveřejnil JavaScript engine QuickJS

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ů BPG, publikoval první verzi nového JavaScriptového enginu QuickJS. 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 srcset specifikaci ES2019, včetně modulů, asynchronních generátorů a proxy. Volitelně jsou podporovány nestandardní matematické rozšíření pro JavaScript, jako typy BigInt a BigFloat, stejně jako přeplňování operátorů. Z hlediska výkonu je QuickJS podstatně převyšuje lepší než dostupné analogy, například v testu
bench-v8 překonává engine XS o 35 %, DukTape více než dvakrát, JerryScript třikrát, a MuJS 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

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster