Themeluesi i QEMU dhe FFmpeg publikon QuickJS JavaScript Engine

Matematikani francez Fabrice Bellard, i cili dikur themeloi projektet QEMU dhe FFmpeg, dhe gjithashtu krijoi formulën më të shpejtë për llogaritjen e pi dhe zhvilloi formatin e imazhit BPGJ, publikoi lëshimin e parë të një motori të ri JavaScript QuickJS. Motori është kompakt dhe i fokusuar në futjen në sisteme të tjera. Kodi i projektit është shkruar në C dhe shpërndahet nën licencën MIT. Gjithashtu i disponueshëm është një montim i motorit i përpiluar në WebAssembly duke përdorur Emscripten dhe i përshtatshëm për ekzekutim në shfletues.

Zbatimi i JavaScript mbështet specifikimet ES2019, duke përfshirë modulet, gjeneratorët asinkron dhe proxies. Matematika jo standarde mbështetet opsionalisht. zgjerim për JavaScript, të tilla si llojet BigInt dhe BigFloat, si dhe mbingarkesa e operatorit. Për sa i përket performancës, QuickJS është domethënës superiore ndaj analogët ekzistues, për shembull, në provë
bench-v8 është përpara motorit XS në 35%, duktape më shumë se dy herë jerryscript tre herë dhe MuJS shtatë herë.

Përveç bibliotekës për futjen e motorit në aplikacione, projekti ofron edhe interpretuesin qjs, i cili mund të përdoret për të ekzekutuar kodin JavaScript nga linja e komandës. Për më tepër, përpiluesi qjsc është i disponueshëm, i aftë për të gjeneruar skedarë të pavarur të ekzekutueshëm që nuk kërkojnë varësi të jashtme.

Karakteristikat kryesore:

  • Kompakt dhe i lehtë për t'u integruar në projekte të tjera. Kodi përfshin vetëm disa skedarë C që nuk kërkojnë varësi të jashtme për t'u ndërtuar. Aplikacioni i thjeshtë i përpiluar merr rreth 190 KB;
  • Performancë shumë e lartë dhe kohë e ulët e nisjes. Kalimi i 56 mijë testeve të përputhshmërisë ECMAScript kërkon rreth 100 sekonda kur ekzekutohet në një bërthamë të vetme të një kompjuteri desktop tipik. Inicializimi i kohës së ekzekutimit zgjat më pak se 300 mikrosekonda;
  • Mbështetje pothuajse e plotë për specifikimin ES2019 dhe mbështetje e plotë për Aneksin B, i cili përcakton komponentët për pajtueshmërinë me aplikacionet e vjetra të internetit;
  • Kalimi i plotë i të gjitha testeve nga ECMAScript Test Suite;
  • Mbështetje për përpilimin e kodit Javascript në skedarë të ekzekutueshëm pa varësi të jashtme;
  • Mbledhësi i mbeturinave i numëruar me referencë pa pastrim me biçikletë, i cili lejoi sjellje të parashikueshme dhe reduktim të konsumit të memories;
  • Një grup shtesash për llogaritjet matematikore në gjuhën JavaScript;
  • Një predhë për ekzekutimin e kodit në modalitetin e linjës së komandës që mbështet theksimin e kodit kontekstual;
  • Një bibliotekë standarde kompakte me lidhje mbi bibliotekën C.

Projekti gjithashtu zhvillon tre C-biblioteka shoqëruese të përfshira në QuickJS dhe të përshtatshme për një aplikim të veçantë:

  • libregexp është një zbatim i shpejtë i shprehjeve të rregullta që është plotësisht në përputhje me specifikimet Javascript ES 2019;
  • libunicode - një bibliotekë kompakte për të punuar me Unicode;
  • libbf është një implementim i operacioneve arbitrare me precizion lundrues dhe rrumbullakimi i saktë i funksioneve transcendentale.

Burimi: opennet.ru

Shto një koment