WebAssembly рд╡рд┐рдХрд╛рд╕: рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реЗрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг



WebAssembly рдХреА рдШреЛрд╖рдгрд╛ 2015 рдореЗрдВ рд╣реБрдИ - рд▓реЗрдХрд┐рди рдЕрдм, рд╡рд░реНрд╖реЛрдВ рдХреЗ рдмрд╛рдж, рдЕрднреА рднреА рдХреБрдЫ рд╣реА рд╣реИрдВ рдЬреЛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЗрд╕рдХрд╛ рджрд╛рд╡рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрднрд╡ рдкрд░ рд╕рд╛рдордЧреНрд░реА рд╕рднреА рдЕрдзрд┐рдХ рдореВрд▓реНрдпрд╡рд╛рди рд╣реИрдВ: рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рд░рд╣рдирд╛ рд╣реИ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реА-рд╣рд╛рде рдХреА рдЬрд╛рдирдХрд╛рд░реА рдЕрднреА рднреА рдХрдо рдЖрдкреВрд░реНрддрд┐ рдореЗрдВ рд╣реИред

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



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

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЯреАрдо рдФрд░ рдореИрдВрдиреЗ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ WebAssembly рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдо рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЛ WebAssembly рд╕реЗ рдХреБрдЫ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рджрдо рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдХреБрдЫ рдпреБрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рд╣рдордиреЗ WebAssembly рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛


рдореИрдВ Inetra рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рд╣рдо рдиреЛрд╡реЛрд╕рд┐рдмрд┐рд░реНрд╕реНрдХ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рдЦреБрдж рдХреА рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдмрд╛рдЗрдЯрдлреЙрдЧред рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╡реАрдбрд┐рдпреЛ рдкрд╣реБрдВрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдХрд░реНрдореА рд╕реЗ рд╕рд╣рдХрд░реНрдореА рддрдХрдиреАрдХ рд╣реИред рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХ рдРрд╕реА рд╕реЗрд╡рд╛рдПрдБ рд╣реИрдВ рдЬреЛ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреА рд╣реИрдВред рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдЬрдм рдХреБрдЫ рд▓реЛрдХрдкреНрд░рд┐рдп рдШрдЯрдирд╛ рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдХреА рдкреНрд░реЗрд╕ рдХреЙрдиреНрдлреНрд░реЗрдВрд╕ рдпрд╛ рдХреЛрдИ рдЦреЗрд▓ рдЖрдпреЛрдЬрди, рдЗрд╕рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдЖрддрд╛ рд╣реИ, рд╕рд░реНрд╡рд░ рдкрд░ рдЭреБрдХрд╛рд╡ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╕рд░реНрд╡рд░ рдЙрджрд╛рд╕ рд╣реЛрддрд╛ рд╣реИред рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдЗрд╕ рд╕рдордп рдмрд╣реБрдд рдЦрд░рд╛рдм рд╡реАрдбрд┐рдпреЛ рдЧреБрдгрд╡рддреНрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИред

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



рд╣рдореЗрдВ рд╣рд░ рдЙрд╕ рдЙрдкрдХрд░рдг рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╡реАрдбрд┐рдпреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреА рдПрдХ рдмрд╣реБрдд рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ: рд╡рд┐рдВрдбреЛрдЬ, рд▓рд┐рдирдХреНрд╕, рдПрдВрдбреНрд░реЙрдЗрдб, рдЖрдИрдУрдПрд╕, рд╡реЗрдм, рдЯрд┐рдЬрд╝реЗрдиред рдЗрди рд╕рднреА рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдПрдХ рд╣реА рдХреЛрдб рдмреЗрд╕ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реА рднрд╛рд╖рд╛ рдЪреБрдиреЗрдВ? рд╣рдордиреЗ C ++ рдХреЛ рдЪреБрдирд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдлрд╛рдпрджреЗ рд╡рд╛рд▓рд╛ рд╣реИ: -D рдЕрдзрд┐рдХ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ C ++ рдореЗрдВ рдЕрдЪреНрдЫреА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рд╣реИ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рддреЗрдЬрд╝ рднрд╛рд╖рд╛ рд╣реИ, рдФрд░ рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдореЗрдВ рдпрд╣ рд╢рд╛рдпрдж рдХреЗрд╡рд▓ рд╕реА рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ рд╣реИред

рд╣рдореЗрдВ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдЖрд╡реЗрджрди рдорд┐рд▓рд╛ (900 рд╡рд░реНрдЧ), рд▓реЗрдХрд┐рди рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд, рд╣рдо рдореВрд▓ рдХреЛрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред Android рдФрд░ iOS рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдПрдХ рдФрд░ рдмрд╛рд░ рдЯрд┐рдЬрд╝реЗрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╡реЗрдм рдкрд░ рд╣рдо рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд▓рдЧрдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рдереЗред

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

