QEMU ja FFmpeg Founder julkaisevat QuickJS JavaScript Enginen

Ranskalainen matemaatikko Fabrice Bellard, joka perusti kerran QEMU- ja FFmpeg-projektit ja loi myös nopeimman kaavan pi:n laskemiseen ja kehitti kuvamuodon BPG, julkaisi uuden JavaScript-moottorin ensimmäisen julkaisun QuickJS. Moottori on kompakti ja keskittynyt upottamiseen muihin järjestelmiin. Projektikoodi on kirjoitettu C-kielellä ja jaetaan MIT-lisenssillä. Saatavilla on myös Emscriptenillä WebAssemblyyn käännetty moottorikokoonpano, joka soveltuu suoritettavaksi selaimissa.

JavaScriptin toteutus tukee ES2019-spesifikaatio, mukaan lukien moduulit, asynkroniset generaattorit ja välityspalvelimet. Standardista poikkeavaa matematiikkaa tuetaan valinnaisesti. laajeneminen JavaScriptille, kuten BigInt- ja BigFloat-tyypeille, sekä operaattorin ylikuormitus. Suorituskyvyn kannalta QuickJS on merkittävä yli olemassa olevia analogeja, esimerkiksi testissä
bench-v8 on moottorin edellä XS 35%, duktape yli kaksi kertaa jerryscript kolme kertaa ja MuJS Seitsemän kertaa.

Moottorin sovelluksiin upottamiseen tarkoitetun kirjaston lisäksi projekti tarjoaa myös qjs-tulkin, jolla voidaan ajaa JavaScript-koodia komentoriviltä. Lisäksi saatavilla on qjsc-kääntäjä, joka pystyy luomaan itsenäisiä suoritettavia tiedostoja, jotka eivät vaadi ulkoisia riippuvuuksia.

Tärkeimmät ominaisuudet:

  • Kompakti ja helppo integroida muihin projekteihin. Koodi sisältää vain muutamia C-tiedostoja, joiden rakentaminen ei vaadi ulkoisia riippuvuuksia. Käytetty yksinkertainen sovellus vie noin 190 kt;
  • Erittäin korkea suorituskyky ja lyhyt käynnistysaika. 56 tuhannen ECMAScript-yhteensopivuustestin läpäiseminen kestää noin 100 sekuntia, kun se suoritetaan tyypillisen pöytätietokoneen yhdellä ytimellä. Ajonaikainen alustus kestää alle 300 mikrosekuntia;
  • Lähes täysi tuki ES2019-spesifikaatiolle ja täysi tuki liitteelle B, joka määrittelee komponentit yhteensopivuutta vanhempien verkkosovellusten kanssa;
  • Kaikkien ECMAScript Test Suiten testien läpäiseminen;
  • Tuki Javascript-koodin kääntämiseen suoritettaviksi tiedostoiksi ilman ulkoisia riippuvuuksia;
  • Viitemääräinen roskakori ilman puhdistusjaksoa, mikä mahdollisti ennakoitavan toiminnan ja pienensi muistin kulutusta;
  • Joukko laajennuksia matemaattisiin laskelmiin JavaScript-kielellä;
  • Shell koodin suorittamiseen komentorivitilassa, joka tukee kontekstuaalista koodin korostusta;
  • Kompakti vakiokirjasto, jossa on sidoksia C-kirjaston yli.

Hankkeessa kehitetään myös kolme QuickJS:ssä mukana olevaa ja erilliseen sovellukseen soveltuvaa C-kirjastoa:

  • libregexp on säännöllisten lausekkeiden nopea toteutus, joka on täysin yhteensopiva Javascript ES 2019 -määrityksen kanssa;
  • libunicode - kompakti kirjasto Unicoden kanssa työskentelemiseen;
  • libbf on mielivaltaisten tarkkojen liukulukuoperaatioiden ja tarkan pyöristyksen transsendenttisten funktioiden toteutus.

Lähde: opennet.ru

Lisää kommentti