Osnivač QEMU i FFmpeg objavljuje QuickJS JavaScript Engine

Francuski matematičar Fabrice Bellard, koji je osnovao projekte QEMU i FFmpeg, također je kreirao najbržu formulu za izračunavanje Pi i razvio format slike .bpg, objavio je prvo izdanje novog JavaScript motora QuickJS. Motor je kompaktan i dizajniran za integraciju u druge sisteme. Kod projekta je napisan u C i distribuira se pod MIT licencom. Dostupna je i izgradnja motora, kompajlirana u WebAssembly koristeći Emscripten i pogodna za izvršavanje u pretraživačima.

Implementacija JavaScripta podržava ES2019 specifikacija, uključujući module, asinhrone generatore i proksije. Nestandardna matematika je opciono podržana ekspanzija za JavaScript, kao što su tipovi BigInt i BigFloat, kao i preopterećenje operatera. Performanse QuickJS-a su značajne superiorniji od dostupni analogi, na primjer, u testu
bench-v8 je ispred motora XS na 35%, duktape više od dva puta jerryscript tri puta i MuJS sedam puta.

Pored biblioteke za ugradnju motora u aplikacije, projekat nudi i qjs interpreter, koji se može koristiti za pokretanje JavaScript koda iz komandne linije. Štaviše, dostupan je qjsc kompajler, sposoban da generiše izlazne izvršne datoteke pogodne za samostalno izvršavanje koje ne zahtevaju spoljne zavisnosti.

Glavne karakteristike:

  • Kompaktan i lak za integraciju u druge projekte. Kod uključuje samo nekoliko C datoteka koje ne zahtijevaju vanjske ovisnosti za asembler. Najjednostavnija kompajlirana aplikacija zauzima oko 190 KB;
  • Vrlo visoke performanse i kratko vrijeme pokretanja. Prolaženje 56 hiljada ECMAScript testova kompatibilnosti traje oko 100 sekundi kada se izvrši na jednom jezgru običnog desktop računara. Runtime inicijalizacija traje manje od 300 mikrosekundi;
  • Gotovo puna podrška za ES2019 specifikaciju i puna podrška za Dodatak B, koji definira komponente za kompatibilnost sa naslijeđenim web aplikacijama;
  • Potpuno polaganje svih testova iz ECMAScript Test Suite;
  • Podrška za kompajliranje Javascript koda u izvršne datoteke bez vanjskih ovisnosti;
  • Sakupljač smeća zasnovan na brojanju referenci bez cikličkog čišćenja, što nam je omogućilo da postignemo predvidljivo ponašanje i smanjimo potrošnju memorije;
  • Skup ekstenzija za matematičke proračune u JavaScript-u;
  • Školjka za izvršavanje koda u načinu komandne linije, podržava kontekstualno isticanje koda;
  • Kompaktna standardna biblioteka sa omotima preko C biblioteke.

Projekat takođe razvija tri prateće C biblioteke uključene u QuickJS i pogodne za individualnu upotrebu:

  • libregexp - brza implementacija regularnih izraza, potpuno kompatibilna sa Javascript ES 2019 specifikacijom;
  • libunicode - kompaktna biblioteka za rad sa Unicode-om;
  • libbf - Implementacija proizvoljnih preciznih operacija s plutajućim zarezom i transcendentalnih funkcija s preciznim zaokruživanjem.

izvor: opennet.ru

Dodajte komentar