QEMU ja FFmpeg Founder avaldavad QuickJS JavaScripti mootori

Prantsuse matemaatik Fabrice Bellard, kes kunagi asutas QEMU ja FFmpeg projektid ning lõi ka kiireima valemi pi arvutamiseks ja töötas välja pildivormingu .bpg, avaldas uue JavaScripti mootori esimese versiooni QuickJS. Mootor on kompaktne ja keskendunud teistesse süsteemidesse integreerimisele. Projekti kood on kirjutatud C-keeles ja seda levitatakse MIT-i litsentsi all. Saadaval on ka Emscripteni abil WebAssemblysse kompileeritud mootori koost, mis sobib täitmiseks brauserites.

JavaScripti rakendamine toetab ES2019 spetsifikatsioon, sealhulgas moodulid, asünkroonsed generaatorid ja puhverserverid. Mittestandardset matemaatikat toetatakse valikuliselt. laienemine JavaScripti jaoks, nagu tüübid BigInt ja BigFloat, samuti operaatori ülekoormus. Toimivuse osas on QuickJS märkimisväärne parem kui olemasolevad analoogid, näiteks testis
bench-v8 on mootorist ees XS 35%juures, duktape rohkem kui kaks korda jerryscript kolm korda ja MuJS seitse korda.

Lisaks mootori rakendustesse manustamise teegile pakub projekt ka qjs-tõlget, mida saab kasutada JavaScripti koodi käivitamiseks käsurealt. Lisaks on saadaval qjsc-kompilaator, mis suudab genereerida iseseisvaid käivitatavaid faile, mis ei vaja väliseid sõltuvusi.

Põhijooned:

  • Kompaktne ja hõlpsasti integreeritav teistesse projektidesse. Kood sisaldab vaid mõnda C-faili, mille loomiseks pole vaja väliseid sõltuvusi. Koostatud lihtne rakendus võtab umbes 190 KB;
  • Väga kõrge jõudlus ja madal käivitusaeg. 56 tuhande ECMAScripti ühilduvustesti läbimine võtab umbes 100 sekundit, kui seda tehakse tavalise lauaarvuti ühes tuumas. Käitusaegne lähtestamine võtab vähem kui 300 mikrosekundit;
  • Peaaegu täielik tugi ES2019 spetsifikatsioonile ja täielik tugi B lisale, mis määratleb vanemate veebirakendustega ühilduvad komponendid;
  • ECMAScript Test Suite'i kõigi testide täielik läbimine;
  • Javascripti koodi kompileerimise tugi täitmisfailidesse ilma väliste sõltuvusteta;
  • Võrdlusloendatud prügikoguja ilma puhastustsüklita, mis võimaldas ennustatavat käitumist ja vähendas mälutarbimist;
  • Laienduste komplekt matemaatiliste arvutuste jaoks JavaScripti keeles;
  • Kest koodi käivitamiseks käsurearežiimis, mis toetab kontekstipõhise koodi esiletõstmist;
  • Kompaktne standardteek, mis on seotud C-teegiga.

Projekt arendab ka kolme QuickJS-i kaasatud ja eraldi rakenduse jaoks sobivat kaas-C-teeki:

  • libregexp on regulaaravaldiste kiire rakendus, mis on täielikult kooskõlas Javascript ES 2019 spetsifikatsiooniga;
  • libunicode - kompaktne raamatukogu Unicode'iga töötamiseks;
  • libbf on suvaliste täpsete ujukomaoperatsioonide ja täpse ümardamise transtsendentaalsete funktsioonide rakendus.

Allikas: opennet.ru

Lisa kommentaar