2017 рдореЗрдВ, рдПрдХ рдирдИ рдЖрд╢рд╛ рдЖрдИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ WebAssembly рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЛ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╕реНрд╡рдпрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдФрд░ рдХреНрд░реЛрдо рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╕рдВрдд рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдФрд░ 2017 рдХреЗ рдкрддрди рддрдХ, рдПрдЬ рдФрд░ рд╕рдлрд╛рд░реА рдиреЗ рдЦреБрдж рдХреЛ рдКрдкрд░ рдЦреАрдВрдЪ рд▓рд┐рдпрд╛ред

рд╣рдорд╛рд░реЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рджреЛрдЧреБрдирд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рдЗрд╕рд▓рд┐рдП рдмрдЧ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреЛрдЧреБрдирд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдерд╛ред рд╕рдВрдХрд▓рдХ Emscripten рдХреЛ рд▓реЗрдВред рд╡рд╣ рд╡рд╣реА рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП - рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдореВрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рддрд╛ рд╣реИред рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ Emscripten C ++ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ Browserify рд╣реИред рдпрд╣ рдЖрдкрдХреЛ C ++ рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдХ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рд╣рдорд╛рд░рд╛ рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛: рдЕрдм рдЖрдЗрдореНрд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрди рдХреЛ рд▓реЗрдВ, рдмрд╕ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ, рдФрд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдмреЗрд╢рдХ, рдпрд╣ рдирд╣реАрдВ рдерд╛ред рдЗрд╕рд╕реЗ рд░реЗрдХ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реА рдпрд╛рддреНрд░рд╛ рд╢реБрд░реВ рд╣реБрдИред

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

рдмрд╛рдЗрдЯрдлреЙрдЧ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░


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



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



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



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

рдкрд░рд┐рдгрд╛рдо рдХреНрдпрд╛ рд╣реИ? рд╣рдордиреЗ рдореБрдЦреНрдп рд╡реАрдбрд┐рдпреЛ рд╡рд┐рддрд░рдг рдЪреИрдирд▓ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп AJAX рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рддрд╛ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ред рд╣рдо рд▓реЛрдХрдкреНрд░рд┐рдп HLS.js рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдбреЗрдЯрд╛ рдЬрд╛рд░реА рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЕрдиреНрдп рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдПрдХ рдореМрд▓рд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рд╣рдордиреЗ рд╡реЗрдмрдЖрд░рдЯреАрд╕реА рдХреЗ рд╕рд╛рде рдкреВрд░реЗ рдкреА 2 рдкреА рдкрд░рдд рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ред



рд╕рдВрдХрд▓рди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХрдИ рдлрд╛рдЗрд▓реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИрдВред рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдЗрдирд░реА .wasm рд╣реИред рдЗрд╕рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдмрд╛рдЗрдЯрдХреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЗ рд╕рднреА рд╕реА ++ рд╡рд┐рд░рд╛рд╕рдд рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддрдерд╛рдХрдерд┐рдд "рдЧреЛрдВрдж рдХреЛрдб" рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдпрд╣ рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рднреА рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред рдЧреЛрдВрдж рдХреЛрдб рдПрдХ рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЖрдк рдЗрди рджреЛрдиреЛрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред рдбреАрдмрдЧрд┐рдВрдЧ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХреЛрдбрд╛рдВрддрд░рдХ рдХрд╛ рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдПрдХ .wast рдлрд╝рд╛рдЗрд▓ рдФрд░ рд╕реЛрд░реНрд╕рдореИрдкред рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдмрд╣реБрдд рдмрдбрд╝реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реЗ 100 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдпрд╛ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдПред

рдмрдВрдбрд▓ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛


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

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

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

рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрд╕рд░рдг рдореЗрдВ, рдореИрдВрдиреЗ SINGLE_FILE рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдпрд╣ Base64 рдлреЙрд░реНрдо рдореЗрдВ рд╕рдВрдХрд▓рди рд╕реЗ рдЙрддреНрдкрдиреНрди рд╕рднреА рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рдкрдХрдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рдореЗрдВ рдзрдХреЗрд▓рддрд╛ рд╣реИред рдПрдХ рдорд╣рд╛рди рд╡рд┐рдЪрд╛рд░ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕рдХреЗ рдмрд╛рдж рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдореЗрдВ 100 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдмрди рдЧрдпрд╛ред рди рддреЛ рд╡реЗрдмрдкреИрдХ, рди рд╣реА рдмреИрдмреЗрд▓, рди рд╣реА рдмреНрд░рд╛рдЙрдЬрд░ рдЗрддрдиреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рд╡реИрд╕реЗ рднреА, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ 100 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ?!

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

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

