WASI Standard: рд╡реЗрдм рд╕реЗ рдкрд░реЗ WebAssembly рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ

27 рдорд╛рд░реНрдЪ рдХреЛ, рд╣рдордиреЗ рдореЛрдЬрд╝рд┐рд▓рд╛ рдореЗрдВ WASI рдХреЗ рдорд╛рдирдХреАрдХрд░рдг рдХреА рд╢реБрд░реБрдЖрдд рдХреА рдШреЛрд╖рдгрд╛ рдХреА, WebAssembly рд╕рд┐рд╕реНрдЯрдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (WebAssembly рд╕рд┐рд╕реНрдЯрдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕)ред

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

рдХреНрдпрд╛: WebAssembly рдПрдХ рднреМрддрд┐рдХ рдорд╢реАрди рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡реИрдЪрд╛рд░рд┐рдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЛрдбрд╛рдВрддрд░рдХ рд╣реИред рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рд╡рд┐рднрд┐рдиреНрди рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдЪрд╛рд░рд┐рдХ рдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдпрд╣рд╛рдБ WASI рдХреНрдпрд╛ рд╣реИ: рдпрд╣ WebAssembly рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред

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

рдХреМрди: WebAssembly рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдордиреЗ рдПрдХ рдЙрдкрд╕рдореВрд╣ рдХрд╛ рдЖрдпреЛрдЬрди рдХрд┐рдпрд╛ рдЬреЛ WASI рдкрд░ рдорд╛рдирдХреАрдХреГрдд рд╣реЛрдЧрд╛ред рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрдЪреНрдЫреБрдХ рднрд╛рдЧреАрджрд╛рд░реЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ рдФрд░ рдирдП рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдпрд╣рд╛рдБ рдХреБрдЫ рдХрд╛рд░рдг рдмрддрд╛рдП рдЧрдП рд╣реИрдВ рдХрд┐ рд╣рдо, рд╣рдорд╛рд░реЗ рд╕рд╛рдереА рдФрд░ рд╕рдорд░реНрдердХ рдЗрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрдпреЛрдВ рдорд╛рдирддреЗ рд╣реИрдВ:

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

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

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

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

рддреЛ рдпрд╣ рдПрдХ рдмрдбрд╝реА рдШрдЯрдирд╛ рд╣реИ!

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рддреАрди WASI рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВ:


рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ WASI рдХрд╛ рдкреНрд░рджрд░реНрд╢рди:


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

рд╕рд┐рд╕реНрдЯрдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреНрдпрд╛ рд╣реИ?


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

рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрди - рдлрд╝рд╛рдЗрд▓реЗрдВ, рдореЗрдореЛрд░реА рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди - рд╕реНрдерд┐рд░рддрд╛ рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред

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



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

рд╕рдВрд░рдХреНрд╖рдг рдХреЗ рдЫрд▓реНрд▓реЗ рдХреЗ рд╕рд╛рде, рдУрдПрд╕ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд╕реБрд░рдХреНрд╖рд╛рддреНрдордХ рдЕрд╡рд░реЛрдз рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреЛрд░ рд╣реИред рдХреЗрд╡рд▓ рдпрд╣ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ, рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рдиреЗ рдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рдиреЗ рдЬреИрд╕реЗ рдСрдкрд░реЗрд╢рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░реНрдиреЗрд▓ рдХреЗ рдмрд╛рд╣рд░ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдерд╛рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рдкреВрдЫрдирд╛ рдЪрд╛рд╣рд┐рдПред



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

рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░, рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓реНрд╕ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рд╣реИред



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

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

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



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



рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рд╣реИ рдХрд┐ WebAssembly рдПрдХ рд╡реИрдЪрд╛рд░рд┐рдХ рдорд╢реАрди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЛрдбрд╛рдВрддрд░рдХ рд╣реИ , рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╢реАрди рдирд╣реАрдВред рдЗрд╕реА рддрд░рд╣, WebAssembly рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдУрдПрд╕ рдХреЗ рдмрдЬрд╛рдп рд╡реИрдЪрд╛рд░рд┐рдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕реЗ рд░рдирдЯрд╛рдЗрдо рд╣реИрдВ рдЬреЛ рдЗрд╕ рд╕рд┐рд╕реНрдЯрдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдмрд┐рдирд╛ рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдмрд╛рд╣рд░ WebAssembly рдХреЛ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╡реЗ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ? рдЖрдЗрдП рджреЗрдЦрддреЗ рд╣реИрдВред

рдЕрдм WebAssembly рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдмрд╛рд╣рд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?


