Fondinto de QEMU kaj FFmpeg Eldonas QuickJS JavaScript Engine

Franca matematikisto Fabrice Bellard, kiu fondis la projektojn QEMU kaj FFmpeg, ankaŭ kreis la plej rapidan formulon por kalkuli Pi kaj evoluigis la bildformaton. MEP, publikigis la unuan eldonon de la nova JavaScript-motoro QuickJS. La motoro estas kompakta kaj dizajnita por integriĝo en aliajn sistemojn. La projektkodo estas skribita en C kaj estas distribuita sub la MIT-licenco. Konstruaĵo de la motoro ankaŭ haveblas, kompilita en WebAssembly uzante Emscripten kaj taŭga por ekzekuto en retumiloj.

Efektivigo de JavaScript subtenoj ES2019-specifo, inkluzive de moduloj, nesinkronaj generatoroj kaj prokuriloj. Ne-normaj matematikoj estas laŭvole subtenataj pligrandigo por JavaScript, kiel ekzemple BigInt kaj BigFloat tipoj, same kiel operaciisto troŝarĝado. La agado de QuickJS estas signifa superulo al disponeblaj analogoj, ekzemple, en la testo
bench-v8 estas antaŭ la motoro XS ĉe 35%, duktape pli ol dufoje ĵerzekripto trifoje kaj MuJS sep fojojn.

Krom la biblioteko por enigi la motoron en aplikojn, la projekto ankaŭ ofertas qjs-interpretilon, kiu povas esti uzata por ruli JavaScript-kodon de la komandlinio. Plie, la qjsc-kompililo estas disponebla, kapabla generi eligajn ruleblajn dosierojn taŭgajn por memstara ekzekuto, kiuj ne postulas eksterajn dependecojn.

Ŝlosilaj Karakterizaĵoj:

  • Kompakta kaj facile integrebla en aliaj projektoj. La kodo inkluzivas nur kelkajn C-dosierojn, kiuj ne postulas eksterajn dependecojn por kunigo. La plej simpla kompilita aplikaĵo prenas ĉirkaŭ 190 KB;
  • Tre alta rendimento kaj mallonga ektempo. Trapasi 56 mil ECMAScript-kongruecajn testojn daŭras ĉirkaŭ 100 sekundojn kiam ekzekutita sur ununura kerno de regula labortabla komputilo. Rultempa inicialigo prenas malpli ol 300 mikrosekundojn;
  • Preskaŭ plena subteno por la specifo ES2019 kaj plena subteno por Apendico B, kiu difinas komponantojn por kongruo kun heredaj TTT-aplikoj;
  • Kompleta trapaso de ĉiuj testoj de la ECMAScript Test Suite;
  • Subteno por kompili Javascript-kodon en ruleblajn dosierojn sen eksteraj dependecoj;
  • Rubokolektilo bazita sur referenca nombrado sen cikla purigado, kio permesis al ni atingi antaŭvideblan konduton kaj redukti memorkonsumon;
  • Aro de etendaĵoj por matematikaj kalkuloj en JavaScript;
  • Ŝelo por ekzekuti kodon en komandlinia reĝimo, subtenanta kuntekstan kodon reliefigon;
  • Kompakta norma biblioteko kun envolvaĵoj super la C-biblioteko.

La projekto ankaŭ evoluigas tri akompanajn C-bibliotekojn implikitajn en QuickJS kaj taŭgajn por individua uzo:

  • libregexp - rapida efektivigo de regulaj esprimoj, plene kongrua kun la Javascript ES 2019-specifo;
  • libunicode - kompakta biblioteko por labori kun Unikodo;
  • libbf - Efektivigo de arbitraj precizecaj glitkoma operacioj kaj transcendaj funkcioj kun preciza rondigo.

fonto: opennet.ru

Aldoni komenton