Ustanovitelj QEMU in FFmpeg objavlja QuickJS JavaScript Engine

Francoski matematik Fabrice Bellard, ki je nekoč ustanovil projekta QEMU in FFmpeg, ustvaril pa je tudi najhitrejšo formulo za izračun števila pi in razvil slikovni format. BDP, objavil prvo izdajo novega motorja JavaScript QuickJS. Motor je kompakten in usmerjen na vgradnjo v druge sisteme. Projektna koda je napisana v C in se distribuira pod licenco MIT. Na voljo je tudi sklop mehanizma, prevedenega v WebAssembly z uporabo Emscripten in primeren za izvajanje v brskalnikih.

Izvedba JavaScripta podpira specifikacijo ES2019, vključno z moduli, asinhronimi generatorji in posredniki. Nestandardna matematika je neobvezno podprta. širitev za JavaScript, kot sta tipa BigInt in BigFloat, pa tudi preobremenitev operaterja. Kar zadeva zmogljivost, je QuickJS pomemben boljši od obstoječi analogi, na primer v testu
bench-v8 je pred motorjem XS pri 35%, duktape več kot dvakrat jerryscript trikrat in MuJS sedemkrat.

Projekt poleg knjižnice za vgradnjo motorja v aplikacije ponuja tudi tolmač qjs, ki ga lahko uporabimo za zagon JavaScript kode iz ukazne vrstice. Poleg tega je na voljo prevajalnik qjsc, ki lahko ustvari samostojne izvršljive datoteke, ki ne potrebujejo zunanjih odvisnosti.

Glavne značilnosti:

  • Kompakten in enostaven za integracijo v druge projekte. Koda vključuje le nekaj datotek C, ki za gradnjo ne potrebujejo zunanjih odvisnosti. Prevedena preprosta aplikacija zavzame približno 190 KB;
  • Zelo visoka zmogljivost in kratek čas zagona. Opravljanje 56 tisoč testov združljivosti ECMAScript traja približno 100 sekund, ko se izvajajo na enem jedru običajnega namiznega računalnika. Inicializacija izvajalnega časa traja manj kot 300 mikrosekund;
  • Skoraj popolna podpora za specifikacijo ES2019 in popolna podpora za prilogo B, ki opredeljuje komponente za združljivost s starejšimi spletnimi aplikacijami;
  • Popolno opravljeni vsi testi iz zbirke testov ECMAScript;
  • Podpora za prevajanje kode Javascript v izvedljive datoteke brez zunanjih odvisnosti;
  • Zbiralnik smeti s štetjem sklicev brez ciklusov čiščenja, kar je omogočilo predvidljivo vedenje in zmanjšano porabo pomnilnika;
  • Niz razširitev za matematične izračune v jeziku JavaScript;
  • Lupina za izvajanje kode v načinu ukazne vrstice, ki podpira kontekstualno označevanje kode;
  • Kompaktna standardna knjižnica z vezavami prek knjižnice C.

Projekt razvija tudi tri spremljevalne knjižnice C, vključene v QuickJS in primerne za ločeno aplikacijo:

  • libregexp je hitra implementacija regularnih izrazov, ki je popolnoma skladna s specifikacijo Javascript ES 2019;
  • libunicode - kompaktna knjižnica za delo z Unicode;
  • libbf je implementacija poljubno natančnih operacij s plavajočo vejico in natančnih transcendentalnih funkcij zaokroževanja.

Vir: opennet.ru

Dodaj komentar