A QEMU és az FFmpeg alapítója közzétette a QuickJS JavaScript motort

Fabrice Bellard francia matematikus, aki a QEMU és az FFmpeg projekteket alapította, megalkotta a leggyorsabb képletet a Pi szám kiszámításához, és kifejlesztette a képformátumot. BPG, közzétette az új JavaScript motor első kiadását QuickJS. A motor kompakt, és más rendszerekbe való integrálásra tervezték. A projekt kódja C nyelven íródott, és az MIT licenc alatt kerül terjesztésre. A motor egy buildje is elérhető, Emscripten segítségével WebAssembly-be fordítva, és böngészőben való futtatásra alkalmas.

JavaScript implementáció támogatja ES2019 specifikáció, beleértve a modulokat, aszinkron generátorokat és proxykat. A nem szabványos matematika opcionálisan támogatott terjeszkedés JavaScripthez, például BigInt és BigFloat típusokhoz, valamint kezelő túlterhelése. A QuickJS teljesítménye jelentős fölött elérhető analógok, például a tesztben
bench-v8 megelőzi a motort XS 35%, DukTape több mint duplájára nőtt jerryscript háromszor és MuJS hétszer.

A motor alkalmazásokba való beágyazására szolgáló könyvtár mellett a projekt egy qjs értelmezőt is kínál, amellyel JavaScript kódot lehet futtatni parancssorból. Ezenkívül rendelkezésre áll a qjsc fordító, amely képes önálló végrehajtásra alkalmas kimeneti futtatható fájlok előállítására, amelyek nem igényelnek külső függőséget.

Főbb jellemzői:

  • Kompakt és könnyen integrálható más projektekbe. A kód csak néhány C-fájlt tartalmaz, amelyek nem igényelnek külső függőséget az összeállításhoz. A legegyszerűbb lefordított alkalmazás körülbelül 190 KB-ot vesz igénybe;
  • Nagyon nagy teljesítmény és rövid indítási idő. Az 56 ezer ECMAScript-kompatibilitási teszt sikeres teljesítése körülbelül 100 másodpercet vesz igénybe, ha egy normál asztali számítógép egyetlen magján hajtják végre. A futásidejű inicializálás kevesebb mint 300 mikroszekundumot vesz igénybe;
  • Szinte teljes mértékben támogatja az ES2019 specifikációt és teljes mértékben támogatja a B függeléket, amely meghatározza a régi webalkalmazásokkal való kompatibilitás összetevőit;
  • Az ECMAScript Test Suite összes tesztjének teljes teljesítése;
  • Javascript kód futtatható fájlokká fordításának támogatása külső függőségek nélkül;
  • Ciklikus tisztítás nélküli referenciaszámláláson alapuló szemétgyűjtő, amely lehetővé tette a kiszámítható viselkedés elérését és a memóriafelhasználás csökkentését;
  • Bővítmények készlete matematikai számításokhoz JavaScriptben;
  • Shell kód parancssori módban történő végrehajtásához, amely támogatja a kontextuális kódkiemelést;
  • Kompakt szabványos könyvtár a C könyvtár feletti burkolókkal.

A projekt három kísérő, QuickJS-ben részt vevő és egyéni használatra alkalmas C-könyvtárat is fejleszt:

  • libregexp - reguláris kifejezések gyors megvalósítása, teljes mértékben kompatibilis a Javascript ES 2019 specifikációval;
  • libunicode - egy kompakt könyvtár a Unicode-dal való munkához;
  • libbf - Tetszőleges precíziós lebegőpontos műveletek és transzcendentális függvények megvalósítása pontos kerekítéssel.

Forrás: opennet.ru

Hozzászólás