Osnivač QEMU i FFmpeg objavljuje QuickJS JavaScript Engine

Francuski matematičar Fabrice Bellard, koji je svojedobno utemeljio projekte QEMU i FFmpeg, a također je stvorio najbržu formulu za izračunavanje pi i razvio format slike BPG, objavio je prvo izdanje novog JavaScript motora QuickJS. Motor je kompaktan i usmjeren na ugradnju u druge sustave. Projektni kod je napisan u C-u i distribuiran pod licencom MIT-a. Dostupan je i sklop motora kompajliran na WebAssembly pomoću Emscriptena i prikladan za izvođenje u preglednicima.

Implementacija JavaScripta podupire specifikaciju ES2019, uključujući module, asinkrone generatore i proxyje. Nestandardna matematika je izborno podržana. proširenje za JavaScript, kao što su tipovi BigInt i BigFloat, kao i preopterećenje operatera. Što se tiče performansi, QuickJS je značajan nadređeni postojeći analozi, 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.

Uz biblioteku za ugradnju motora u aplikacije, projekt također nudi qjs interpreter, koji se može koristiti za pokretanje JavaScript koda iz naredbenog retka. Štoviše, dostupan je kompajler qjsc koji može generirati samostalne izvršne datoteke koje ne zahtijevaju vanjske ovisnosti.

Glavne značajke:

  • Kompaktan i jednostavan za integraciju u druge projekte. Kod uključuje samo nekoliko C datoteka koje ne zahtijevaju vanjske ovisnosti za izgradnju. Sastavljena jednostavna aplikacija zauzima oko 190 KB;
  • Vrlo visoke performanse i kratko vrijeme pokretanja. Prolaženje 56 tisuća ECMAScript testova kompatibilnosti traje oko 100 sekundi kada se izvršavaju na jednoj jezgri tipičnog stolnog računala. Inicijalizacija vremena izvođenja traje manje od 300 mikrosekundi;
  • Gotovo puna podrška za specifikaciju ES2019 i puna podrška za Aneks B, koji definira komponente za kompatibilnost sa starijim web aplikacijama;
  • Potpuni prolaz svih testova iz ECMAScript test paketa;
  • Podrška za kompajliranje Javascript koda u izvršne datoteke bez vanjskih ovisnosti;
  • Skupljač smeća s brojanjem referenci bez ciklusa čišćenja, što je omogućilo predvidljivo ponašanje i smanjenu potrošnju memorije;
  • Skup ekstenzija za matematičke izračune u jeziku JavaScript;
  • Ljuska za izvršavanje koda u načinu naredbenog retka koja podržava kontekstualno označavanje koda;
  • Kompaktna standardna biblioteka s vezama preko C biblioteke.

Projekt također razvija tri popratne C-biblioteke uključene u QuickJS i prikladne za zasebnu aplikaciju:

  • libregexp je brza implementacija regularnih izraza koja je u potpunosti usklađena sa specifikacijom Javascript ES 2019;
  • libunicode - kompaktna biblioteka za rad s Unicodeom;
  • libbf je implementacija operacija s pomičnim zarezom proizvoljne preciznosti i točnih transcendentalnih funkcija zaokruživanja.

Izvor: opennet.ru

Dodajte komentar