Zakladateľ QEMU a FFmpeg publikuje modul JavaScript QuickJS

Francúzsky matematik Fabrice Bellard, ktorý založil projekty QEMU a FFmpeg, tiež vytvoril najrýchlejší vzorec na výpočet Pi a vyvinul formát obrazu. HDP, zverejnila prvé vydanie nového nástroja JavaScript QuickJS. Motor je kompaktný a navrhnutý pre integráciu do iných systémov. Kód projektu je napísaný v jazyku C a je distribuovaný pod licenciou MIT. K dispozícii je aj zostava motora, skompilovaná do WebAssembly pomocou Emscripten a vhodná na spustenie v prehliadačoch.

Implementácia JavaScriptu podporuje Špecifikácia ES2019 vrátane modulov, asynchrónnych generátorov a proxy. Voliteľne sú podporované neštandardné matematiky expanzia pre JavaScript, ako sú typy BigInt a BigFloat, ako aj preťaženie operátora. Výkon QuickJS je významný lepšie ako dostupné analógy, napríklad v teste
bench-v8 je pred motorom XS na 35%, DukTape viac ako zdvojnásobil jerryscript trikrát a MuJS sedemkrát.

Okrem knižnice pre vkladanie enginu do aplikácií ponúka projekt aj qjs interpreter, pomocou ktorého je možné spúšťať JavaScript kód z príkazového riadku. Okrem toho je k dispozícii kompilátor qjsc, ktorý je schopný generovať výstupné spustiteľné súbory vhodné na samostatné spustenie, ktoré nevyžadujú externé závislosti.

Hlavné funkcie:

  • Kompaktný a ľahko integrovateľný do iných projektov. Kód obsahuje iba niekoľko súborov C, ktoré nevyžadujú externé závislosti na zostavenie. Najjednoduchšia skompilovaná aplikácia zaberá približne 190 KB;
  • Veľmi vysoký výkon a krátky čas spustenia. Absolvovanie 56 100 testov kompatibility ECMAScript trvá približne 300 sekúnd, ak sú spustené na jednom jadre bežného stolného počítača. Inicializácia runtime trvá menej ako XNUMX mikrosekúnd;
  • Takmer plná podpora špecifikácie ES2019 a plná podpora pre prílohu B, ktorá definuje komponenty pre kompatibilitu so staršími webovými aplikáciami;
  • Kompletné absolvovanie všetkých testov z ECMAScript Test Suite;
  • Podpora kompilácie kódu Javascript do spustiteľných súborov bez externých závislostí;
  • Zberač odpadu založený na počítaní referencií bez cyklického čistenia, ktorý nám umožnil dosiahnuť predvídateľné správanie a znížiť spotrebu pamäte;
  • Sada rozšírení pre matematické výpočty v JavaScripte;
  • Shell na spustenie kódu v režime príkazového riadka, ktorý podporuje kontextové zvýrazňovanie kódu;
  • Kompaktná štandardná knižnica s obalmi nad knižnicou C.

Projekt tiež vyvíja tri sprievodné knižnice C zapojené do QuickJS a vhodné na individuálne použitie:

  • libregexp - rýchla implementácia regulárnych výrazov, plne kompatibilná so špecifikáciou Javascript ES 2019;
  • libunicode - kompaktná knižnica pre prácu s Unicode;
  • libbf - Implementácia ľubovoľne presných operácií s pohyblivou rádovou čiarkou a transcendentálnych funkcií s presným zaokrúhľovaním.

Zdroj: opennet.ru

Pridať komentár