QEMU un FFmpeg dibinātājs izdod QuickJS JavaScript dzinēju

Franču matemātiķis Fabriss Belards, kurš savulaik nodibināja QEMU un FFmpeg projektus, kā arī izveidoja ātrāko pi aprēķināšanas formulu un izstrādāja attēla formātu BPG, publicēja pirmo jaunā JavaScript dzinēja laidienu QuickJS. Dzinējs ir kompakts un vērsts uz iegulšanu citās sistēmās. Projekta kods ir rakstīts C valodā un tiek izplatīts saskaņā ar MIT licenci. Ir pieejams arī dzinēja komplekts, kas kompilēts WebAssembly, izmantojot Emscripten un piemērots izpildei pārlūkprogrammās.

JavaScript ieviešana atbalsta ES2019 specifikācija, tostarp moduļi, asinhronie ģeneratori un starpniekserveri. Pēc izvēles tiek atbalstīta nestandarta matemātika. paplašināšana JavaScript, piemēram, BigInt un BigFloat tipiem, kā arī operatora pārslodze. Veiktspējas ziņā QuickJS ir nozīmīgs pārāks par esošie analogi, piemēram, testā
bench-v8 ir priekšā dzinējam XS 35%, duktape vairāk nekā divas reizes Džerijs trīs reizes un MuJS septiņas reizes.

Papildus bibliotēkai dzinēja iegulšanai lietojumprogrammās projekts piedāvā arī qjs tulku, ko var izmantot, lai palaistu JavaScript kodu no komandrindas. Turklāt ir pieejams qjsc kompilators, kas spēj ģenerēt atsevišķus izpildāmos failus, kuriem nav nepieciešamas ārējas atkarības.

Galvenās iezīmes:

  • Kompakts un viegli integrējams citos projektos. Kods ietver tikai dažus C failus, kuru izveidei nav nepieciešamas ārējas atkarības. Sastādītā vienkāršā lietojumprogramma aizņem apmēram 190 KB;
  • Ļoti augsta veiktspēja un zems palaišanas laiks. 56 100 ECMAScript saderības testu nokārtošana aizņem apmēram 300 sekundes, ja tie tiek izpildīti vienā tipiskā galddatora kodolā. izpildlaika inicializācija aizņem mazāk nekā XNUMX mikrosekundes;
  • Gandrīz pilnīgs ES2019 specifikācijas atbalsts un pilns atbalsts B pielikumam, kurā ir definēti komponenti saderībai ar vecākām tīmekļa lietojumprogrammām;
  • Pilnīga visu testu nokārtošana no ECMAScript Test Suite;
  • Atbalsts Javascript koda kompilēšanai izpildāmos failos bez ārējām atkarībām;
  • Atsauces skaitīšanas atkritumu savācējs bez tīrīšanas cikla, kas ļāva prognozēt uzvedību un samazināt atmiņas patēriņu;
  • Matemātisko aprēķinu paplašinājumu komplekts JavaScript valodā;
  • Apvalks koda izpildei komandrindas režīmā, kas atbalsta kontekstuālā koda izcelšanu;
  • Kompakta standarta bibliotēka ar saitēm virs C bibliotēkas.

Projekts arī izstrādā trīs pavadošās C bibliotēkas, kas iesaistītas QuickJS un ir piemērotas atsevišķai lietojumprogrammai:

  • libregexp ir ātra regulāro izteiksmju ieviešana, kas pilnībā atbilst Javascript ES 2019 specifikācijai;
  • libunicode - kompakta bibliotēka darbam ar Unicode;
  • libbf ir patvaļīgas precizitātes peldošā komata operāciju un precīzas noapaļošanas transcendentālo funkciju ieviešana.

Avots: opennet.ru

Pievieno komentāru