Thenable


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

return new Promise((resolve, reject) => { Module(config).then((module) => { resolve(module); }); }); 

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

 Module['then'] = function(func) { if (Module['calledRun']) { func(Module); } else { Module['onRuntimeInitialized'] = function() { func(Module); }; }; return Module; }; 

рдЖрдЗрдП рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦреЗрдВред рдмрд╣реБрдд

 Module['onRuntimeInitialized'] = function() { func(Module); }; 

рдХреЙрд▓рдмреИрдХ рд▓рдЯрдХрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ: рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рд╣рдорд╛рд░реЗ рдХреЙрд▓рдмреИрдХ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдЬреИрд╕рд╛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдПрдХ рдФрд░ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред

 if (Module['calledRun']) { func(Module); 

рдЗрд╕реЗ рддрдм рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдореЙрдбреНрдпреВрд▓ рдкрд╣рд▓реЗ рд╣реА рд╢реБрд░реВ рд╣реЛ рдЪреБрдХрд╛ рд╣реЛрддрд╛ рд╣реИред рдлрд┐рд░ рдХреЙрд▓рдмреИрдХ рдХреЛ рддреБрд░рдВрдд рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░реЛрдорд┐рд╕ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдирдХрд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ?

рдпрджрд┐ рдЖрдк рдзреНрдпрд╛рди рд╕реЗ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдкреНрд░реЙрдорд┐рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реВрдХреНрд╖реНрдо рдмрд┐рдВрджреБ рд╣реИред рдЬрдм рд╣рдо рдХрд┐рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдВрдХрд▓реНрдк рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЙрд╕ рддрдмрдХреЗ рд╕реЗ рдорд╛рдиреЛрдВ рдХреЛ рдЦреЛрд▓ рджреЗрдЧрд╛, рдФрд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ .then () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред рдирддреАрдЬрддрди, рд╣рдо рд╡рд╛рджрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреВрдЫрддрд╛ рд╣реИ: рддреЛ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рд╡рд╕реНрддреБ рд╣реИ? рд╣рд╛рдВ, рдпрд╣ рдПрдХ рддрдмреАрдпрдд рд╣реИред рдлрд┐рд░ .then () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдореЙрдбреНрдпреВрд▓ рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓рдмреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореЙрдбреНрдпреВрд▓ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдЕрдЧрд░ рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рддреБрд░рдВрдд рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕реА рдореЙрдбреНрдпреВрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЙрд▓рдмреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреВрдЫрддрд╛ рд╣реИ: рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдЙрдЪрд┐рдд рд╡рд╕реНрддреБ рд╣реИ? рд╣рд╛рдВ, рдпрд╣ рдПрдХ рддрдмреАрдпрдд рд╣реИред рдФрд░ рдпрд╣ рд╕рдм рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдирддреАрдЬрддрди, рд╣рдо рдПрдХ рдЕрдВрддрд╣реАрди рдЪрдХреНрд░ рдореЗрдВ рдЧрд┐рд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрднреА рдирд╣реАрдВ рд▓реМрдЯрддрд╛ рд╣реИред



рдореБрдЭреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдирддреАрдЬрддрди, рдореИрдВ рдмрд╕ рд╕рдВрдХрд▓реНрдк рд╕реЗ рдкрд╣рд▓реЗ .then () рд╡рд┐рдзрд┐ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реВрдВ, рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

Emscripten


рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛, рдЬреЗрдПрд╕ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЧрд╛рдпрдм рд╣реИред рд╣рдореЗрдВ рд╢рд╛рдпрдж рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░реЗрдВ рдФрд░ рджреЛ рджреБрдирд┐рдпрд╛рдУрдВ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ - JS рдФрд░ C ++ред рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ? Emscripten рддреАрди рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:

  • рдкрд╣рд▓рд╛ ccall рдФрд░ cwrap рдлрд╝рдВрдХреНрд╢рди рд╣реИред рдЕрдХреНрд╕рд░ рдЖрдк рдЙрдиреНрд╣реЗрдВ WebAssembly рдкрд░ рдХреБрдЫ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдорд┐рд▓реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╡реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ C ++ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
  • рджреВрд╕рд░рд╛ рд╣реИ рд╡реЗрдмрдЖрдИрдбреАрдПрд▓ рдмрд╛рдЗрдВрдбрд░ред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА C ++ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдЧрдВрднреАрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рд╡рд░рдг рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдирдХреЗ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП W3C рджреНрд╡рд╛рд░рд╛ред рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдирд╣реАрдВ рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдФрд░ рддреАрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛
  • Embindред рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ Emscripten рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдПрдХ рдореВрд▓ рддрд░реАрдХрд╛ рд╣реИ, рдпрд╣ C ++ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ рдЖрдкрдХреЛ C ++ рд╕реЗ JS рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдХреЗ рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред


Embind рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

  • рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рд╕реЗ C ++ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ
  • C ++ рдХреНрд▓рд╛рд╕ рд╕реЗ JS рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ
  • C ++ рдХреЛрдб рд╕реЗ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ API рдХреА рдУрд░ рдореБрдбрд╝реЗрдВ (рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрдк рдРрд╕рд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, C ++ рдореЗрдВ рд╕рдВрдкреВрд░реНрдг рдлреНрд░рдВрдЯ-рдПрдВрдб рдлреНрд░реЗрдорд╡рд░реНрдХ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ)ред
  • рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдореБрдЦреНрдп рдмрд╛рдд: C ++ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ред


рдбреЗрдЯрд╛ рд╡рд┐рдирд┐рдордп


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

рдпреЛрдЬрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:



C ++ рдХреА рддрд░рдл, рдПрдХ рдХрд░реНрдиреЗрд▓ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╣рдо рдПрдХреНрд╕реЗрд╕ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд╛рд╣рд░реА рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ - рд╡реАрдбрд┐рдпреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╣ рджреЗрд╢реА рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рддрд╛ рдерд╛, рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХрд╛ HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рдерд╛ рдЬреЛ рдРрд╕рд╛ рдХрд░рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди WebSssembly рдореЗрдВ рдХреЛрдИ рджреЗрд╢реА рд╕реЙрдХреЗрдЯ рдирд╣реАрдВ рд╣реИрдВред рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдкреБрд░рд╛рдиреЗ HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдХрд╛рдЯ рджреЗрддреЗ рд╣реИрдВ, рдЗрд╕ рд╕реНрдерд╛рди рдкрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдФрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдирд┐рдпрдорд┐рдд AJAX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ C ++ рдореЗрдВ рд╡рд╛рдкрд╕ рднреЗрдЬ рджреЗрдВрдЧреЗ, рдЬрд╣рд╛рдВ рдХрд░реНрдиреЗрд▓ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред

рдЪрд▓реЛ рд╕рдмрд╕реЗ рд╕рд░рд▓ HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 class HTTPClient { public: virtual std::string get(std::string url) = 0; }; 

рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП URL рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП
рдЕрдиреБрд░реЛрдз рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧред C ++ рдореЗрдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡реАрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред Emscripten рд╣рдореЗрдВ рдпрд╣рд╛рдБ рд▓рд┐рдЦрддреЗ рд╣реИрдВ
рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдбрд░рд╛рд╡рдирд╛ рдЖрд╡рд░рдг:



рдЗрд╕рдореЗрдВ, рдореБрдЦреНрдп рдЪреАрдЬ рджреЛ рдЪреАрдЬреЗрдВ рд╣реИрдВ - рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо C ++ рдкрдХреНрд╖ (рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рд╣рд░реЗ рд░рдВрдЧ рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рд╣реИ), рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрдХреНрд╖ рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рдирд╛рдо (рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдиреАрд▓реЗ рд░рдВрдЧ рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рд╣реИ)ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо рд╕рдВрдЪрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:



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



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

рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рд╡рд┐рд╕реНрддрд╛рд░ рд╣рдореЗрдВ рдПрдХ рдирд┐рдпрдорд┐рдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд░реНрдорд╛рддрд╛ рджреЗрддрд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдХрдИ рдмрд╛рд░ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдорд╛рддреНрд░рд╛ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИ рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд╕реНрддреБ рд╣реЛрддреА рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕реЗ C ++ рдкрдХреНрд╖ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред



рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдмрд╛рдВрдзреЗрдВ рдЬрд┐рд╕реЗ C ++ рд╕рдордЭ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╡рд╣ рдХрд╛рд░реНрдп рд╣реИ рдЬреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рдпрд╣ рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рддреИрдпрд╛рд░-рд╕реЗ-рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБ, рд╣рдорд╛рд░рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ, рдЬрд┐рд╕реЗ рд╣рдо C ++ рдХреЛ рд╡рд╛рдкрд╕ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:

 var app = Module.makeApp(client, тАж) 

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

 val client = val::global(тА│clientтА│); client.call<std::string>(тА│getтА│, val(...) ); 

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

рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рддреНрд░реБрдЯрд┐рдпрд╛рдБ


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд╕рдм рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рд╡рд┐рдХрд╛рд╕ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмрд╛рдзреНрдпрдХрд╛рд░реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЖрдкрдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддреА рд╣реИрдВред рд╡реЗ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ:



Emscripten рд╣рдорд╛рд░реА рдорджрдж рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдордЭрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реЛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рд╕рдм рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ (рдЗрд╕реЗ рд╕реАрд▓ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдмрд╛рдзреНрдпрдХрд╛рд░реА рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:

  • рдирд╛рдо
  • рдкреНрд░рдХрд╛рд░
  • рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛

рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рди рдХреЗрд╡рд▓ рдлреНрд░рдВрдЯ-рдПрдВрдб рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рдмрд▓реНрдХрд┐ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рд╣реИ рдЬреЛ C ++ рд╕реЗ рдирд┐рдкрдЯрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рддрд░рд╣ рдХрд╛ рдбреАрдПрд╕рдПрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЧрд▓рддреА рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреЛрд▓рддреЗ рд╣реБрдП, рдЬрдм рдЖрдк рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рдЕрдиреБрдмрдВрдз рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╡рд░реНрдгрди рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реЛред

рд╣рдорд╛рд░рд╛ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдорд╛рдорд▓рд╛ рдерд╛ред рдореЗрд░реЗ рд╕рд╣рдХрд░реНрдореА рдЬреБрд░рд╛, рдЬреЛ C ++ рдкрдХреНрд╖ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдереЗ, рдиреЗ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрдб рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрд╕рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдЙрд╕рдиреЗ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рддрд┐рдмрджреНрдз рдХрд┐рдпрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рднреЗрдЬ рджрд┐рдпрд╛ред рдореИрдВрдиреЗ рдЗрди рдореЙрдбреНрдпреВрд▓ рдХреЛ JS рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред рдЬрдм рд╣рдордиреЗ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЬрдм рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд╛рдореЛрдВ рдореЗрдВ рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдПрдХ рдЯрд╛рдЗрдкреЛ рдорд┐рд▓рд╛ред

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

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

рдмрдврд╝рд╛рдПрдБ рдФрд░ ES6


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

 function enumerateProto(obj) { Object.getOwnPropertyNames(obj.prototype) .forEach(prop => Object.defineProperty(obj.prototype, prop, {enumerable: true}) ) } 

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХрд┐рд╕реА рджрд┐рди рдореИрдВ рдЗрд╕рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ ES6 рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ Emscripten рд╕рдореБрджрд╛рдп рдореЗрдВ рдмрд╛рдд рдХреА рдЧрдИ рд╣реИред

рдмрд┐рдирд╛ рд╕реЛрдЪреЗ рд╕рдордЭреЗ рдпрд╛рдж рдХрд░рдирд╛


C ++ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреЛрд▓рддреЗ рд╣реБрдП, рдХреЛрдИ рднреА рдорджрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд▓реЗрдХрд┐рди рд╕реНрдореГрддрд┐ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИред рдЬрдм рд╣рдордиреЗ рдПрд╕рдбреА-рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рд╡реАрдбрд┐рдпреЛ рдкрд░ рд╕рдм рдХреБрдЫ рдЬрд╛рдВрдЪрд╛, рддреЛ рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдареАрдХ рдерд╛, рдпрд╣ рдПрдХрджрдо рд╕рд╣реА рдерд╛! рдЬреИрд╕реЗ рд╣реА рд╣рдордиреЗ рдлреБрд▓рдПрдЪрдбреА рдЯреЗрд╕реНрдЯ рдХрд┐рдпрд╛, рдЙрд╕рдореЗрдВ рдореЗрдореЛрд░реА рдПрд░рд░ рдХреА рдХрдореА рдереАред рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, TOTAL_MEMORY рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЬреЛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╢реБрд░реБрдЖрддреА рдореЗрдореЛрд░реА рдорд╛рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рд╣рдордиреЗ рдЖрдзрд╛ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдмрдирд╛рдпрд╛, рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рддрд░рд╣ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдорд╛рдирд╡реАрдп рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╕рднреА рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд░рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рд░ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдлреБрд▓рдПрдЪрдбреА рд╕рд╛рдордЧреНрд░реА рдХреА рд╕рджрд╕реНрдпрддрд╛ рдирд╣реАрдВ рд╣реИред

рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИ - ALLOW_MEMORY_GROWTHред рдпрд╣ рдЖрдкрдХреЛ рдореЗрдореЛрд░реА рдмрдврд╝рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
рдзреАрд░реЗ-рдзреАрд░реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ред рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ Emscripten рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ 16 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рджреЗрддрд╛ рд╣реИред рдЬрдм рдЖрдк рд╕рднреА рдиреЗ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рддреЛ рд╕реНрдореГрддрд┐ рдХрд╛ рдПрдХ рдирдпрд╛ рдЯреБрдХрдбрд╝рд╛ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рднреА рдкреБрд░рд╛рдиреЗ рдбреЗрдЯрд╛ рдХреЛ рд╡рд╣рд╛рдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирдП рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдЙрддрдирд╛ рд╣реА рд╕реНрдерд╛рди рд╣реИред рдРрд╕рд╛ рддрдм рддрдХ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рддрдХ рдЖрдк 4 рдЬреАрдмреА рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдЬрд╛рддреЗред

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

рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди


рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдм рдерд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд░реЗрдХ рдереЛрдбрд╝рд╛ рдФрд░ рдмрдврд╝ рдЧрдпрд╛ред рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рд╣рдо рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд░реНрдЧ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

 class App { constructor(httpClient) { this.httpClient = httpClient } } 

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рд╡рд░реНрдЧ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдмрдЪрд╛рддреЗ рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

 Module.App.extend( тА│AppтА│, new App(client) ) 

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

 class App { _construct(httpClient) { this.httpClient = httpClient this._parent._construct.call(this) } } 

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

 const appConstr = Module.App.extend( тА│AppтА│, new App() ) const app = new appConstr(client) 

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд▓реЗрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╕реВрдЪрдХ рдЪрд╛рд▓


рдПрдХ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛ C ++ рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдХ рдкреЙрдЗрдВрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реИред рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдПрдХ HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд┐рдпрд╛ рдерд╛ред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг рдпрд╛рдж рдХрд┐рдпрд╛ рд╣реИред

 std::string get(std::string url) 

рд╡рд┐рдзрд┐ рддреБрд░рдВрдд рдорд╛рди рд▓реМрдЯрд╛рддреА рд╣реИ, рдЕрд░реНрдерд╛рдд, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдз рд╕рдордХрд╛рд▓рд┐рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдЖрдЦрд┐рд░рдХрд╛рд░, AJAX AJAX рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд┐ рд╡реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ рд╡рд┐рдзрд┐ рдпрд╛ рддреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓реМрдЯрд╛рдПрдЧреА, рдпрд╛ рд╣рдо рдЕрдиреБрд░реЛрдз рдЖрдИрдбреА рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХреЛ рдЬрд╡рд╛рдм рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╢реНрд░реЛрддрд╛ рдХреЛ рджреВрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ C ++ рд╕реЗ рдХреЙрд▓рдмреИрдХ рд╣реЛрдЧрд╛ред

 void get(std::string url, Listener listener) 

рдЬреЗрдПрд╕ рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 function get(url, listener) { fetch(url).then(result) => { listener.onResult(result) }) } 

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

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреЛрдЬрдирд╛ рдЕрдЪреНрдЫреА рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рднреА рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░, рдЕрд░реНрдерд╛рдд, рд╕реВрдЪрдХ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд░рдирдЯрд╛рдЗрдо рдИрд╕реНрдореИрдкреНрдЯреЗрди C ++ рдкрдХреНрд╖ рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрдЧрд╛ред

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

рдореИрдВ рдЗрд╕рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдФрд░ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрдИ рд╕рдкреНрддрд╛рд╣ рд▓рдЧ рдЧрдПред

 function get(url, listener) { const listenerCopy = listener.clone() fetch(url).then((result) => { listenerCopy.onResult(result) listenerCopy.delete() }) } 

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

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

рд╕реНрдореГрддрд┐ рдХреЛ рддреЗрдЬреА рд╕реЗ рд▓рд┐рдЦреЗрдВ


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

 var newData = new Uint8Array(тАж); var size = newData.byteLength; var ptr = Module._malloc(size); var memory = new Uint8Array( Module.buffer, ptr, size ); memory.set(newData); 

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

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

рдФрд░ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ, рд╣рдо рдореЗрдореЛрд░реА рдирдХрд▓ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рд▓ рд╢рдмреНрджрд╛рд░реНрдереЛрдВ рдкрд░ рднреА рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред

AdBlock


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



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

рдкреНрд░реЛрдбрдХреНрд╢рдВрд╕


рдирддреАрдЬрддрди, рд╣рдо рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЪрд▓реЗ рдЧрдПред рд╣рд╛рдВ, рдпрд╣ рдЖрд╕рд╛рди рдирд╣реАрдВ рдерд╛, рдЗрд╕рдореЗрдВ 8 рдорд╣реАрдиреЗ рд▓рдЧреЗ рдФрд░ рдореИрдВ рдЦреБрдж рд╕реЗ рдкреВрдЫрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдерд╛ред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ - рдпрд╣ рдореВрд▓реНрдп рдерд╛:

рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ


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

рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлреЙрд░реНрдореЛрдВ рдкрд░ рдПрдХреАрдХреГрдд рдХреЛрдб рдЖрдзрд╛рд░ рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ


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

рдЬрд▓реНрджреА рд░рд┐рд▓реАрдЬ


рд╣рдореЗрдВ рдПрдХ рддреНрд╡рд░рд┐рдд рд░рд┐рд▓реАрдЬрд╝ рдорд┐рд▓рд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡реЗрдм-рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд░рд┐рд▓реАрдЬрд╝ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдирдИ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд╕рд╛рде C ++ рдХреЛрдб рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдирдП рдкреНрд▓рдЧрд┐рди, рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпрд╛ рд╕реНрдорд╛рд░реНрдЯрдЯреАрд╡реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рд░рд┐рд╣рд╛рдИ рдХреЗрд╡рд▓ рд╣рдо рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ: рдЬрдм рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддрдм рдпрд╣ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛


рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛: рдЕрдЧрд░ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рджрд┐рди рдХреЗ рджреМрд░рд╛рди рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдВред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпреЗ рд╕рднреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдЗрди рдлрд╛рдпрджреЛрдВ рдХреЗ рд▓рд╛рдпрдХ рдереАрдВред рд╕рднреА рдХреЗ рдкрд╛рд╕ C ++ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реИ рдФрд░ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╣реЛ - WebAssembly рдЖрдкрдХреЗ рд▓рд┐рдП 100% рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред

рдЖрд╡реЗрджрди рдХрд╣рд╛рдВ рдХрд░реЗрдВ


рд╣рд░ рдХреЛрдИ C ++ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди WebAssembly рдХреЗ рд▓рд┐рдП рди рдХреЗрд╡рд▓ C ++ рдЙрдкрд▓рдмреНрдз рд╣реИред рд╣рд╛рдВ, рдпрд╣ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ рдмрд╣реБрдд рдкрд╣рд▓рд╛ рдордВрдЪ рд╣реИ рдЬреЛ рдЕрднреА рднреА рдореЛрдЬрд╝рд┐рд▓реНрд╕ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдерд╛, рдЬреЛ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореЛрдЬрд╝рд┐рд▓рд╛ рддрдХрдиреАрдХ рд╣реИред рд╡реИрд╕реЗ, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдЙрдкрдХрд░рдг рд╣реИ, рдХреЗ рд░реВрдк рдореЗрдВ рд╡реЗ рддрдХрдиреАрдХ рд╕реЗ рд╣реА рдкреБрд░рд╛рдиреЗ рд╣реИрдВред

рд░рддреБрдЖ


рдирдИ рд░рд╕реНрдЯ рднрд╛рд╖рд╛, рдЬреЛ рдХрд┐ рдореЛрдЬрд╝рд┐рд▓рд╛ рджреНрд╡рд╛рд░рд╛ рднреА рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ, рдЕрдм рдЯреВрд▓ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ C ++ рд╕реЗ рдЖрдЧреЗ рдФрд░ рдЖрдЧреЗ рдирд┐рдХрд▓ рд░рд╣реА рд╣реИред рд╕рдм рдХреБрдЫ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡реЗ WebAssembly рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рд╡рд┐рдХрд╛рд╕ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдВрдЧреЗред

рд▓реБрдЖ, рдкрд░реНрд▓, рдкрд╛рдпрдерди, рдкреАрдПрдЪрдкреА, рдЖрджрд┐ред


рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд▓рдЧрднрдЧ рд╕рднреА рднрд╛рд╖рд╛рдПрдБ рднреА WebAssembly рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рджреБрднрд╛рд╖рд┐рдП C ++ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ, рд╡реЗ рдмрд╕ WebAssembly рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдП рдЧрдП рдереЗ рдФрд░ рдЕрдм рдЖрдк рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ PHP рдХреЛ рдореЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдЬрд╛рдУ


рд╕рдВрд╕реНрдХрд░рдг 1.11 рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ WebAssembly рдореЗрдВ рд╕рдВрдХрд▓рди рдХрд╛ рдПрдХ рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдпрд╛, 2.0 рдореЗрдВ рд╡реЗ рд░рд┐рд▓реАрдЬрд╝ рд╕рдорд░реНрдерди рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдХрд╛ рд╕рдорд░реНрдерди рдмрд╛рдж рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ WebAssembly рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЧреЛ рдПрдХ рдкреНрд░рдмрдВрдзрд┐рдд-рд╕реНрдореГрддрд┐ рднрд╛рд╖рд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ WebAssembly рдХреЗ рддрд╣рдд рдЕрдкрдиреЗ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдХреЛ рдЦреАрдВрдЪрдирд╛ рдкрдбрд╝рд╛ред

рдХреЛрдЯрд▓рд┐рди / рджреЗрд╢реА


рдХреЛрдЯрд▓рд┐рди рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдХрд╣рд╛рдиреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдЙрдирдХреЗ рд╕рдВрдХрд▓рдХ рдХреЛ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕рдорд░реНрдерди рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рднреА рдХреБрдЫ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рд╕реНрдерд┐рддрд┐ рд╣реИред

3 рдбреА рдЧреНрд░рд╛рдлрд┐рдХреНрд╕


рдЖрдк рдФрд░ рдХреНрдпрд╛ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ? рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рднрд╛рд╖рд╛ рдореЗрдВ рдШреВрдорддреА рд╣реИ рд╡рд╣ 3 рдбреА рдПрдкреНрд▓реАрдХреЗрд╢рди рд╣реИред рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ, asm.js рдФрд░ WebAssembly рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЧреЗрдо рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдЖред рдФрд░ рдпрд╣ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдм рд╕рднреА рд▓реЛрдХрдкреНрд░рд┐рдп рдЗрдВрдЬрдиреЛрдВ рдХрд╛ рдирд┐рд░реНрдпрд╛рдд WebAssembly рдХреЗ рдкрд╛рд╕ рд╣реИред



рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдбрд╛рдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ


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

рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ





. , , , , . , , ; тАФ .



, Google Chrome, , WebAssembly-. npm- , Wasm, JS. , ++ - тАФ .

HunSpell тАФ Wasm .


тАФ ┬л ┬╗. , - , тАФ OpenSSL. WebAssembly. OpenSSL тАФ , , .


use case wotinspector.com. World of Tanks. , , , , , .

тАФ . , , . , , - ++, WebAssembly, ( , ).

. , , . . , , , , . . .


, , ++. , FFmpeg, . , ffmpeg. . , , , , .



тАФ . OpenCV тАФ , WebAssembly, . PDF. SQLite, SQL. SQLite WebAssembly Emscripten, .

Node.js





WebAssembly, Node.js. , Sass тАФ css. Ruby, ++ ( libsass). , Webpack', Node.js. node-sass , JS- .

, , . . :



, node-sass 100 . , ( ) . WebAssembly : , WebAssembly .

Node. , WebAssembly libsass-asm . , . WebAssembly тАж


Figma тАФ web-. - Sketch, , . ++ ( ), asm.js. , .



WebAssembly, , 3 . , .

Visual Studio Code, , Electron, , , Node-sass. , Node, . , , , WebAssembly.





тАФ AutoCAD. 30 , ++, . , , - JavaScript, , . WebAssembly AutoCAD - , 5 .

, , , , , , , , . FFMpeg тАФ , тАФ QEMU. , , KVM, .



2011 QEMU . , . , Linux , Linux-, , - .

, . bash, , Linux. тАФ GUI . . , , тАж



, , - . Windows 2000 , , 18 , . , Chrome ( FireFox).

, WebAssembly , , , , .


, WebAssembly. , тАФ , . тАФ , .



, C++ web-. , , тАФ . тАФ , , , .

, . , C++, JavaScript, . , C++. , JS C++, .

тАФ .



CI Pipeline


? JS- , Webpack. , , ( ), JS. webpack watch, , .




, . , , .

Chrome DevTools, Sources wasm-. ( - ), , , .



, , : ┬л, , , , , !┬╗. , embedded-, , - .

: -g4 wast- , .



, 100 ( FAR). тАФ , Chrome. E:/_work/bfg/bytefrog/тАж тАФ . , ++ . , SourceMap!

SourceMap


, .
  • Firefox.
  • --sourcemap-base=http://localhost , SourceMap -, .
  • HTTP.
  • .
  • Windows ┬л:┬╗ . .


. CMake , URL -. : wast- , . , .

, :



++ . ! , , stack trace, . , wasm- stack trace, , , , , .



, тАФ SourceMap . , , . , .



┬лvar0┬╗.



, . , SourceMap, , .


. Chrome, Firefox. Firefox тАФ ┬л┬╗ , , .



Chrome ( , , Mangled ), , , , .




. , :

  • . runtime, . ++ Rust Go.
  • JS тАФ Wasm. , JS Wasm. -, , . , .
  • . , , , .
  • Wasm . Wasm , JS. WebAssembly , .
  • JS.


: .

  • wasp_cpp_bench
  • Chrome 65.0.3325.181 (64-bit)
  • Core i5-4690
  • 24gb ram
  • 5 ; max min;


. JS тАФ , .



++, , - . Grayscale. C++ , . ( ), , JS. , , , ++, .


Sentry, тАФ wasm. , traceKit, Sentry тАФ Raven, тАФ , , wasm . , , , pull request, npm install JS-.



. production, , . debug-, , :




  • WebAssembly , .
  • тАФ . 8 , C++, , .
  • , , WebAssembly тАФ .
  • тАФ JS. JS- , ┬л┬╗ , , .


, :
  • Emscripten Embind. .
  • - Emscripten тАФ . , , 3000 Emscripten.
  • Sentry.
  • Firefox.


рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! .



HolyJS, : 24-25 HolyJS . (, Node.js Ryan Dahl!), тАФ 1 .

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


All Articles