WebAssembly рдХреЗ рд╕рд╛рде рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╡рд╛рдкрд╕

рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП Attila V├бg├│ рджреНрд╡рд╛рд░рд╛ "рд╡рд╛рдкрд╕ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рд╛рде рднрд╡рд┐рд╖реНрдп рдореЗрдВ WebAssembly" рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВред

рдпрд╣ рдкреЛрд╕реНрдЯ рдПрдХ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИ рдЬреЛ WebAssemly рдФрд░ Emscripten рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИред рдореВрд▓ рд▓реЗрдЦ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВред


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

2011 рдореЗрдВ, рдореИрдВрдиреЗ рдЧреИрд░-рдПрдЪрдЯреАрдПрдордПрд▓ рдХреЛрдб рдХреА рдЕрдкрдиреА рдкрд╣рд▓реА рд╕реНрд╡рддрдВрддреНрд░ рдкрдВрдХреНрддрд┐ (рдореИрдВрдиреЗ 2007 рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рдерд╛) рд▓рд┐рдЦреА рдереА, рдФрд░ рдпрд╣ рд╣рд╛рд░реНрд╡рд░реНрдб рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдХреЗ рдкреНрд░реЛрдлреЗрд╕рд░ рдбреЗрд╡рд┐рдб рдЬреЗред рдорд╛рд▓рди рджреНрд╡рд╛рд░рд╛ рд╕рд┐рдЦрд╛рдИ рдЧрдИ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдкреБрд░рд╛рдиреА рд╕реА рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рд╡рд╣ рд╣рдореЗрд╢рд╛ рди рдХреЗрд╡рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП, рдмрд▓реНрдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдХ рд╕реЛрдЪ рдХреЗ рд▓рд┐рдП рднреА рдореЗрд░реА рдкреНрд░реЗрд░рдгрд╛ рдмрдиреЗ рд░рд╣реЗрдВрдЧреЗред рдореБрдЭреЗ рдпрд╣ рднреА рдпрд╛рдж рдЖрдпрд╛ рдХрд┐ рдкреАрдирдЯ рдмрдЯрд░ рд╕реИрдВрдбрд╡рд┐рдЪ рдмрдирд╛рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд▓рд┐рдП рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдХрдард┐рди рдХрд╛рдо рд╣реИ рдФрд░ рдХрдВрдкреНрдпреВрдЯрд░ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рднреА рдЙрддрдирд╛ рд╣реА рдореБрд╢реНрдХрд┐рд▓ рд╣реИред



рдпрджрд┐ рдЖрдкрдиреЗ рд╡реАрдбрд┐рдпреЛ рджреЗрдЦрд╛, рддреЛ рдХрдо рд╕реЗ рдХрдо рдкрд╣рд▓реЗ 18 рдорд┐рдирдЯ (рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ), рддреЛ рдЖрдк рд╕рдордЭ рдЬрд╛рдПрдВрдЧреЗ рдХрд┐ рдЗрд╕ рджрд┐рди рд╕реА рдореЗрд░реЗ рджрд┐рд▓ рдХреЗ рдХрд░реАрдм рдХреНрдпреЛрдВ рд╣реИред рдореЗрд░реА рдирд┐рд░рд╛рд╢рд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрднреА рдирд╣реАрдВ рд╕реАрдЦрд╛, рдХреНрдпреЛрдВрдХрд┐, рдЪрд▓реЛ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП, рд╕реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рддрд░рд╣ рдХреА рдЧрд╣рд░реА рднрд╛рд╖рд╛ рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░рдг рдирд╣реАрдВ рдерд╛, рдЕрдирдЧрд┐рдирдд рдЙрджрдореА рдкрд╛рдареНрдпрдХреНрд░рдо рдФрд░ рд╕реА рдХрд┐рддрд╛рдмреЗрдВ рдЦрд░реАрджрдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдХрднреА рдирд╣реАрдВ рдЫреБрдЖ (рдЕрдкрдиреЗ рдирд┐рд░реНрдгрдп рдХреЛ рдЕрдкрдиреЗ рдЖрдк рдкрд░ рд░рдЦреЗрдВ, рдЖрдкрдиреЗ рднреА рдХрд┐рдпрд╛ рдерд╛) рдпрд╛ рдЦреБрдж рд╕реЗ рдЭреВрда рдмреЛрд▓реЗрдВ рдХрд┐ рдЕрдЧрд░ рдореИрдВ рдЦрд░реАрджреВрдВ рд╕реНрдорд╛рд░реНрдЯ рдШрдбрд╝реА рдХрдВрдХрдбрд╝, рдЬреЛ рд╕реА рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред рд╣рд╛рдБ, рдпрдХреАрди рдХреЗ рд▓рд┐рдП! рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХрд╛рд░рдг рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рдерд╛ред


