Umseki we-QEMU kunye neFFmpeg bapapashe i-QuickJS JavaScript injini

Ingcali yezibalo yaseFransi uFabrice Bellard, owaseka iQEMU kunye neeprojekthi zeFFmpeg, kunye nokudala ifomyula ekhawulezayo yokubala iPi kunye nokuphuhlisa ifomathi yomfanekiso. GDP, ipapashe ukukhutshwa kokuqala kwenjini entsha yeJavaScript QuickJS. I-injini ihlangene kwaye yenzelwe ukudibanisa kwezinye iinkqubo. Ikhowudi yeprojekthi ibhalwe kwi-C kwaye ihanjiswa phantsi kwelayisenisi ye-MIT. Ukwakhiwa kwe-injini kukwafumaneka, kuhlanganiswe kwiWebAssembly usebenzisa i-Emscripten kwaye ifanelekile ukuphunyezwa kwiziphequluli.

Ukuphunyezwa kweJavaScript ixhasa Ukucaciswa kwe-ES2019, kubandakanywa iimodyuli, iijeneretha ze-asynchronous kunye neeproxies. Izibalo ezingekho mgangathweni zixhaswa ngokuzithandela ukwanda yeJavaScript, njengeentlobo zeBigInt kunye neBigFloat, ngokunjalo ukulayisha ngaphezulu komsebenzisi. Ukusebenza kwe-QuickJS kubalulekile ingaphezulu kwe analogu ezikhoyo, umzekelo, kuvavanyo
ibhentshi-v8 iphambi kwenjini XS kwi-35%, DukTape ngaphezulu kokuphindwe kabini KwiJerryScript kathathu kwaye MuJS kasixhenxe.

Ukongeza kwilayibrari yokufakela injini kwizicelo, iprojekthi ikwabonelela ngetoliki ye-qjs, engasetyenziselwa ukuqhuba ikhowudi yeJavaScript kumgca womyalelo. Ngaphezu koko, umqokeleli we-qjsc uyafumaneka, okwaziyo ukuvelisa iifayile eziphunyeziweyo ezilungele umiliselo oluzimeleyo olungadingi ukuxhomekeka kwangaphandle.

Iinkalo eziphambili:

  • Icwecwe kwaye kulula ukuyidibanisa kwezinye iiprojekthi. Ikhowudi ibandakanya kuphela iifayile ze-C ezimbalwa ezingadingi ukuxhomekeka kwangaphandle kwindibano. Esona sicelo sihlanganisiweyo silula sithatha malunga ne-190 KB;
  • Ukusebenza okuphezulu kakhulu kunye nexesha elifutshane lokuqalisa. Ukuphumelela iimvavanyo zokuhambelana ne-ECMAScript ezingamawaka angama-56 kuthatha malunga nemizuzwana eyi-100 xa isenziwa kumbindi omnye wePC yedesktop eqhelekileyo. Ukuqaliswa kwexesha lokubaleka kuthatha ngaphantsi kwee-microseconds ezingama-300;
  • Phantse inkxaso epheleleyo yenkcazo ye-ES2019 kunye nenkxaso epheleleyo yeSihlomelo B, esichaza amacandelo okuhambelana nezicelo zewebhu zelifa;
  • Ukupasa ngokupheleleyo zonke iimvavanyo ezivela kwi-ECMAScript Test Suite;
  • Inkxaso yokuqulunqa ikhowudi yeJavascript kwiifayile eziphunyezwayo ngaphandle kokuxhomekeka kwangaphandle;
  • Umqokeleli wenkunkuma esekelwe ekubaleni ireferensi ngaphandle kokucoca i-cyclic, eyasivumela ukuba sifezekise ukuziphatha okuqikelelweyo kunye nokunciphisa ukusetyenziswa kwememori;
  • Iseti yezandiso zokubala zemathematika kwiJavaScript;
  • Iqokobhe lokuphumeza ikhowudi kwimo yelayini yomyalelo, exhasa ukuqaqambisa ikhowudi yomxholo;
  • Ilayibrari esemgangathweni ehlanganisiweyo enezisongelo phezu kwethala leencwadi le-C.

Iprojekthi ikwaphuhlisa amathala eencwadi amathathu ahamba kunye ne-C abandakanyekayo kwi-QuickJS kwaye alungele ukusetyenziswa komntu ngamnye:

  • libregexp - ukuphunyezwa ngokukhawuleza kweentetho eziqhelekileyo, ezihambelana ngokupheleleyo ne-Javascript ES 2019 inkcazo;
  • libunicode - ilayibrari edibeneyo yokusebenza kunye ne-Unicode;
  • libbf - Uzalisekiso lweendawo ezidadayo ezichanekileyo ezichanekileyo kunye nemisebenzi engaphaya kokujikeleza okuchanekileyo.

umthombo: opennet.ru

Yongeza izimvo