WebAssembly рдХреЛрдб рдЬрдирд░реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкрд╣рд▓рд╛ рдЯреВрд▓ Emscripten рдерд╛ред рдпрд╣ рд╡реЗрдм рдкрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ OS рд╕рд┐рд╕реНрдЯрдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ - POSIX рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдорд╛рдирдХ рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА (libc) рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рд▓рд┐рдП, Emscripten рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ libc рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдкрд╣рд▓рд╛ рдПрдХ WebAssembly рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдЬреЗрдПрд╕-рдЧреЛрдВрдж рдХреЛрдб рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЬреЗрдПрд╕ рдЧреЛрдВрдж рдЙрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдХреЙрд▓ рднреЗрдЬрддрд╛ рд╣реИ рдЬреЛ рдУрдПрд╕ рд╕реЗ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реИред



рдЕрдзрд┐рдХрд╛рдВрд╢ рд╢реБрд░реБрдЖрддреА WebAssembly рдХреЛрдб рдХреЛ Emscripten рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬрдм рд▓реЛрдЧ рдмрд┐рдирд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ WebAssembly рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рддреЛ рдЙрдиреНрд╣реЛрдВрдиреЗ Emscripten рдХреЛрдб рдЪрд▓рд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред

рддреЛ рдЗрди рд░рдирдЯрд╛рдЗрдореНрд╕ рдореЗрдВ рдЖрдкрдХреЛ рдЬреЗрдПрд╕-рдЧреНрд▓реВ рдХреЛрдб рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд▓реЗрдХрд┐рди рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдЬреЗрдПрд╕ рдЧреЛрдВрдж рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдорд╛рдирдХ рдпрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╛рдорд╛рдиреНрдп API рдореЗрдВ read рд▓рд┐рдП рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, JS рдЧреЛрдВрдж рдХреЛрдб _system3(which, varargs) рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред



рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ which рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ рдЬреЛ рд╣рдореЗрд╢рд╛ рдирд╛рдо рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ 3)ред

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

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ Emscripten рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рд░рдирдЯрд╛рдЗрдореНрд╕ рдЗрд╕реЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдирдХ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ, рдЬреЗрдПрд╕ рдЧреЛрдВрдж рдХреЗ рдЕрдкрдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ POSIX рдЕрдиреБрдХрд░рдг рдкрд░рдд рдХреЗ рдЖрдВрддрд░рд┐рдХ рд╡рд┐рд╡рд░рдг рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВред

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



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

рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреМрди рд╕реЗ рд╕рд┐рджреНрдзрд╛рдВрдд рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ?

WebAssembly рд╕рд┐рд╕реНрдЯрдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд┐рди рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?


WebAssembly рдХреЗ рджреЛ рдореВрд▓рднреВрдд рд╕рд┐рджреНрдзрд╛рдВрдд:

  • рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА
  • рд╕реБрд░рдХреНрд╖рд╛

рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдкрд░реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрди рдкреНрд░рдореБрдЦ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реИрдВред

рд╣рд╛рд▓рд╛рдБрдХрд┐, POSIX рджреГрд╖реНрдЯрд┐рдХреЛрдг рдФрд░ рдпреВрдирд┐рдХреНрд╕ рдПрдХреНрд╕реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓ рд╕рд┐рд╕реНрдЯрдо рд╣рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИред

рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА


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



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



рдпрд╣ рдХреЛрдб рд╡рд┐рддрд░рдг рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред

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

рд╕реБрд░рдХреНрд╖рд╛


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

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

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



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

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

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


рд╕рдВрджрд┐рдЧреНрдз рдЖрд╡реЗрджрди : рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмреЙрдм рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдореИрдВ рдЙрд╕рдХрд╛ рдмрд┐рдЯрдХреЙрдЗрди рд╡реЙрд▓реЗрдЯ рдЦреЛрд▓ рд╕рдХрддрд╛ рд╣реВрдВ?
рдХреЛрд░ : рдмреЙрдм рдХреЗ рд▓рд┐рдП? рдмреЗрд╢рдХ!
рд╕рдВрджреЗрд╣рд╛рд╕реНрдкрдж рдРрдк : рд╢рд╛рдирджрд╛рд░! рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

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

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

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


WA : рдХреГрдкрдпрд╛, рдпрд╣рд╛рдБ OS (safe_write, safe_read) рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реБрд░рдХреНрд╖рд┐рдд рдЦрд┐рд▓реМрдиреЗ рд╣реИрдВред
рд╕рдВрджреЗрд╣рд╛рд╕реНрдкрдж рдЕрдиреБрдкреНрд░рдпреЛрдЧ : рдЕрд░реЗ рдЕрд░реЗ ... рдиреЗрдЯрд╡рд░реНрдХ рддрдХ рдореЗрд░реА рдкрд╣реБрдВрдЪ рдХрд╣рд╛рдВ рд╣реИ?

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

рдРрд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдХреНрдпрд╛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП?


рдЗрди рджреЛ рдкреНрд░рдореБрдЦ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, WebAssembly рд╕рд┐рд╕реНрдЯрдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