WebAssembly рдХреНрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ JS рд╕реЗ рдЖрдЧреЗ рдХреИрд╕реЗ рдирд┐рдХрд▓рддрд╛ рд╣реИ?


WebAssembly (рдХрдо рдХреЗ рд▓рд┐рдП Wasm) рдПрдХ рд╕реНрдЯреИрдХреНрдб рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рд▓рд┐рдП рдПрдХ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдЕрдиреБрджреЗрд╢ рдкреНрд░рд╛рд░реВрдк рд╣реИред

"Wasm рдХреЛ C / C ++ / Rust рдЬреИрд╕реА рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЛрд░реНрдЯреЗрдмрд▓ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдЖрдкрдХреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ"
- рдХреГрдкрдпрд╛ webassembly.org рдмрддрд╛рддреЗ рд╣реИрдВ


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


рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╡рд╛рд╕рдо рдмрд╛рдп рд╕реНрдЯреНрд░рдХреНрдЪрд░ (рд╢реБрд░реВ рдореЗрдВ) рдХреЗрд╡рд▓ рдкреВрд░реНрдгрд╛рдВрдХ рдФрд░ рдлреНрд▓реЛрдЯрд┐рдВрдЧ-рдкреЙрдЗрдВрдЯ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдорд╣рд╛рди рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╢рдХреНрддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЕрдХреНрд╕рд░ рдХреИрдирд╡рд╛рд╕-рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ WebAssembly рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдЦрддрд░рд╛ рдирд╣реАрдВ рд╣реИ - рдХрдо рд╕реЗ рдХрдо рдЕрднреА рдХреЗ рд▓рд┐рдП - рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗ, рд╕реА рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╣реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЦреБрд╢реА рд╕реЗ рд░рд╣ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдХреЛрдб рдХреЛ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рдВ, рдХреБрдЫ рдРрд╕рд╛ рд╣реА рд╣реИред



Emscripten "glues" C рдФрд░ JS


рдЕрдм рдкрдХрдбрд╝реЛ! рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВред рдЖрдк "рдЬреЗрдПрд╕ рдореЗрдВ рд╕реА рдЪрд▓рд╛рдПрдВ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд" рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рджреБрдирд┐рдпрд╛ рдХреЛ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рдпрд╣ рдХрд┐рддрдирд╛ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ, рдореИрдВ рдмреЗрд╡рдХреВрдл рдирд╣реАрдВ рд╣реВрдВред рдПрд▓рдПрд▓рд╡реАрдПрдо (рдореЗрд░реЗ рднрдЧрд╡рд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рд▓реЗрдЦ рдХреЗ рдкрд╛рда рдХреЛ рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╕рдордп рдЗрдирдореЗрдВ рд╕реЗ рдЖрдзреА рдмрд╛рддреЗрдВ рд╕реАрдЦреАрдВ), рдЬреЛ рдЖрдкрдХреЛ рдкреНрд▓рдЧ-рдЗрди рдХреЗ рдмрд┐рдирд╛ рд▓рдЧрднрдЧ рдореВрд▓ рдЧрддрд┐ рд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд╕реА рдФрд░ рд╕реА ++ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред


рдЦреИрд░, рдпрд╣рд╛рдБ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд▓рд┐рдП рдЗрд╕ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред Emscripten рдЖрдкрдХреЛ WebAssembly рдореЗрдВ рд╕реА рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд▓реЛрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрдм рдпрд╣ рджреЛ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рдФрд░ рдЖрдкрдХреЗ рд╡реЗрдм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╡рд╛рд╕ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред Emscripten рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╕рдВрдХрд▓рди рдХрдорд╛рдВрдб рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:


emcc lib/strings.c -s WASM=1 -o public/strings.js 

рдЬрдмрдХрд┐ рдПрдХ рдЧреИрд░-рдмреБрдирд┐рдпрд╛рджреА рдЖрджреЗрд╢ рдЗрд╕ рддрд░рд╣ рдЪрд▓рддрд╛ рд╣реИ:

 emcc lib/imports.c -s WASM=1 -s EXPORTED_FUNCTIONS="['_getNum', '_main', '_getDoubleNum', '_greet']" -o public/imports.js 

Emscripten рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдХрд╛рдо рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд░реЙрдХреЗрдЯ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рдирд╣реАрдВ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рд╕реЗрдЯрдЕрдк рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддреА рд╣реИ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдХрдИ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдкрд╛рдпрдерди, рдиреЛрдб, xCode, Git рдФрд░ cMakeред рд╕рднреА рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдкреГрд╖реНрда рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
рдЗрд╕рд▓рд┐рдП Emscripten:

  • рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдврд╝рд┐рдпрд╛ рдЙрдкрдХрд░рдг рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ C рдпрд╛ C ++ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдореМрдЬреВрджрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рднреА рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╕реЗ рдмрд╛рд╣рд░ рдЬрд╛рдУ, рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░!
  • API рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ OpenGL рдХреЛ WebGL рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ SDL рдпрд╛ рд╕реАрдзреЗ HTML5 рдЬреИрд╕реЗ рдкрд░рд┐рдЪрд┐рдд API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЕрд░реЗ рд╣рд╛рдБ!
  • рдФрд░ рдпрд╣ рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реИ: LLVM, Emscripten, asm.js рдФрд░ WebAssembly рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХреЛрдб рд▓рдЧрднрдЧ рдЕрдкрдиреА рдЧрддрд┐ рд╕реЗ рдЪрд▓рддрд╛ рд╣реИред рднрд╛рдЧреЛ, рдЦрд░рдЧреЛрд╢, рднрд╛рдЧреЛ!


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


рдЙрджрд╛рд╣рд░рдг ... рдЙрджрд╛рд╣рд░рдг рд╣рд░ рдЬрдЧрд╣ рд╣реИрдВ!


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


рджреЛрд╕реНрддреЛрдВ, рдЕрдЧрд░ рдХреЛрдИ рдореЗрд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реА рдХреЛрдб рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗ, рддреЛ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд╛рдПрдВ, рдареАрдХ рд╣реИ?


рдереЛрдбрд╝рд╛ рджреВрд░ рд╡рд┐рд╖рдп, рдпрд╣рд╛рдБ рд╡рд░реНрддрдорд╛рди рд╕реА рдХреЛрдб рд╣реИ:


рдЫрд╡рд┐

рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ:


рдЫрд╡рд┐

