I-QEMU kanye ne-FFmpeg Founder Ishicilela Injini Ye-JavaScript e-QuickJS

Isazi sezibalo esingumFulentshi u-Fabrice Bellard, owasungula iphrojekthi ye-QEMU kanye ne-FFmpeg, futhi udale ifomula esheshayo yokubala inombolo engu-Pi futhi wathuthukisa ifomethi yesithombe. I-BPG, ishicilele ukukhishwa kokuqala kwenjini entsha ye-JavaScript QuickJS. Injini ihlangene futhi yakhelwe ukuhlanganiswa kwezinye izinhlelo. Ikhodi yephrojekthi ibhalwe ngo-C futhi isatshalaliswa ngaphansi kwelayisensi ye-MIT. Ukwakhiwa kwenjini nakho kuyatholakala, kuhlanganiswe kuWebAssembly kusetshenziswa i-Emscripten futhi ilungele ukusetshenziswa kuziphequluli.

Ukuqaliswa kwe-JavaScript isekela Ukucaciswa kwe-ES2019, kufaka phakathi amamojula, ama-generator asynchronous kanye nama-proxies. Izibalo ezingajwayelekile zisekelwa ngokuzithandela ukukhuliswa ye-JavaScript, njengezinhlobo ze-BigInt ne-BigFloat, kanye ukulayisha ngokweqile komsebenzisi. Ukusebenza kwe-QuickJS kubalulekile mkhulu kune- ama-analogue atholakalayo, isibonelo, ekuhlolweni
ibhentshi-v8 lingaphambi kwenjini XS ngo-35%, I-DukTape ngaphezu kokuphindwe kabili I-JerryScript kathathu futhi I-MuJS kasikhombisa.

Ngokungeziwe kumtapo wolwazi wokushumeka injini ezinhlelweni zokusebenza, iphrojekthi iphinde inikeze umhumushi we-qjs, ongasetshenziswa ukusebenzisa ikhodi ye-JavaScript emugqeni womyalo. Ngaphezu kwalokho, i-qjsc compiler iyatholakala, ekwazi ukukhiqiza amafayela asebenzisekayo okukhiphayo afanele ukwenziwa okuzimele okungadingi ukuncika kwangaphandle.

Izici eziyinhloko:

  • Ihlangene futhi kulula ukuyihlanganisa kwamanye amaphrojekthi. Ikhodi ihlanganisa kuphela amafayela C ambalwa angadingi ukuncika kwangaphandle ukuze ahlanganiswe. Uhlelo olulula oluhlanganisiwe luthatha cishe u-190 KB;
  • Ukusebenza okuphezulu kakhulu nesikhathi sokuqalisa esifushane. Ukuphumelela kokuhlolwa kokuhambisana kwe-ECMAScript okuyizinkulungwane ezingama-56 kuthatha cishe imizuzwana eyi-100 uma kwenziwa kumongo owodwa we-PC yedeskithophu evamile. Ukuqalisa kwesikhathi sokusebenza kuthatha amasekhondi amancane angaphansi kwama-300;
  • Cishe ukusekelwa okugcwele kokucaciswa kwe-ES2019 nokusekelwa okugcwele kweSithasiselo B, esichaza izingxenye zokusebenzisana nezinhlelo zokusebenza zewebhu eziyigugu;
  • Ukuphasa okuphelele kwazo zonke izivivinyo ezivela ku-ECMAScript Test Suite;
  • Ukusekelwa kokuhlanganisa ikhodi ye-Javascript kumafayela asebenzisekayo ngaphandle kokuncika kwangaphandle;
  • Umqoqi kadoti ngokusekelwe ekubaleni kwereferensi ngaphandle kokuhlanza umjikelezo, okusivumele ukuba sifinyelele ukuziphatha okubikezelwe futhi sinciphise ukusetshenziswa kwememori;
  • Isethi yezandiso zezibalo zezibalo ku-JavaScript;
  • Igobolondo lokukhipha ikhodi kumodi yomugqa womyalo, esekela ukugqanyiswa kwekhodi yomongo;
  • Ilabhulali ejwayelekile ehlangene enamaphepha phezu komtapo C.

Iphrojekthi futhi ithuthukisa imitapo yolwazi emithathu ehambisana no-C ebandakanyeka ku-QuickJS futhi elungele ukusetshenziswa komuntu ngamunye:

  • libregexp - ukuqaliswa okusheshayo kwezinkulumo ezivamile, ezihambisana ngokugcwele nencazelo ye-Javascript ES 2019;
  • libunicode - umtapo compact ukusebenza nge Unicode;
  • libbf - Ukuqaliswa kokusebenza kwephoyinti elintantayo elinembayo ngokunganaki kanye nemisebenzi ye-transcendental enomjikelezo oqondile.

Source: opennet.ru

Engeza amazwana