Yuav ua li cas peb siv WebAssembly kom ceev ib daim ntawv thov web 20 zaug
Kab lus no tham txog ib rooj plaub rau kev ua kom nrawm ntawm daim ntawv thov browser los ntawm kev hloov JavaScript suav nrog WebAssembly.
WebAssembly - yog dab tsi?
Nyob rau hauv luv luv, qhov no yog ib tug binary kev qhia hom ntawv rau ib tug stack-based virtual tshuab. Wasm (lub npe luv) feem ntau hu ua lus programming, tab sis nws tsis yog. Cov ntawv qhia hom tau ua tiav hauv browser nrog rau JavaScript.
Nws yog ib qho tseem ceeb uas WebAssembly tuaj yeem tau txais los ntawm kev sau cov peev txheej hauv hom lus xws li C / C ++, Rust, Go. Ntawm no yog kev ntaus ntawv txheeb cais thiab lub npe hu ua tus qauv nco tau siv. Cov cai, raws li tau hais los saum no, yog khaws cia rau hauv ib qho kev sib cog lus binary, ua rau nws yuav luag sai npaum li kev khiav daim ntawv thov siv cov kab hais kom ua. Cov peev txheej no tau ua rau muaj kev loj hlob ntawm WebAssembly qhov chaw.
Tam sim no, Wasm tau siv ntau daim ntawv thov, los ntawm kev ua si xws li Doom 3 mus rau web-ported daim ntawv thov xws li Autocad thiab Figma. Wasm kuj tseem siv rau hauv thaj chaw xws li serverless xam.
Kab lus no muab piv txwv ntawm kev siv Wasm txhawm rau txhawm rau txhawm rau txhawm rau txheeb xyuas lub vev xaib. Txhawm rau kom meej, peb tau txais daim ntawv thov ua haujlwm sau hauv C, uas tau muab tso ua ke rau hauv WebAssembly. Cov txiaj ntsig yuav raug siv los hloov cov ntu tsis zoo ntawm JS.
Es tsis txhob tso tawm rau cov ntaub ntawv binary, Emscripten siv .wasm thiab .js los tsim cov ntaub ntawv, uas yog siv los khiav WebAssemby module.
Tus chij USE_ZLIB siv los txhawb lub tsev qiv ntawv zlib. Lub tsev qiv ntawv tau muab faib thiab xa mus rau WebAssembly, thiab Emscripten suav nrog nws hauv qhov project.
Emscrippten virtual file system tau qhib. Qhov no POSIX zoo li FS, khiav hauv RAM hauv browser. Thaum nplooj ntawv yog rov ua dua tshiab, lub cim xeeb raug tshem tawm.
Txhawm rau nkag siab tias vim li cas cov ntaub ntawv virtual xav tau, nws tsim nyog muab piv rau txoj hauv kev koj khiav seqtk los ntawm kab hais kom ua nrog rau txoj kev koj khiav ib qho WebAssembly module.
# On the command line
$ ./seqtk fqchk data.fastq
# In the browser console
> Module.callMain(["fqchk", "data.fastq"])
Kev nkag mus rau cov ntaub ntawv virtual yog qhov tsim nyog kom tsis txhob rov sau seqtk rau txoj hlua ntau dua li cov ntaub ntawv nkag. Nyob rau hauv cov ntaub ntawv no, cov ntaub ntawv fragment yog tso tawm kom pom raws li ib tug data.fastq cov ntaub ntawv nyob rau hauv lub virtual FS nrog ib tug hu rau main() seqtk rau nws.
Nov yog qhov tshiab architecture:
Daim duab qhia tau hais tias es tsis txhob xam nyob rau hauv lub ntsiab browser xov, WebWorkers. Txoj kev no tso cai rau koj los ua kev suav hauv cov xov keeb kwm yav dhau yam tsis muaj kev cuam tshuam rau qhov browser teb. Zoo, WebWorker maub los pib tus neeg ua haujlwm, tswj nws kev cuam tshuam nrog cov xov tseem ceeb.
Cov lus txib seqtk khiav siv Tus Neeg Ua Haujlwm ntawm cov ntaub ntawv mounted. Tom qab ua tiav qhov kev ua tiav, Tus Neeg Ua Haujlwm tsim cov txiaj ntsig hauv daim ntawv cog lus. Thaum cov lus tau txais los ntawm cov xov tseem ceeb, qhov tshwm sim yog siv los hloov kho cov duab. Thiab yog li nyob rau hauv ntau iterations.
Yuav ua li cas txog WebAssembly kev ua tau zoo?
Txhawm rau ntsuas qhov kev hloov pauv hauv kev ua haujlwm, pab pawg ua haujlwm tau siv cov kev ua haujlwm nyeem ib qho thib ob. Lub sijhawm nws siv los tsim cov duab sib tham sib tsis tau muab rau hauv tus account vim tias ob qho kev siv siv JavaScript.
Thaum siv cov kev daws teeb meem sab nraud, qhov kev ua tau zoo nce yog cuaj zaug.
Qhov no yog ib qho txiaj ntsig zoo, tab sis, raws li nws hloov tawm, muaj lub sijhawm los ua kom nws zoo dua. Qhov tseeb yog tias ntau tus QC tsom xam cov txiaj ntsig tsis siv los ntawm seqtk, yog li lawv tuaj yeem raug tshem tawm. Yog tias koj ua qhov no, qhov txiaj ntsig zoo dua los ntawm 13 npaug piv rau JS.
Nws tau ua tiav los ntawm kev tawm tswv yim tawm ntawm printf() cov lus txib.
Tab sis tsis yog tag nrho. Qhov tseeb yog tias nyob rau theem no, fastq.bio tau txais cov txiaj ntsig kev soj ntsuam los ntawm kev hu xov tooj sib txawv C ua haujlwm, txhua tus ntawm lawv suav nws tus kheej cov yam ntxwv, kom txhua ntu ntawm cov ntaub ntawv tau nyeem ob zaug.
Txhawm rau kom tau txais qhov teeb meem no, nws tau txiav txim siab los muab ob txoj haujlwm ua ib qho. Yog li ntawd, kev tsim khoom tau nce 20 npaug.
Nws yog ib qho tsim nyog sau cia tias qhov txiaj ntsig zoo li no tsis tuaj yeem ua tiav. Qee zaum, kev ua haujlwm yuav poob qis, yog li nws tsim nyog ntsuas txhua kis.
Raws li qhov xaus, peb tuaj yeem hais tias Wasm muab lub sijhawm los txhim kho kev ua haujlwm ntawm daim ntawv thov, tab sis koj yuav tsum siv nws kom zoo.