рдареАрдХ рд╣реИ, рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдлреА, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕реВрдЪреА рджреВрдВрдЧрд╛ред

  1. рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдореБрдЦреНрдп () , рдЬрдм рддрдХ рдХрд┐ рдЕрдиреНрдпрдерд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рди рд╣реЛ, рд╣рдореЗрд╢рд╛ рдкрд╣рд▓реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рднреА рд╕рдВрдХрд▓рди рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ EXPORTED_FUNCTIONS рд╕рд░рдгреА рдХреЗ рдзреНрд╡рдЬ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
  2. рдЖрдк рдЕрдкрдирд╛ рд╕реА рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЗрд╕рдХреЗ рдирд┐рдпрдорд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЖрдкрдХреЛ Emscripten рд╕рд┐рдВрдереИрдЯрд┐рдХ рд╢реБрдЧрд░, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдЙрдкрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рдзрд┐рдпрд╛рдБ / рдХрд╛рд░реНрдп рдорд┐рд▓рддреЗ рд╣реИрдВред
  3. Imports.js рдлрд╝рд╛рдЗрд▓ (рдирд╛рдо рдордирдорд╛рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рдорд╛рди рд╣реИ) HTML рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд "рдЧреЛрдВрдж" рдИрд╕реНрдореИрдкреНрдЯреЗрди рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдХрд▓рди рдкрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдмрд╕ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рд╣реИред
  4. Printf рд╕рд┐рд░реНрдл рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реА рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╣реИ рдЬреЛ рдХрдВрд╕реЛрд▓ рдкрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИред рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ, рдЖрдЧреЗ рдмрдврд╝реЗрдВред
  5. рд▓рд╛рдЗрдиреНрд╕ 14 рдФрд░ 17 рдПрдХ рдПрдВрдЯреА-рдкреИрдЯрд░реНрди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рд╕реА рдХреЛрдб рдореЗрдВ JS рдЪрд▓рд╛рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред emscripten_run_script рдФрд░ emscripten_async_run_script рдХреЗ рдмреАрдЪ рдПрдХрдорд╛рддреНрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк JS рдХреЛ C рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЕрдзрд┐рдХрддрд░ рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ () рдХреЗ рд╕рд╛рде ред рдХрд╛рд░рдг рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣реИред WebAssembly рдХрд╛ рдкреВрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╕реА рдореЗрдВ рдЬреЗрдПрд╕ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬреЗрдПрд╕ рдЗрди рд╕реА рдореЗрдВ рдирд╣реАрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП ...
  6. рд▓рд╛рдЗрдиреНрд╕ 20 рдФрд░ 24 рдФрд░ рдЙрдирдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдЬреЗрдПрд╕ рдлрд╝рдВрдХреНрд╢рди рдЗрдВрдбреЗрдХреНрд╕ ред Html рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реА рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН рдЖрдкрдХреЗ рдЬреЗрдПрд╕ рдореЗрдВ рдЖрдкрдХрд╛ рдЬреЗрдПрд╕ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕реА рдкрд░ рдХреБрдЫ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  7. EM_JS , рдЬреЛ рддрдм jsFunction рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ , рдмрд╕ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ - рдЕрдВрдХ 4 рдФрд░ 5 рдореЗрдВ рд╕рдорд╛рди рд▓рдХреНрд╖реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдЙрдкрд░реЛрдХреНрдд рдХрд╛ рдЕрдиреБрдорд╛рдирд┐рдд рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:


рдЫрд╡рд┐

рд▓реЗрдбреАрдЬ рдЕрд╣реЗрдб!


рдХрд┐рд╕реА рднреА рдХреЛрдб рдХреА рддрд░рд╣, WebAssembly рдХреЗ рдкрд╛рд╕ рднреА рдПрдХ рд░рдирд┐рдВрдЧ рдСрд░реНрдбрд░ рд╣реИред рдХрддрд╛рд░ рд╕реЗ рдордд рдЙрд▓рдЭреЛ! рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрджреЗрд╢ рд╕реА рдСрд░реНрдбрд░ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рд╣реИред рд╕рдм рдХреБрдЫ рдореЗрди () рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЬрдм рднреА рдореЗрди () рддреИрдпрд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рд╡рд╛рд╕рдо рддреИрдпрд╛рд░ рд╣реЛрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдХреЛ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд┐рд░ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ? рдареАрдХ рд╣реИ, рдмрд╕ рдереЛрдбрд╝рд╛ рд╕рд╛ Emscripten рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЪреАрдиреА, рдФрд░ рд╕рдм рдХреБрдЫ рдШрдбрд╝реА рдХреА рдХрд▓ рдХреА рддрд░рд╣ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ:


