Tus tsim ntawm QEMU thiab FFmpeg luam tawm QuickJS JavaScript cav

Fabkis tus lej lej Fabrice Bellard, uas tau tsim cov haujlwm QEMU thiab FFmpeg, kuj tau tsim cov qauv nrawm tshaj plaws rau kev suav tus lej Pi thiab tsim cov duab hom. PIB, luam tawm thawj qhov kev tso tawm tshiab JavaScript cav QuickJS. Lub cav yog compact thiab tsim rau kev koom ua ke rau lwm lub tshuab. Txoj haujlwm code yog sau hauv C thiab muab faib raws li MIT daim ntawv tso cai. Kev tsim ntawm lub cav kuj muaj, muab tso ua ke rau hauv WebAssembly siv Emscripten thiab tsim nyog rau kev ua tiav hauv browsers.

Kev siv JavaScript txhawb nqa ES2019 specification, suav nrog modules, asynchronous generators thiab proxies. Cov lej uas tsis yog tus qauv yog xaiv tau loj rau JavaScript, xws li BigInt thiab BigFloat hom, thiab tus neeg teb xov tooj overloading. Kev ua tau zoo ntawm QuickJS yog qhov tseem ceeb superior rau muaj analogues, piv txwv li, hauv kev sim
lub rooj ntev zaum-v8 yog ua ntej ntawm lub cav XS ntawm 35%, DukTape ntau dua ob npaug jerryscript peb zaug thiab MuJS xya x.

Ntxiv rau lub tsev qiv ntawv rau embedding lub cav rau hauv daim ntawv thov, qhov project kuj muaj ib tug kws txhais lus qjs, uas tuaj yeem siv los khiav JavaScript code los ntawm kab hais kom ua. Ntxiv mus, qjsc compiler muaj, muaj peev xwm tsim cov ntaub ntawv tso tawm ua haujlwm tsim nyog rau kev ua tiav ib leeg uas tsis tas yuav muaj kev vam khom sab nraud.

Lub ntsiab nta:

  • Compact thiab yooj yim rau kev koom ua ke rau lwm qhov project. Cov cai suav nrog tsuas yog ob peb C cov ntaub ntawv uas tsis tas yuav muaj kev cuam tshuam sab nraud rau kev sib dhos. Daim ntawv thov yooj yim tshaj plaws yuav siv li 190 KB;
  • Kev ua haujlwm siab heev thiab lub sijhawm pib luv luv. Kev xeem dhau 56 txhiab ECMAScript kev sib raug zoo yuav siv li 100 vib nas this thaum ua tiav ntawm ib qho tseem ceeb ntawm lub desktop PC tsis tu ncua. Runtime pib siv tsawg dua 300 microseconds;
  • Yuav luag tag nrho cov kev txhawb nqa rau ES2019 cov lus qhia tshwj xeeb thiab kev txhawb nqa tag nrho rau Cov Ntawv Ntxiv B, uas txhais cov khoom siv rau kev sib raug zoo nrog cov ntawv thov hauv web qub qub;
  • Ua kom tiav tag nrho cov kev xeem los ntawm ECMAScript Test Suite;
  • Kev them nyiaj yug rau compiling Javascript code rau hauv executable ntaub ntawv tsis muaj lwm dependencies;
  • Cov khoom siv khib nyiab raws li kev suav suav tsis muaj kev tu lub voj voog, uas tso cai rau peb ua tiav kev coj tus cwj pwm thiab txo qis kev nco;
  • Ib txheej txuas ntxiv rau kev suav lej hauv JavaScript;
  • Lub plhaub rau kev ua tiav cov cai hauv kab lus hais kom ua, txhawb cov ntsiab lus ntawm cov ntsiab lus tseem ceeb;
  • Compact standard tsev qiv ntawv nrog wrappers tshaj lub tsev qiv ntawv C.

Txoj haujlwm tseem tab tom tsim peb lub tsev qiv ntawv C nrog rau hauv QuickJS thiab tsim nyog rau kev siv tus kheej:

  • libregexp - kev siv ceev ceev ntawm cov lus qhia tsis tu ncua, ua tau zoo nrog Javascript ES 2019 specification;
  • libunicode - lub tsev qiv ntawv me me rau kev ua haujlwm nrog Unicode;
  • libbf - Kev ua raws li qhov kev txiav txim siab qhov tseeb ntab taw tes ua haujlwm thiab kev ua haujlwm ntawm kev ua haujlwm nrog kev sib tw.

Tau qhov twg los: opennet.ru

Ntxiv ib saib