QEMU ir FFmpeg įkūrėjas išleidžia „QuickJS JavaScript Engine“.

Prancūzų matematikas Fabrice'as Bellardas, įkūręs QEMU ir FFmpeg projektus, taip pat sukūrė greičiausią skaičiaus Pi skaičiavimo formulę ir sukūrė vaizdo formatą. BPG, paskelbė pirmąjį naujojo JavaScript variklio leidimą QuickJS. Variklis yra kompaktiškas ir skirtas integruoti į kitas sistemas. Projekto kodas parašytas C ir platinamas pagal MIT licenciją. Taip pat yra variklio versija, sukompiliuota į WebAssembly naudojant Emscripten ir tinkama vykdyti naršyklėse.

„JavaScript“ diegimas palaiko ES2019 specifikacija, įskaitant modulius, asinchroninius generatorius ir tarpinius serverius. Pasirinktinai palaikoma nestandartinė matematika plėtros „JavaScript“, pvz., „BigInt“ ir „BigFloat“ tipai, taip pat operatoriaus perkrova. „QuickJS“ našumas yra reikšmingas pranašesnis už galimi analogai, pavyzdžiui, teste
bench-v8 lenkia variklį XS 35%, DukTape daugiau nei dvigubai „JerryScript“ tris kartus ir MuJS septynis kartus.

Be bibliotekos, skirtos varikliui įterpti į programas, projektas taip pat siūlo qjs interpretatorių, kuris gali būti naudojamas JavaScript kodui paleisti iš komandinės eilutės. Be to, yra qjsc kompiliatorius, galintis generuoti išvesties vykdomuosius failus, tinkamus savarankiškam vykdymui, kuriam nereikia išorinių priklausomybių.

Pagrindiniai bruožai:

  • Kompaktiškas ir lengvai integruojamas į kitus projektus. Kode yra tik keli C failai, kuriems surinkti nereikia išorinių priklausomybių. Paprasčiausia sukompiliuota programa užima apie 190 KB;
  • Labai didelis našumas ir trumpas paleidimo laikas. 56 tūkstančių ECMAScript suderinamumo testų išlaikymas užtrunka apie 100 sekundžių, kai jie atliekami viename įprasto stalinio kompiuterio branduolyje. Vykdymo laiko inicijavimas trunka mažiau nei 300 mikrosekundžių;
  • Beveik visiškas ES2019 specifikacijos palaikymas ir visiškas B priedo, kuriame apibrėžiami komponentai, skirti suderinti su senomis žiniatinklio programomis, palaikymas;
  • Visiškai išlaikyti visus testus iš ECMAScript Test Suite;
  • „Javascript“ kodo kompiliavimo į vykdomuosius failus palaikymas be išorinių priklausomybių;
  • Šiukšlių rinktuvas, pagrįstas etaloniniu skaičiavimu be ciklinio valymo, kuris leido pasiekti nuspėjamąjį elgesį ir sumažinti atminties suvartojimą;
  • „JavaScript“ matematinių skaičiavimų plėtinių rinkinys;
  • Apvalkalas, skirtas kodui vykdyti komandinės eilutės režimu, palaikantis kontekstinio kodo paryškinimą;
  • Kompaktiška standartinė biblioteka su įvyniokliais virš C bibliotekos.

Projekte taip pat kuriamos trys papildomos C bibliotekos, dalyvaujančios QuickJS ir tinkamos individualiam naudojimui:

  • libregexp – greitas įprastų posakių diegimas, visiškai suderinamas su Javascript ES 2019 specifikacija;
  • libunicode - kompaktiška biblioteka, skirta darbui su Unicode;
  • libbf – savavališkų tikslių slankiojo kablelio operacijų ir transcendentinių funkcijų įgyvendinimas su tiksliu apvalinimu.

Šaltinis: opennet.ru

Добавить комментарий