рдпрд╣ рд╣рдо рдорд╛рдирдХреАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрдЭрд╛рд╡ рд╣реИ:

  • рдорд╛рдирдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдПрдХ рдореЙрдбреНрдпреВрд▓рд░ рд╕реЗрдЯ рдмрдирд╛рдирд╛
  • рдЖрдЗрдП рд╡рд╕реА-рдХреЛрд░ рдХреЛрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдорд╛рдирдХреАрдХрд░рдг рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред




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

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

рд▓реЗрдХрд┐рди wasi-core рд╕рднреА POSIX рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ WebAssembly рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ WebAssembly рдЗрдВрдЬрди рдХреЛ fork рдЬреИрд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рд╣рдо fork рдорд╛рдирдХреАрдХрд░рдг рднреА рд╕рдВрднрд╡ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред



Rust рдЬреИрд╕реА рднрд╛рд╖рд╛рдПрдВ рдЕрдкрдиреЗ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕реАрдзреЗ wasi-core рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ustw_path_open рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ WebAssembly рдореЗрдВ рд╕рдВрдХрд▓рди рдХрд░рддреЗ рд╕рдордп рд░рд╕реНрдЯ рд╕реЗ open рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

C рдФрд░ C ++ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ wasi-sysroot рдмрдирд╛рдпрд╛, рдЬреЛ wasi-core рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ libc рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред



рд╣рдо рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрд▓реИрдВрдЧ рдЬреИрд╕реЗ рдХрдВрдкрд╛рдЗрд▓рд░ WASI API рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рдФрд░ Rust рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ Emscripten рдЬреИрд╕реА рдкреВрд░реА рдЯреВрд▓ рдЪреЗрди WASI рдХреЛ рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рдХрд╕реНрдЯрдо рдХреЛрдб рдЗрди WASI рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ?

рд░рдирдЯрд╛рдЗрдо рдЬрд┐рд╕рдореЗрдВ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рд╡рд╣ рд╡рд╕реНрддреБ рдХреЛ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рд╡рд╛рд╕реА-рдХреЛрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред



рдпрд╣ рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╣реЛрд╕реНрдЯ рдХрд╛ рдЕрдкрдирд╛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: WebAssembly runtimes рдЬреИрд╕реЗ Mozilla Wasmtime рдФрд░ Fastly Lucet, рд╕реЗ Node рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рддрдХред

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



WASI рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдПрдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг-рдЖрдзрд╛рд░рд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╢реБрд░реВ рдХрд░рдХреЗ рд╕реБрд░рдХреНрд╖рд╛ рдмрдврд╝рд╛рддрд╛ рд╣реИ рдФрд░ рдмрдврд╝рд╛рддрд╛ рд╣реИред

рдЖрдорддреМрд░ рдкрд░, рдпрджрд┐ рдХреЛрдб рдХреЛ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рд▓рд╛рдЗрди рдореЗрдВ рдкрде рдирд╛рдо рдХреЗ рд╕рд╛рде open рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░, рдУрдПрд╕ рдпрд╣ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдб рдХреЛ рдРрд╕реА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИ (рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░)ред

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

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдб рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЧрд▓рддреА рд╕реЗ рдЖрдкрдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ /etc/passwd ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдХреЛрдб рдХреЗрд╡рд▓ рдЕрдкрдиреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред



рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЛ рдкреГрдердХ рдХреЛрдб рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрди рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреА рдХреНрд╖рдорддрд╛рдПрдВ рд╕реАрдорд┐рдд рд╣реИрдВред

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

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



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

рдпрд╣ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдЖрдзрд╛рд░рд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ CloudABI рдФрд░ рдХреИрдкреНрд╕рд┐рдХрдо рдореЗрдВ рд╣реИред рдЗрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЛрдб рдХреА рдХрдард┐рди рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрджрд┐ рдХреЛрдб рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╛рдкреЗрдХреНрд╖ рдлрд╝рд╛рдЗрд▓ рдкрдереЛрдВ рдХреЗ рд╕рд╛рде openat рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдмрд╕ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

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

рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?


рд╣рдорд╛рд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ wasi-core рдПрдХ рдЕрдЪреНрдЫреА рд╢реБрд░реБрдЖрдд рд╣реИред рдпрд╣ WebAssembly рдХреА рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдмрд░рдХрд░рд╛рд░ рд░рдЦрддрд╛ рд╣реИ, рдЬреЛ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдареЛрд╕ рдЖрдзрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рд╡рд╛рд╕реА-рдХреЛрд░ рдХреЗ рдкреВрд░реНрдг рдорд╛рдирдХреАрдХрд░рдг рдХреЗ рдмрд╛рдж, рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЗрдирдкреБрдЯ-рдЖрдЙрдЯрдкреБрдЯ
  • рдлрд╝рд╛рдЗрд▓ рдирд┐рдЧрд░рд╛рдиреА
  • рдлрд╝рд╛рдЗрд▓ рд▓реЙрдХ

рдпрд╣ рдХреЗрд╡рд▓ рд╢реБрд░реБрдЖрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рддреЛ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ !

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


All Articles