Zakladatel QEMU a FFmpeg publikuje QuickJS JavaScript Engine

Francouzský matematik Fabrice Bellard, který založil projekty QEMU a FFmpeg, také vytvořil nejrychlejší vzorec pro výpočet čísla Pi a vyvinul formát obrazu. BPG, zveřejnila první vydání nového enginu JavaScript QuickJS. Motor je kompaktní a navržený pro integraci do jiných systémů. Kód projektu je napsán v jazyce C a je distribuován pod licencí MIT. K dispozici je také sestavení enginu, zkompilované do WebAssembly pomocí Emscripten a vhodné pro spuštění v prohlížečích.

Implementace JavaScriptu podporuje Specifikace ES2019, včetně modulů, asynchronních generátorů a proxy. Volitelně jsou podporovány nestandardní matematiky rozšíření pro JavaScript, jako jsou typy BigInt a BigFloat, a také přetížení operátora. Výkon QuickJS je významný lepší než dostupné analogy, například v testu
bench-v8 je před motorem XS na 35%, duktape více než dvakrát jerryscript třikrát a MuJS sedmkrát.

Kromě knihovny pro zabudování enginu do aplikací projekt nabízí také interpret qjs, pomocí kterého lze spouštět JavaScript kód z příkazové řádky. Navíc je k dispozici kompilátor qjsc schopný generovat výstupní spustitelné soubory vhodné pro samostatné spuštění, které nevyžadují externí závislosti.

Klíčové vlastnosti:

  • Kompaktní a snadno integrovatelný do jiných projektů. Kód obsahuje pouze několik souborů C, které pro sestavení nevyžadují externí závislosti. Nejjednodušší zkompilovaná aplikace zabere asi 190 KB;
  • Velmi vysoký výkon a krátká doba spuštění. Absolvování 56 tisíc testů kompatibility ECMAScript trvá asi 100 sekund, když jsou spuštěny na jednom jádru běžného stolního PC. Inicializace za běhu trvá méně než 300 mikrosekund;
  • Téměř plná podpora specifikace ES2019 a plná podpora dodatku B, který definuje komponenty pro kompatibilitu se staršími webovými aplikacemi;
  • Kompletní absolvování všech testů z ECMAScript Test Suite;
  • Podpora pro kompilaci kódu Javascript do spustitelných souborů bez externích závislostí;
  • Garbage collector založený na počítání referencí bez cyklického čištění, což nám umožnilo dosáhnout předvídatelného chování a snížit spotřebu paměti;
  • Sada rozšíření pro matematické výpočty v JavaScriptu;
  • Shell pro spouštění kódu v režimu příkazového řádku, podporující kontextové zvýraznění kódu;
  • Kompaktní standardní knihovna s obaly nad knihovnou C.

Projekt také vyvíjí tři doprovodné C knihovny zapojené do QuickJS a vhodné pro individuální 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 libovolných přesných operací s pohyblivou řádovou čárkou a transcendentálních funkcí s přesným zaokrouhlováním.

Zdroj: opennet.ru

Přidat komentář