рдЫрд╡рд┐

рд╣рдо рдХреЗрдХ рд╕реЗ рдордХреНрдЦрд┐рдпреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ


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


рдЬрдм рдЖрдк JS рдпрд╛ рдХрд┐рд╕реА рднреА Wasm рдореЗрдВ C рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рд╕рдм рдХреБрдЫ рдФрд░ рднреА рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, Emscripten рджреЛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдбрд┐рдмрдЧрд┐рдВрдЧ рд╡рд┐рдзрд┐ рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рдлрд┐рд░ рд╕реЗ рдмрдЪрд╛рд╡ рдореЗрдВ рдЖрддрд╛ рд╣реИ:


 // browser debugger gets triggered emscripten_debugger(); // browser console warning with stack-trace emscripten_log(EM_LOG_WARN, тАЬ'param' your messageтАЭ); 

рддреНрд╡рд░рд┐рдд рдЧреЛрдВрдЬрд╛рд▓реЗрдЬ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреВрдлрд╛рди


рдорд╛рдиреЛ рдпрд╛ рди рдорд╛рдиреЛ, Emscripten рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдиреЗ рд╕рдм рдХреБрдЫ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рд╣реИред рдПрдХ рдмрдбрд╝реА рд╡рд┐рд╢реЗрд╖рддрд╛ - рдФрд░ рдкрд┐рдЫрд▓реЗ рдПрдХ рдЬрд┐рд╕реЗ рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рд╕рднреА рдХреЛ рдПрдХ рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВ - рддреЗрдЬреА рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЖрдзрд╛рд░ рд╣реИред рдЖрдк рдЕрдкрдиреЗ Wasm рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдЭрдкрдЯреНрдЯрд╛ рдореЗрдВ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 emrun --port 7777 --no_browser public/index.html Now listening at http://localhost:7777/ 

рдЖрдк рдЬрд┐рд╕ html рдкреЗрдЬ рдХреЛ рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ Emrun-рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред Stdout, stderr рдФрд░ exit (рд░рд┐рдЯрд░реНрдирдХреЛрдб) рдХреИрдкреНрдЪрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП --emrun рд▓рд┐рдВрдХрд░ рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВ, рдпрд╛ рдЗрд╕ рдЪреЗрдХ рдХреЛ рдЫреБрдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП --no_emrun_detect рдкрд╛рд╕ рдХрд░реЗрдВред

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


 <b>// compile as emrun project emcc lib/strings.c -s WASM=1 --emrun -o public/index.html // run the emrun server again emrun --port 7777 --no_browser public/index.html</b> 

рдореИрдВ рдЗрд╕реЗ рдРрд╕реЗ рд╣реА рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдВред WebAssembly рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рд╕реЗрдВрдЯ рдкреИрдЯреНрд░рд┐рдХ рджрд┐рд╡рд╕ рдФрд░ рдЕрдЧрд▓реЗ рджрд┐рди рдордирд╛рдпрд╛ред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдиреЗ рдореБрдЭреЗ рджреЛ рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдореЙрдирд┐рдЯрд░ рдХреЗ рд╕рд╛рдордиреЗ рдмреИрдардиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд░реЛрдорд╛рдВрдЪрд┐рдд рдХрд┐рдпрд╛, рд╡реЗрдмрдПрд╕реНрдмреЗрдмрд▓реА рдХреЗ рдореВрд▓ рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдХреБрдЫ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣реИ рдирд╛? рдпрд╣ рдмрд╣реБрдд рд╕реА рдХреЛрдб рд╣реИ рдЬреЛ рдореИрдВрдиреЗ 2011 рд╕реЗ рд▓рд┐рдЦрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ WebAssembly рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рднрд╡рд┐рд╖реНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрдЧрд╛ рдФрд░ рдЬреЗрдПрд╕ рдХреЛ рдорд╛рд░ рджреЗрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдХреБрдЫ рдЙрдкрджреЗрд╢ рджреЗрддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ?


рдЫрд╡рд┐

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


All Articles