WebAssembly 20x рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рддреНрд╡рд░рд┐рдд

рдЫрд╡рд┐

рдпрд╣ рдЖрд▓реЗрдЦ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ WebAssembly рдХреЗ рд╕рд╛рде рдмрджрд▓рдХрд░ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдорд▓реЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддрд╛ рд╣реИред

WebAssembly - рдпрд╣ рдХреНрдпрд╛ рд╣реИ?


рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рд╕реНрдЯреИрдХреНрдб рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рд▓рд┐рдП рдПрдХ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдЕрдиреБрджреЗрд╢ рдкреНрд░рд╛рд░реВрдк рд╣реИред рд╡рд╛рд╕рдо (рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо) рдХреЛ рдЕрдХреНрд╕рд░ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдЕрдиреБрджреЗрд╢ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ WebAssembly рдХреЛ C / C ++, Rust, Go рдЬреИрд╕реА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рд╕рдВрдХрд▓рди рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕реНрдерд┐рд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдФрд░ рддрдерд╛рдХрдерд┐рдд рдлреНрд▓реИрдЯ рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдХреЛрдб, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдмрд╛рдЗрдирд░реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд▓рдЧрднрдЧ рдЙрддрдирд╛ рд╣реА рддреЗрдЬреА рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг WebAssembly рдХреА рдмрдврд╝рддреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдмрдврд╝реА рд╣реИред

рд╣рдо рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддреЗ рд╣реИрдВ: "рд╣реИрдмрд░" рдХреЗ рд╕рднреА рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП - "рд╣реИрдмрд░" рдкреНрд░реЛрдореЛ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рднреА рд╕реНрдХрд┐рд▓рдмреЙрдХреНрд╕ рдХреЛрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдкрдВрдЬреАрдХрд░рдг рдХрд░рддреЗ рд╕рдордп 10,000 рд░реВрдмрд▓ рдХреА рдЫреВрдЯред

рд╕реНрдХрд┐рд▓рдмреЙрдХреНрд╕ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИ: рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкрд╛рдареНрдпрдХреНрд░рдо "рдореЛрдмрд╛рдЗрд▓ рдбреЗрд╡рд▓рдкрд░ рдкреНрд░реЛ" ред

Wasm рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ Doom 3 рд╕реЗ рд▓реЗрдХрд░ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬреИрд╕реЗ Autocad рдФрд░ Figma рддрдХ рдкреЛрд░реНрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВред Wasm рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдЬреИрд╕реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рд▓реЗрдЦ рдПрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП Wasm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ C рдореЗрдВ рд▓рд┐рдЦрд╛ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд▓рд┐рдпрд╛, рдЬрд┐рд╕реЗ WebAssembly рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬреЗрдПрд╕ рдХреЗ рдХрдо рдЙрддреНрдкрд╛рджрдХрддрд╛ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд░рд┐рд╡рд░реНрддрди


рдЙрджрд╛рд╣рд░рдг рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗрд╡рд╛ fastq.bio рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдЬреЛ рдХрд┐ рдЖрдиреБрд╡рдВрд╢рд┐рдХреАрд╡рд┐рджреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИред рдЙрдкрдХрд░рдг рдЖрдкрдХреЛ рдбреАрдПрдирдП рдЕрдиреБрдХреНрд░рдордг (рдбрд┐рдХреЛрдбрд┐рдВрдЧ) рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдХрд╛рдо рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЖрд╡реЗрджрди рд╣реИ:



рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЧреИрд░-рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрдЯрд┐рд▓ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЙрдкрд░реЛрдХреНрдд рдЗрдиреНрдлреЛрдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдбреАрдПрдирдП рдЕрдиреБрдХреНрд░рдордг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдЪрд▓реА рдЧрдИ рдФрд░ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рд╣реБрдИрдВред

рдЗрд╕ рд╕реЗрд╡рд╛ рдореЗрдВ рд╡рд┐рдХрд▓реНрдк, рдбреЗрд╕реНрдХрдЯреЙрдк рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИрдВред рд▓реЗрдХрд┐рди fastq.bio рдбреЗрдЯрд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдХреЗ рдЪреАрдЬреЛрдВ рдХреЛ рдЧрддрд┐ рджреЗ рд╕рдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╕рднреА рдЖрдиреБрд╡рдВрд╢рд┐рдХреАрд╡рд┐рджреЛрдВ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИред

рд╕рдм рдХреБрдЫ рдмрд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрдирдкреБрдЯ рдкрд░ - рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдбреЗрдЯрд╛ред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрдХреНрд░рдордг рдЙрдкрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбреАрдПрдирдП рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдиреНрдпреВрдХреНрд▓рд┐рдпреЛрдЯрд╛рдЗрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреБрдгрд╡рддреНрддрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рд╢рд╛рдорд┐рд▓ рд╣реИред рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдк .fastq рд╣реИ, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рд╕реЗрд╡рд╛ рдХреЛ рдЗрд╕рдХрд╛ рдирд╛рдо рдорд┐рд▓рд╛ред

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


Fastq.bio рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдкрд╣рд▓рд╛ рдЪрд░рдг рдЙрдЪрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЪрдпрди рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдХрд╛рд░реНрдп рд╕рд░рд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдирд╛ рдФрд░ рд╕рдВрдХреЗрддрдХ рдЧрд┐рдирдирд╛ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдбреАрдПрдирдП рдЯреБрдХрдбрд╝реЗ рдкрд░ рдП, рд╕реА, рдЬреА рдФрд░ рдЯреА рдХреЗ рдиреНрдпреВрдХреНрд▓рд┐рдпреЛрдЯрд╛рдЗрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред

рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдХреЗрддрдХреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдиреНрд╣реЗрдВ рдкреНрд▓реЙрдЯрд▓реА.рдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд▓реНрдкрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рд╕реЗрд╡рд╛ рдПрдХ рдирдП рдбреЗрдЯрд╛ рдЪрдпрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддреА рд╣реИред UX рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЦрдВрдбрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╕рднреА рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдлреНрд░реАрдЬ рд╣реЛ рдЬрд╛рдПрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рд╕реАрдХреНрд╡реЗрдВрд╕рд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдо рд╡рд╛рд▓реА рдлрд╛рдЗрд▓реЗрдВ рд╕реИрдХрдбрд╝реЛрдВ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдлрд╝рд╛рдЗрд▓ рд╕реНрдерд╛рди рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддреА рд╣реИрдВред рд╕реЗрд╡рд╛ рдЖрдХрд╛рд░ рдореЗрдВ 0.5 рд╕реЗ 1 рдПрдордмреА рддрдХ рдбреЗрдЯрд╛ рдХреЗ рдЯреБрдХрдбрд╝реЗ рд▓реЗрддреА рд╣реИ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдХрджрдо рд╕реЗ рдХрджрдо рдорд┐рд▓рд╛рдХрд░ рдЧреНрд░рд╛рдлрд┐рдХ рдбреЗрдЯрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреА рд╣реИред

рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:



рд▓рд╛рд▓ рдЖрдпрдд рдореЗрдВ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рд░реВрдкрд╛рдВрддрд░рдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реЗрд╡рд╛ рдХрд╛ рд╕рдмрд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдпрд╣ рдЗрд╕реЗ рд╡реЙрд╕рдо рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИред

WebAssembly рдХрд╛ рдкрд░реАрдХреНрд╖рдг


Wasm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛ рдЖрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреАрдо рдиреЗ fastq рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ QC- рдореЗрдЯреНрд░рд┐рдХреНрд╕ (QC - рдЧреБрдгрд╡рддреНрддрд╛ рдирд┐рдпрдВрддреНрд░рдг) рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдЦреЛрдЬ рд╢реБрд░реВ рдХреАред рдЦреЛрдЬ рдХреЛ C, C ++ рдпрд╛ Rust рдореЗрдВ рд▓рд┐рдЦреЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛, рддрд╛рдХрд┐ рдХреЛрдб рдХреЛ WebAssembly рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдкрдХрд░рдг "рдХрдЪреНрдЪрд╛" рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡реИрдЬреНрдЮрд╛рдирд┐рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдПрдХ рд╕реЗрд╡рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдирддреАрдЬрддрди, рдЪреБрдирд╛рд╡ settk рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛рдлреА рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ, рдпрд╣ рдУрдкрди-рд╕реЛрд░реНрд╕ рд╣реИ, рд╕реНрд░реЛрдд рднрд╛рд╖рд╛ рд╕реА рд╣реИред

Wasm рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдбреЗрд╕реНрдХрдЯреЙрдк рдХреЗ рд▓рд┐рдП settk рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред Makefile рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣рд╛рдБ рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП:

# Compile to binary $ gcc seqtk.c \ -o seqtk \ -O2 \ -lm \ -lz 

рдореВрд▓ рд░реВрдк рд╕реЗ, рдЖрдк Emscripten рдХреЗ рд╕рд╛рде seqtk рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рд╣реИ, рддреЛ рдбреЙрдХрд░ рдЫрд╡рд┐ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдкрд╣реБрдВрдЪреЗрдВред

 $ docker pull robertaboukhalil/emsdk:1.38.26 $ docker run -dt --name wasm-seqtk robertaboukhalil/emsdk:1.38.26 

рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ , рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред

рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░, рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ gcc рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ emcc рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ:

 # Compile to WebAssembly $ emcc seqtk.c \ -o seqtk.js \ -O2 \ -lm \ -s USE_ZLIB=1 \ -s FORCE_FILESYSTEM=1 

рдиреНрдпреВрдирддрдо рдкрд░рд┐рд╡рд░реНрддрди:

Emscripten рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдмрдЬрд╛рдп, .wasm рдФрд░ .js рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ WebAssemby рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Zlib рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, USE_ZLIB рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ рд╡реЗрдмрдПрдЬрд╝ рдЯреЗрдореНрдкрд░реНрдб рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрди рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Emscrippten рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕рдХреНрд░рд┐рдп рд╣реИред рдпрд╣ рдПрдХ POSIX рдЬреИрд╕рд╛ FS рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдЕрдВрджрд░ RAM рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЬрдм рдкреГрд╖реНрда рддрд╛рдЬрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореЗрдореЛрд░реА рд╕рд╛рдлрд╝ рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ, рдпрд╣ рд╕рдВрдХрд▓рд┐рдд WebAssembly рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд╕рд╛рде рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ settk рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред

 # On the command line $ ./seqtk fqchk data.fastq # In the browser console > Module.callMain(["fqchk", "data.fastq"]) 

рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рддрдХ рдкрд╣реБрдВрдЪ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдЗрдирдкреБрдЯ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде seqtk рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдбреЗрдЯрд╛ рдлрд╝реНрд░реЗрдЧреНрдореЗрдВрдЯ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓ рдПрдлрдПрд╕ рдлрд╛рдЗрд▓ рдореЗрдВ рдореБрдЦреНрдп () seqtk рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдирдИ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╣реИ:



рдпрд╣ рдЖрдВрдХрдбрд╝рд╛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп, рдореБрдЦреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реНрдЯреНрд░реАрдо WebWorkers рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ ред рдпрд╣ рд╡рд┐рдзрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рдЬрд╡рд╛рдмрджреЗрд╣реА рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдкреГрд╖реНрдарднреВрдорд┐ рдереНрд░реЗрдб рдореЗрдВ рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддреА рд╣реИред рдЦреИрд░, WebWorker рдХрдВрдЯреНрд░реЛрд▓рд░ рдиреЗ рд╡рд░реНрдХрд░ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛, рдЬреЛ рдореБрдЦреНрдп рдереНрд░реЗрдб рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдмрд╛рддрдЪреАрдд рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдорд╛рдЙрдВрдЯ рдлрд╝рд╛рдЗрд▓ рдкрд░ рд╡рд░реНрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ settk рдХрдорд╛рдВрдб рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрд╛рдо рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд░реНрдХрд░ рдкреНрд░реЙрдорд┐рд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЬрдм рдХреЛрдИ рд╕рдВрджреЗрд╢ рдореБрдЦреНрдп рдереНрд░реЗрдб рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реЗрдбреНрдпреВрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдореЗрдВред

WebAssembly рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?


рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреАрдо рдиреЗ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд░реАрдб рдСрдкрд░реЗрд╢рдВрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рдЪрд╛рд░реНрдЯрд┐рдВрдЧ рд╕рдордп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рдиреМ рдЧреБрдирд╛ рдерд╛ред



рдпрд╣ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдЗрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрд╡рд╕рд░ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ seqtk рджреНрд╡рд╛рд░рд╛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ QC рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ JS рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ 13 рдЧреБрдирд╛ рд╕реБрдзрд╛рд░ рд╣реБрдЖ рд╣реИред



рдХреЗрд╡рд▓ рдкреНрд░рд┐рдВрдЯрдл () рдХрдорд╛рдВрдб рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдХреЗ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ред

рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдирд╣реАрдВ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реНрддрд░ рдкрд░ fastq.bio рд╕реА рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдЕрдкрдиреЗ рд╕реЗрдЯ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЯреБрдХрдбрд╝реЗ рдХреЛ рджреЛ рдмрд╛рд░ рдкрдврд╝рд╛ рдЬрд╛рдПред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдХ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ 20 рдЧреБрдирд╛ рдХреА рд╡реГрджреНрдзрд┐ рд╣реБрдИред



рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдРрд╕рд╛ рдЙрддреНрдХреГрд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо рд╣рдореЗрд╢рд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдкреНрд░рджрд░реНрд╢рди рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рд╕рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡реЗрджрди рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЗрд╕реЗ рдмреБрджреНрдзрд┐рдорд╛рдиреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╕реНрдХрд┐рд▓рдмреЙрдХреНрд╕ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИ:

Source: https://habr.com/ru/post/hi452190/


All Articles