QEMU en FFmpeg-stigter publiseer QuickJS JavaScript Engine

Franse wiskundige Fabrice Bellard, wat die QEMU- en FFmpeg-projekte gestig het, het ook die vinnigste formule vir die berekening van die getal Pi geskep en die beeldformaat ontwikkel BBP, het die eerste vrystelling van die nuwe JavaScript-enjin gepubliseer QuickJS. Die enjin is kompak en ontwerp vir integrasie in ander stelsels. Die projekkode is in C geskryf en word onder die MIT-lisensie versprei. 'n Bou van die enjin is ook beskikbaar, saamgestel in WebAssembly met behulp van Emscripten en geskik vir uitvoering in blaaiers.

JavaScript-implementering ondersteun ES2019-spesifikasie, insluitend modules, asinchroniese kragopwekkers en gevolmagtigdes. Nie-standaard wiskunde word opsioneel ondersteun uitbreiding vir JavaScript, soos BigInt en BigFloat tipes, sowel as operateur oorlaai. Die prestasie van QuickJS is beduidend beter as beskikbare analoë, byvoorbeeld, in die toets
bench-v8 is voor die enjin XS teen 35%, duktape meer as twee keer jerryscript drie keer en MuJS sewe keer.

Benewens die biblioteek vir die inbedding van die enjin in toepassings, bied die projek ook 'n qjs-tolk, wat gebruik kan word om JavaScript-kode vanaf die opdragreël uit te voer. Boonop is die qjsc-samesteller beskikbaar, wat in staat is om uitvoerbare lêers te genereer wat geskik is vir selfstandige uitvoering wat nie eksterne afhanklikhede benodig nie.

Belangrikste kenmerke:

  • Kompak en maklik om by ander projekte te integreer. Die kode bevat slegs 'n paar C-lêers wat nie eksterne afhanklikhede vir samestelling benodig nie. Die eenvoudigste saamgestelde toepassing neem ongeveer 190 KB;
  • Baie hoë werkverrigting en kort opstarttyd. Om 56 duisend ECMAScript-versoenbaarheidstoetse te slaag, neem ongeveer 100 sekondes wanneer dit op 'n enkele kern van 'n gewone rekenaarrekenaar uitgevoer word. Looptyd-inisialisering neem minder as 300 mikrosekondes;
  • Byna volle ondersteuning vir die ES2019-spesifikasie en volle ondersteuning vir Bylaag B, wat komponente definieer vir versoenbaarheid met verouderde webtoepassings;
  • Voltooi slaag van alle toetse van die ECMAScript-toetssuite;
  • Ondersteuning vir die samestelling van Javascript-kode in uitvoerbare lêers sonder eksterne afhanklikhede;
  • 'n Vullisverwyderaar gebaseer op verwysingtelling sonder sikliese skoonmaak, wat ons in staat gestel het om voorspelbare gedrag te bereik en geheueverbruik te verminder;
  • 'n Stel uitbreidings vir wiskundige berekeninge in JavaScript;
  • 'n Skulp vir die uitvoering van kode in die opdragreëlmodus, wat kontekstuele kode-verligting ondersteun;
  • Kompakte standaardbiblioteek met omhulsels oor die C-biblioteek.

Die projek ontwikkel ook drie gepaardgaande C-biblioteke wat by QuickJS betrokke is en geskik is vir individuele gebruik:

  • libregexp - vinnige implementering van gereelde uitdrukkings, ten volle versoenbaar met die Javascript ES 2019-spesifikasie;
  • libunicode - 'n kompakte biblioteek om met Unicode te werk;
  • libbf - Implementering van arbitrêre presisie drywende punt bewerkings en transendentale funksies met presiese afronding.

Bron: opennet.ru

Voeg 'n opmerking