Design: рдХреНрдпрд╛ WebAssembly.Instance рдкрд╣рд▓реЗ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкреБрди: рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 27 рдЕрдХреНрддреВре░ 2016  ┬╖  94рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: WebAssembly/design

рдХрд╣реЛ рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдХреЛрдб рд╣реИ:

let descriptor = /* ... */;
let memories = Array.apply(null, {length: 1024}).map(() => new WebAssembly.Memory(descriptor));
let instance = fetch('foo.wasm')
  .then(response => response.arrayBuffer())
  .then(buffer => WebAssembly.compile(buffer))
  .then(module => new WebAssembly.Instance(module, { memory: memories[1023] }));

рдХреНрдпрд╛ WebAssembly.Instance рдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдордп рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП WebAssembly.Module рдкреБрди: рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдореИрдВ рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╕реНрдореГрддрд┐ рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ? рдХрд╣реЛ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдореЗрдореЛрд░реА рдПрдХ рдзреАрдореА-рдореЛрдб рдореЗрдореЛрд░реА рд╣реИ рдФрд░ рдХреЛрдб рдХреЛ рдлрд╛рд╕реНрдЯ-рдореЛрдб рдорд╛рдирдХрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛? рд╢рд╛рдпрдж memories[0] рдПрдХ рдлрд╛рд╕реНрдЯ-рдореЛрдб рдореЗрдореЛрд░реА рдереА, рд▓реЗрдХрд┐рди memories[1023] рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛:

let instances = [0,1,2,3,4,5,6,7].map(v => fetch(`foo${v}.wasm`)
  .then(response => response.arrayBuffer())
  .then(buffer => WebAssembly.compile(buffer))
  .then(module => new WebAssembly.Instance(module)));

рдХреНрдпрд╛ рдЙрди рдХреЙрд▓реЛрдВ рдХреЛ WebAssembly.Instance рдкреБрди: рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ?

рдЙрдкрд░реЛрдХреНрдд рдорд╛рди рд▓рд┐рдпрд╛ рдЬрд╛рдП рддреЛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдпрд╣рд╛рдБ рдХреБрдЫ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╢реНрди рд╣реИрдВ:

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

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

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

рд╕рднреА 94 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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

реирен рдЕрдХреНрдЯреВрдмрд░ реирежрезрем рдХреЛ режрей:реирек рдмрдЬреЗ, рдорд╛рдЗрдХрд▓ рдмреЗрдмреЗрдирд┐рддрд╛ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

WebAssembly рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдХрднреА-рдХрднреА рдкреБрди: рд╕рдВрдХрд▓рди рдХрд╛ рдХрд╛рд░рдг рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП,
рдЗрд╕ рддрд░рд╣ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЧреНрд▓реЛрдмрд▓реНрд╕ рд╡рд░реНрд░реНрд╕ рдХреЛ рдЬреЗрдирд░реЗрдЯ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдлреЛрд▓реНрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдХреЛрдбред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯрди рд╕рднреА рдХреЛ рдСрдлрд╕реЗрдЯ рдХрд░рдХреЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ
рд╕реНрдерд┐рд░ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрддред рдСрдлрд╕реЗрдЯ рдХреЛ рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡реИрд╢реНрд╡рд┐рдХ var . рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдЬрдм рдореЙрдбреНрдпреВрд▓ рдХреЛ рддрддреНрдХрд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ WebAssembly.Instance рдкреБрди: рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ,
рдпрд╣ рдЬреЗрдирд░реЗрдЯ рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдереНрд░реЗрдб рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/WebAssembly/design/issues/838#issuecomment -256522163,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AEDOO9sJPgujK3k0f6P7laYV_zaJxES5ks5q3_1LgaJpZM4Kh1gM
.

рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рдЧреИрд░-рдорд╛рдирдХ рдиреЛрдЯ рд╣реЛрдЧрд╛ред

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

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

  • рдЗрдореНрдкреНрд▓рд╛рдВрдЯ рдХрдВрдЯреЗрдВрдЯ-рдПрдбреНрд░реЗрд╕реНрдб рдХреИрд╢рд┐рдВрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдЬрд┐рд╕рдореЗрдВ рдХреБрдВрдЬреА рдореЗрдВ рдкрд░рд┐рд╡реЗрд╢ рдкреИрд░рд╛рдореАрдЯрд░ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ), рдЬреИрд╕реЗ рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдлрдПрдл рдореЗрдВ asm.js рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рддрд░рд╣ рдХрд╛ рджрд░реНрдж рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдореЗрдВ рдХрд┐рд╕реА рднреА рдирд┐рд╣рд┐рдд рдХреИрд╢ рдХреА рд╕рднреА рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди/рдЕрдиреБрдорд╛рдиреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред
  • рд╣рдо рдПрдХ рдирдпрд╛ рддрд░реАрдХрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдирдпрд╛ WebAssembly.Cache рдПрдкреАрдЖрдИ рдЬрд╣рд╛рдВ рдЖрдк рдмрд╛рдЗрдЯрдХреЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЗрдВрдЯреЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдкрд╛рд╕ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ Promise<Instance> рд╡рд╛рдкрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред

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

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

@lukewagner рдирд┐рд╣рд┐рдд рдпрд╛ рд╕реНрдкрд╖реНрдЯ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рднреА рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ: рдПрдХ рд╣реА рдкрддрд╛-рд╕реНрдерд╛рди/рдореВрд▓ рдореЗрдВ рдХрд┐рддрдиреЗ WebAssembly.Memory рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реАрдорд╛ рд╣реИред рдЖрдк рдЬреЛ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдореБрдЭреЗ рдкрд╕рдВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдСрд░реНрдереЛрдЧреЛрдирд▓ рд╣реИред рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЛ рдЧрд▓рдд рд╕рдордЭрд╛ рд╣реИред

рд╢рд╛рдпрдж .compile рдФрд░ Module рдХреЛ Memory рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ Instance рдореЗрдВ .memory рд╕рдВрдкрддреНрддрд┐ рд╣реИ рдЬрд┐рд╕реЗ рдЕрдиреНрдп рд╕рдВрдХрд▓рди/рддрддреНрдХрд╛рд▓ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ?

рдореИрдВ рдкреБрди: рд╕рдВрдХрд▓рди рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рдПрдкреАрдЖрдИ рдЙрдкрдпреЛрдЧ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ-рд╕рдВрдХрд▓рди-рд╕рдордп (рдпрд╛ рдХреИрд╢-рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рд╕рдордп рдкрд░) рдкрд░ рд╕рд╣реА рдЬрд╛рдирдХрд╛рд░реА Memory рд╣реЛред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рд╕рдВрдХрд▓рди рд╕реАрдорд╛ рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

@jfbastien рдирд┐рд╣рд┐рдд/рд╕реНрдкрд╖реНрдЯ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЬреЛ рд╡рд┐рд╢реЗрд╖ рддрддреНрдХрд╛рд▓ рдкреИрд░рд╛рдореАрдЯрд░ (рдЗрд╕рд▓рд┐рдП Memory ) рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдкреБрдирд░реНрдореВрд▓реНрдпрд╛рдВрдХрди рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреИрд╕реЗ рд╣реЛрдЧреАред

@jfbastien рдирд┐рд╣рд┐рдд/рд╕реНрдкрд╖реНрдЯ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЬреЛ рд╡рд┐рд╢реЗрд╖ рддрддреНрдХрд╛рд▓ рдкреИрд░рд╛рдореАрдЯрд░ (рдЗрд╕рд▓рд┐рдП Memory ) рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдкреБрдирд░реНрдореВрд▓реНрдпрд╛рдВрдХрди рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреИрд╕реЗ рд╣реЛрдЧреАред

рд╡рд╣рд╛рдБ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

  1. рдХрдИ Memory s рдмрдирд╛рдПрдБред
  2. рд╕реНрдкрд╖реНрдЯ (рдзреАрдореА) рд╕реАрдорд╛рдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд╕рд╛рде рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ Memory рдпрд╛рдиреА рдереЗред
  3. рдЙрд╕ рдХреЛрдб рдХреЛ рдХреИрд╢ рдХрд░реЗрдВред
  4. рдкреЗрдЬ рдЫреЛрдбрд╝реЗрдВред
  5. рдкреЗрдЬ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░реЗрдВред
  6. рдХреЗрд╡рд▓ рдПрдХ Memory рдЖрд╡рдВрдЯрд┐рдд рдХрд░реЗрдВ, рдЬреЛ рддреЗрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
  7. рдХреИрд╢ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
  8. рдзреАрдорд╛ рдХреЛрдб Instance ред

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

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛: рдореБрдЭреЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдпрд╣ Cache рдПрдкреАрдЖрдИ рдкрд╕рдВрдж рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ WebAssembly рдХреЛ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рд╣реИред рдореИрдВ

рдареАрдХ рд╣реИ рдХрд┐ рдПрдХ рдЙрдиреНрдирдд рдХреИрд╢ рд░рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░рд╛ рдореБрджреНрджрд╛ рд╣реИ рдЬреЛ рддрддреНрдХрд╛рд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рдмрд╛рдЗрдЯрдХреЛрдб рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ: рдХреИрд╢ рдкреБрди: рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ рдпрджрд┐ рдЙрд╕рдиреЗ рдХреИрд╢ рдХрд┐рдпрд╛ рд╣реИ рддреЛ рддрддреНрдХрд╛рд▓ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИред рддреЛ рдХрджрдо рдмрд╕ рд╣реЛрдВрдЧреЗ:

  1. рдХрдИ Memory рдмрдирд╛рдПрдВ
  2. рдХреИрд╢ рд╕реЗ Instance рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдкрд╛рд╕ рдХрд░реЗрдВ (рдзреАрдорд╛) Memory s
  3. рдзреАрдорд╛-рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд, рдХреИрд╢реНрдб рдФрд░ Instance рд░реВрдк рдореЗрдВ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  4. рдкреЗрдЬ рдЫреЛрдбрд╝реЗрдВ
  5. рдкреЗрдЬ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░реЗрдВ
  6. рдХреЗрд╡рд▓ рдПрдХ Memory рдЖрд╡рдВрдЯрд┐рдд рдХрд░реЗрдВ
  7. рдХреИрд╢ рд╕реЗ Instance рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ, рддреЗрдЬреА рд╕реЗ Memory
  8. рдлрд╛рд╕реНрдЯ-рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд, рдХреИрд╢реНрдб рдФрд░ Instance рд░реВрдк рдореЗрдВ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдФрд░ рдЪрд░рдг 8 рдХреЗ рдмрд╛рдж, рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рднреА рдкреЗрдЬ рд▓реЛрдб рдХреЛ рддреЗрдЬ рдпрд╛ рдзреАрдорд╛ рдХреЛрдб рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

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

рдореЗрд░реЗ рд▓рд┐рдП рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ: рдПрдХ рдЕрдиреБрдХреВрд▓рди рдЬреЛ рд╣рдо рд╕рднреА рдХреЛ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (4GB рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдмрд╛рдЙрдВрдб рдЪреЗрдХрд┐рдВрдЧ, рдЬрд┐рд╕реЗ рдореИрдВ рд╕рд┐рд░реНрдл 4GB рд╣реИрдХ рдХрд╣реВрдВрдЧрд╛) рдмрд┐рдирд╛ рддреНрдпрд╛рдЧ рдХреЗ рд╡рд░реНрддрдорд╛рди рдХрд▓реНрдкрдирд╛ рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЗрди рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ:

  • рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА wasm рдореЗрдореЛрд░реА рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ 4GB рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЗрд╕рд╕реЗ рджреВрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреЛ рдЫреЛрдЯреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП WebAssembly рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдЖрдк рдЗрдирдореЗрдВ рд╕реЗ рдХрдИ рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рд╕реАрдорд╛, рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдлрд╝реНрд░реЗрдЧреНрдореЗрдВрдЯреЗрд╢рди, рдпрд╛ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВрдЧреЗред рдореБрдЭреЗ рдпрд╣ рднреА рдбрд░ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕реЗ рдЖрд╡рдВрдЯрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдПрдПрд╕рдПрд▓рдЖрд░ рдЬреИрд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рд╢рдорди рдХреА рдкреНрд░рднрд╛рд╡рдХрд╛рд░рд┐рддрд╛ рдХреЛ рдХрдо рдХрд░ рджреЗрдВрдЧреЗред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореМрдЬреВрджрд╛ рдПрдкреАрдЖрдИ рдЗрд╕ рдЦрддрд░реЗ рдХреЛ рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЖрд╡рдВрдЯрд┐рдд рд╕реНрдореГрддрд┐ рдХреЛ рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рднреМрддрд┐рдХ рд╕реНрдореГрддрд┐ рдХреА рдЕрдиреБрдорддрд┐ рд╕реЗ рдЕрдзрд┐рдХ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╡реЗ рдпрд╛ рддреЛ рдУрдУрдПрдо рдпрд╛ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред
  • рдЖрдк рдЗрд╕рд╕реЗ рджреВрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдк рддрддреНрдХрд╛рд▓рддрд╛ рдХреЗ рджреМрд░рд╛рди рдПрдХ рдмреЗрдореЗрд▓ рдорд┐рд▓рдиреЗ рдкрд░ рдкреБрди: рд╕рдВрдХрд▓рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ (рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб 4 рдЬреАрдмреА рд╣реИрдХ рдЪрд╛рд╣рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╕реНрдореГрддрд┐ рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдирд╣реАрдВ рд╣реИ)ред рдпрджрд┐ рдЗрдВрд╕реНрдЯреЗрдВрдЯреЗрд╢рди рдиреЗ рдореЗрдореЛрд░реА рдХреЛ 4GB рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛, рддреЛ рдЖрдк рдЗрд╕рд╕реЗ рджреВрд░ рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд┐рдЫрд▓реЗ рдмрд┐рдВрджреБ рдХреЛ рджреЗрдЦреЗрдВред рддреЛ, рд╢рд╛рдпрдж рдХрднреА рднреА рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рдЙрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП P1 рдмрдЧ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдиреЗ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдХрд▓реНрдкрдирд╛ рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ рдХреЛ рдХреЗрд╡рд▓ 4GB рдЖрд░рдХреНрд╖рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░реЗрдЧреА, рдХрднреА рднреА рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдпрд╛ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╢/рдЖрд▓рд╕реА-рд╕рдВрдХрд▓рди/рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

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

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

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

рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХреИрд╢рд┐рдВрдЧ рдпрд╛ рдПрд╕рд┐рдВрдХреНрд╕ рдЗрдВрд╕реНрдЯреЗрдВрдЯрд┐рдПрдЯ рдХреЗ рдпреЗ рд╡рд┐рдХрд▓реНрдк рдХреИрд╕рд╛ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВрдЧреЗ:

  1. рдореЙрдбреНрдпреВрд▓ рд▓реЗрдЦрдХ рдХреЛ рдиреНрдпреВрдирддрдо/рдЕрдзрд┐рдХрддрдо рдореЗрдореЛрд░реА рдХреЗ рд░реВрдк рдореЗрдВ 4GB рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
  2. рд╕рдВрдХрд▓рди рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ (рдХрдо рд╕реЗ рдХрдо async, рд╢рд╛рдпрдж рд╕рд┐рдВрдХ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рдЬреЛ рдХреЗрд╡рд▓ рддреЗрдЬрд╝ рдореЗрдореЛрд░реА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред

"4GB рд╣реИрдХ" рдХреЗ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдореЗрдореЛрд░реА рдФрд░ рдХреЛрдб рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдмреАрдЪ рдмреЗрдореЗрд▓, рдХреНрдпрд╛ рдпрд╣ рдХреЛрдб рдХреЗ рджреЛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ? (рдЬрд╛рд╣рд┐рд░ рд╣реИ рдпрд╣ рдЕрдзрд┐рдХ рд╕реНрдореГрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдЬреЛ рджреБрдЦрдж рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рди рд╕рдордп рдЬреНрдпрд╛рджрд╛ рдЦрд░рд╛рдм рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдЦрдХ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рджреЛрдиреЛрдВ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ?)

@mtrofin рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрджрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ рддреЛ 4GiB рдХреЗ рд▓рд┐рдП рдкреВрдЫрдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рд╡рд░реНрдЪреБрдЕрд▓ рдЖрд╡рдВрдЯрди рдЙрдкрдпреЛрдЧ рдХреЗ рдЗрд░рд╛рджреЗ рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рджреЛрдиреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

2 рдкрд░: рдпрд╣ рдЕрднреА рднреА рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ: рдпрджрд┐ рд╡реЗ рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛?

@kripken рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдбрдмрд▓ рд╕рдВрдХрд▓рди рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред

@kripken рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд┐рдирд╛ рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗред

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

@mtrofin

рдореЙрдбреНрдпреВрд▓ рд▓реЗрдЦрдХ рдХреЛ рдиреНрдпреВрдирддрдо/рдЕрдзрд┐рдХрддрдо рдореЗрдореЛрд░реА рдХреЗ рд░реВрдк рдореЗрдВ 4GB рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ 4GB рдХреА рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рд╕рдВрдХрд▓рди рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ (рдХрдо рд╕реЗ рдХрдо async, рд╢рд╛рдпрдж рд╕рд┐рдВрдХ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рдЬреЛ рдХреЗрд╡рд▓ рддреЗрдЬрд╝ рдореЗрдореЛрд░реА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдбрдмрд▓ рдХрдВрдкрд╛рдЗрд▓ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

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

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

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

@lukewagner

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

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

рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА 4GB рдореЗрдореЛрд░реА рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╕реАрдорд╛ рд╣реИ? рдЬрдм рдЖрдк рдЗрд╕ рд╕реАрдорд╛ рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ - рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЫреЛрдбрд╝ рджреЗрдВ, рдпрд╛ рддрддреНрдХрд╛рд▓рддрд╛ рдкрд░ рдкреБрди: рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ?

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

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

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

рдХреЛрдб рдЬрд┐рд╕рдореЗрдВ рд╕реАрдорд╛ рдЬрд╛рдВрдЪ рд╣реЛрддреА рд╣реИ, рд╕реНрдореГрддрд┐ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдкрд┐рди рдХрд░рдирд╛ рдФрд░ рдореЗрдореЛрд░реА рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдкрд┐рди рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред

4GB рд╣реИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЛ рдХреЗрд╡рд▓ рдореЗрдореЛрд░реА рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдкрд┐рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рддреЛ, рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред

рдХрд▓реНрдкрдирд╛ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдЭреБрдВрдЭрд▓рд╛рд╣рдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╡рд╛рджрд╛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рд╕рдВрдХрд▓рди рдФрд░ рддрд╛рддреНрдХрд╛рд▓рд┐рдХрддрд╛ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рдиреБрдХрд╕рд╛рди рдХреНрдпрд╛ рд╣реИрдВ?

рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрд╣реБрдд рд╕реЗ рдЖрд╡рдВрдЯрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛ рдЬреЛрдЦрд┐рдо рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдРрд╕рд╛
рдЖрд╡рдВрдЯрди ASLR рдХреА рдкреНрд░рднрд╛рд╡рдХрд╛рд░рд┐рддрд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред

рдореИрдВ ASLR рдХрд╛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди, iiuc, рднрд▓реЗ рд╣реА рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд░реВрдврд╝рд┐рд╡рд╛рджреА рд╕реАрдорд╛ рди рд╣реЛ (рдЕрд░реНрдерд╛рдд, рдпрджрд┐ рд╣рдордиреЗ рдЖрдкрдХреЛ mmap рддрдХ рдЖрд╡рдВрдЯрди рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрд░реНрдиреЗрд▓ рдиреЗ рдЕрдкрдиреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╣рд┐рдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИ- рдПрдбреНрд░реЗрд╕-рд░реЗрдВрдЬ рдореИрдХреНрд╕), рдкреВрд░реЗ 47-рдмрд┐рдЯ рдПрдбреНрд░реЗрд╕реЗрдмрд▓ рд╕реНрдкреЗрд╕ рдХреЗ рдХреЗрд╡рд▓ рдЫреЛрдЯреЗ рдЕрдВрд╢ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕ 47-рдмрд┐рдЯ рд╕реНрдкреЗрд╕ рдкрд░ рдХреЛрдб рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдЕрддреНрдпрдзрд┐рдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмрдирд╛ рд░рд╣реЗрдЧрд╛ред IIUC, ASLR рдХреЛрдб рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдпрд╛ рддреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдирд╣реАрдВ рд╣реИ; рдпрд╣ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдирд╛ рдХрдард┐рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рдХреБрдЫ рднреА рдХрд╣рд╛рдВ рд╣реЛрдЧрд╛ред

рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА 4GB рдореЗрдореЛрд░реА рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╕реАрдорд╛ рд╣реИ? рдЖрдк рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реЛ
рдЬрдм рдЖрдк рдЗрд╕ рд╕реАрдорд╛ рдХреЛ рдорд╛рд░рддреЗ рд╣реИрдВ - рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЫреЛрдбрд╝ рджреЗрдВ, рдпрд╛ рддрддреНрдХрд╛рд▓рддрд╛ рдкрд░ рдкреБрди: рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ?

рдЦреИрд░, рдЪреВрдВрдХрд┐ рдпрд╣ asm.js рджрд┐рдиреЛрдВ рд╕реЗ рд╣реИ, рдХреЗрд╡рд▓ 1000ред рддрдм рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрди рдмрд╕ рдлреЗрдВрдХрддрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ рдЯрдХреНрдХрд░ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдХрдИ рд╕реБрдкрд░-рдореЙрдбреНрдпреВрд▓рд░рд╛рдЗрдЬреНрдб рдРрдкреНрд╕ (рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реЙрд╢ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде) рдПрдХ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рд╣рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Memory рд╕рд╛рджреЗ рдкреБрд░рд╛рдиреЗ рд╕реЗ рдЕрд▓рдЧ рд╣реИ ArrayBuffer рдПрд╕ рдЙрд╕ рдРрдк рдореЗрдВ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╣рдЬрд╛рд░реЛрдВ рдмрдирд╛рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣реЗрдВрдЧреЗред

рдХрд▓реНрдкрдирд╛ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдЭреБрдВрдЭрд▓рд╛рд╣рдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдорд┐рдпрд╛рдВ рдХреНрдпрд╛ рд╣реИрдВ
рдПрдХ рд╡рд╛рджрд╛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рд╕рдВрдХрд▓рди рдФрд░ рддрд╛рддреНрдХрд╛рд▓рд┐рдХрддрд╛ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛?

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдПрдХ Promise<Instance> eval(bytecode, importObj) рдПрдкреАрдЖрдИ рдЬреЛрдбрд╝рдирд╛ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдПрдХ рдХрдард┐рди рд╕реНрдерд╛рди рдкрд░ рд░рдЦрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рдХреЛ рдХреИрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдореБрдХрд╛рдмрд▓реЗ рдХреБрдЫ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдПрдХ рдкреВрд░реНрдг рдмреВрд╕реНрдЯ рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕рднреА рдкреНрд▓реЗрдЯрдлреЙрд░реНрдоред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдРрд╕реЗ рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рд╣реЛ рдФрд░ рдпрд╣реА рдореИрдВ рдКрдкрд░ рд╕реНрдкрд╖реНрдЯ Cache API рдХреЗ рд╕рд╛рде рд╡рд┐рдЪрд╛рд░-рдордВрдерди рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдирдпрд╛ рд╡рд┐рдЪрд╛рд░: рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо new Instance рдХрд╛ рдПрдХ рдПрд╕рд┐рдВрдХ рд╕рдВрд╕реНрдХрд░рдг рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ WebAssembly.instantiate рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ WebAssembly.compile , рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рдХреЛ рдПрд╕рд┐рдВрдХ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдореИрдВ _anyway_ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдкреИрдЪрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЗрдВрд╕реНрдЯреЗрдВрдЯреЗрд╢рди рдореЗрдВ рдХреБрдЫ рдПрдордПрд╕ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдо рдХрд▓реНрдкрдирд╛ рдореЗрдВ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЗрдВрдЬрди рдпрд╛ рддреЛ compile рдпрд╛ instantiate рдореЗрдВ рдорд╣рдВрдЧрд╛ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдпрд╛ рди рд╣реА, рдЕрдЧрд░ рдХреЛрдИ рдЗрдВрдЬрди рдЖрд▓рд╕реА рд╕рддреНрдпрд╛рдкрди/рд╕рдВрдХрд▓рди рдХрд░рддрд╛ рд╣реИ!)

рдпрд╣ рдЕрднреА рднреА рдЗрд╕ рд╕рд╡рд╛рд▓ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ рдЬрдм compile d Module рдЖрдИрдбреАрдмреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдХрдард┐рди рдкреНрд░рд╢реНрди рд╣реИ рдЬрдм рдХрдИ рдХреЛрдбрдЬрди рдореЛрдб _anyway_ рд╣реИрдВред рдПрдХ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ Module s рдЬреЛ IDB рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдпрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрдирдХреА IDB рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдВрдбрд▓ рдкрд░ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╡реЗ рдЗрд╕ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдореЗрдВ рдирдпрд╛ рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣, рдЖрдИрдбреАрдмреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рд╕рдВрдХрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЖрд▓рд╕реА рд░реВрдк рд╕реЗ рдЬрдорд╛ рдХрд░ рджреЗрдЧреА рдФрд░ рддрддреНрдХрд╛рд▓рддрд╛ рдХреЗ рджреМрд░рд╛рди рдЬреЛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЙрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧреАред

IDB рднрд╛рдЧ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдХрд╛рдо рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрджрд░реНрд╢, рдкреНрд░рджрд░реНрд╢рди-рд╡рд╛рд░ рдХреЗ рдХрд╛рдлреА рдХрд░реАрдм рд▓рдЧрддрд╛ рд╣реИред рдбрдмреНрд▓реНрдпреВрдбреАрд╡рд╛рдИрдЯреА?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ async instantiate рдЬреЛрдбрд╝рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ Memory рдкреИрд░рд╛рдореАрдЯрд░ рднреА compile ред рдпрджрд┐ instantiate рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореЗрдореЛрд░реА рдкрд╛рд╕ рдХрд░реЗрдВ рддреЛ рдЖрдк рдкреБрди: рд╕рдВрдХрд▓рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ рдЖрдк рд╕рдВрдХрд▓рди рдХрд░рддреЗ рд╕рдордп рд╕реНрдореГрддрд┐ рдХреЛ рдкрд╣рд▓реЗ рд╣реА "рдмрд╛рдзреНрдп" рдХрд░ рдЪреБрдХреЗ рд╣реИрдВред

рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрдард┐рдд рд░рд╛рдп рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдХреИрд╢рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рд╣реИред

@lukewagner

рдореИрдВ ASLR рдХрд╛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди, iiuc, рднрд▓реЗ рд╣реА рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд░реВрдврд╝рд┐рд╡рд╛рджреА рдмрд╛рдзреНрдпрддрд╛ рди рд╣реЛ (рдЕрд░реНрдерд╛рдд, рдпрджрд┐ рд╣рдордиреЗ рдЖрдкрдХреЛ mmap рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рддрдХ рдЖрд╡рдВрдЯрди рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрд░реНрдиреЗрд▓ рдиреЗ рдЕрдкрдиреЗ рдирдВрдмрд░-рдСрдл-рдПрдбреНрд░реЗрд╕-рд░реЗрдВрдЬ рдЕрдзрд┐рдХрддрдо рдХреЛ рдорд╛рд░рд╛ рд╣реИ) , рд╕рдВрдкреВрд░реНрдг 47-рдмрд┐рдЯ рдПрдбреНрд░реЗрд╕реЗрдмрд▓ рд╕реНрдкреЗрд╕ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЕрдВрд╢ рд╣реА рдЦрдкрдд рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕ 47-рдмрд┐рдЯ рд╕реНрдкреЗрд╕ рдкрд░ рдХреЛрдб рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдЕрддреНрдпрдзрд┐рдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмрдирд╛ рд░рд╣реЗрдЧрд╛ред IIUC, ASLR рдХреЛрдб рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдпрд╛ рддреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдирд╣реАрдВ рд╣реИ; рдпрд╣ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдирд╛ рдХрдард┐рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рдХреБрдЫ рднреА рдХрд╣рд╛рдВ рд╣реЛрдЧрд╛ред

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

рдЦреИрд░, рдЪреВрдВрдХрд┐ рдпрд╣ asm.js рджрд┐рдиреЛрдВ рд╕реЗ рд╣реИ, рдХреЗрд╡рд▓ 1000ред рддрдм рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрди рдмрд╕ рдлреЗрдВрдХрддрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ рдЯрдХреНрдХрд░ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдХрдИ рд╕реБрдкрд░-рдореЙрдбреНрдпреВрд▓рд░рд╛рдЗрдЬреНрдб рдРрдкреНрд╕ (рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реЙрд╢ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде) рдПрдХ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рд╣рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрдореЛрд░реА рд╕рд╛рджреЗ рдкреБрд░рд╛рдиреЗ ArrayBuffers рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рдЙрди рдРрдкреНрд╕ рдореЗрдВ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╣рдЬрд╛рд░реЛрдВ рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

1000 рдПрдХ рд╕рдордЭрджрд╛рд░ рд╕реАрдорд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рд╕реБрд░рдХреНрд╖рд╛ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдкреВрдЫреВрдВрдЧрд╛ред

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

рд╕рд╣реАред рдореИрдВ рдХреБрдЫ рддрд░реАрдХреЗ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдкреАрдЖрдИ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдШрдЯрд┐рдпрд╛ рд▓реЗрдХрд┐рди рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдПрдкреАрдЖрдИ eval рдХреЛ рдЕрдзрд┐рднрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

  1. рдЗрдВрд╕реНрдЯреЗрдВрд╕рдкреНрд░реЛрдорд┐рд╕ = eval (рдмрд╛рдЗрдЯрдХреЛрдб, рдЗрдВрдкреЛрд░реНрдЯрдСрдмреНрдЬ)
  2. рдЗрдВрд╕реНрдЯреЗрдВрд╕рдкреНрд░реЛрдорд┐рд╕ = eval (рдореЙрдбреНрдпреВрд▓, рдЗрдВрдкреЛрд░реНрдЯрдСрдмреНрдЬ)

рдФрд░ рдлрд┐рд░ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдореЗрдВ рдЧреЗрдЯрдЯрд░ рд╣реЛрддрд╛ рд╣реИ:

рдореЙрдбреНрдпреВрд▓ = рдЙрджрд╛рд╣рд░рдгред рдореЙрдбреНрдпреВрд▓

рдЬрд╣рд╛рдВ рдореЙрдбреНрдпреВрд▓ рд╕рдВрд░рдЪрдирд╛ рдХреНрд▓реЛрди рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред

рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИ?

рдирдпрд╛ рд╡рд┐рдЪрд╛рд░: рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдирдП рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╛ рдПрдХ рдПрд╕рд┐рдВрдХ рд╕рдВрд╕реНрдХрд░рдг рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ WebAssembly.instantiate рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ WebAssembly.compile рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ, рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рдХреЛ async рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдореИрдВ рд╡реИрд╕реЗ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдкреИрдЪрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрдиреЗ рдкрд░ рддрддреНрдХрд╛рд▓рддрд╛ рдореЗрдВ рдХреБрдЫ рдПрдордПрд╕ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдо рдХрд▓реНрдкрдирд╛ рдореЗрдВ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЗрдВрдЬрди рдпрд╛ рддреЛ рд╕рдВрдХрд▓рди рдпрд╛ рддрддреНрдХрд╛рд▓ рдореЗрдВ рдорд╣рдВрдЧрд╛ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдпрд╛ рди рд╣реА, рдЕрдЧрд░ рдХреЛрдИ рдЗрдВрдЬрди рдЖрд▓рд╕реА рд╕рддреНрдпрд╛рдкрди/рд╕рдВрдХрд▓рди рдХрд░рддрд╛ рд╣реИ!)

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

IDB рднрд╛рдЧ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдХрд╛рдо рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрджрд░реНрд╢, рдкреНрд░рджрд░реНрд╢рди-рд╡рд╛рд░ рдХреЗ рдХрд╛рдлреА рдХрд░реАрдм рд▓рдЧрддрд╛ рд╣реИред рдбрдмреНрд▓реНрдпреВрдбреАрд╡рд╛рдИрдЯреА?

рджрд┐рд▓рдЪрд╕реНрдкред рдКрдкрд░ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖:

рдкреНрд░реЛ: рдЖрдкрдХрд╛ рдЕрдореВрд░реНрдд рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИ рдЬреЛ рдЕрд╡рдзрд╛рд░рдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЕрдм рд╣рдо рдЬреЛ рдХрд╣рддреЗ рд╣реИрдВ рдЙрд╕рдХреЗ рд╕рдорд╛рди рд╣реИред
рдХреЙрди: рдЖрдкрдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрдВрдЬрди рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдореЗрд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреА рдЕрдиреБрдорддрд┐ рдХреЗ рдмреАрдЪ рдЙрддрдирд╛ рддрд╛рд▓рдореЗрд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдРрд╕реЗ рддреАрди рдХреНрд╖реЗрддреНрд░ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдкрдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдореЗрд░реЗ рдЬрд┐рддрдирд╛ рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ:

  1. рдорд╣рдВрдЧрд╛ рдХрд╛рдо рджреЛ рдЬрдЧрд╣реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЗ рдорд╣рдВрдЧреЗ рд╣реЛрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреА рд╣реЛрдЧреАред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдВрднрд╡рдд: рдРрд╕реА рд╡реЗрдм рд╕рд╛рдордЧреНрд░реА рд╣реЛрдЧреА рдЬреЛ рдЦрд░рд╛рдм рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреА рд╣реИ рдпрджрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдорд╣рдВрдЧрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЯреНрдпреВрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд╣рд╛рдВ рдпрд╣ рд╕рд╕реНрддрд╛ рд╣реБрдЖ рдерд╛ред рдореЗрд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рдПрдХ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдорд╣рдВрдЧреА рдЪреАрдЬреЗрдВ рд╣реЛрддреА рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмреАрдЪ рдЕрдзрд┐рдХ рдПрдХрд░реВрдкрддрд╛ рдЖрддреА рд╣реИред
  2. рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рдХреЗ рд╕рднреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдХреИрд╢ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЧрд╛рд░рдВрдЯреАрдХреГрдд рдкрде рдирд╣реАрдВ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдереНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡реАрдПрдо рд╣рд░ рдмрд╛рд░ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рди рдХреЗ рд╕рд╛рде рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрднреА рднреА рдХреИрд╢ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдкрд╣рд▓реА рдмрд╛рд░ 4GB рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдпрд╣реА рдХреИрд╢ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рджреВрд╕рд░реА рдмрд╛рд░ 4GB рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рджреЛрдиреЛрдВ рдХреЛ рдХреИрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ (рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рдж рдЗрдВрд╕реНрдЯреЗрдВрд╕.рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХреИрд╢ рдХрд░рддрд╛ рд╣реИ)ред
  3. рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдпрд╛ рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рдореЗрдВ рдЕрд╕рд╛рдорд╛рдиреНрдп рдХреЛрдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдХрднреА-рдХрднреА рдЖрдкрдХреА рдпреЛрдЬрдирд╛ рдореЗрдВ рджреЛрд╣рд░реЗ рд╕рдВрдХрд▓рди рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рдПрдХ рдЪреАрдЬрд╝ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдлрд┐рд░ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рддрд╛рддреНрдХрд╛рд▓рд┐рдХрддрд╛ рдЪрд░рдг рдореЗрдВ рдПрдХ рдФрд░ рдЪреАрдЬрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЗрд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдХрднреА рднреА рджреЛрд╣рд░реЗ рд╕рдВрдХрд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдореЗрд░рд╛ рдмреЗрд╣рддрд░ рдкрд╕рдВрдж рд╣реИред рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдПрдХ рдкреНрд░рдЧрддрд┐ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред

рдпрд╣ рдореБрджреНрджрд╛ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдЦрдВрдбрди рдХрд┐рддрдиреА рдмрд╛рд░ рдЙрдкрд╡рд╛рд╕ рдХрд╛ рдЖрд╡рдВрдЯрди рдХрд░рддрд╛ рд╣реИ
рдореЗрдореЛрд░реА (btw рдЖрдк 4GB + рдЕрдзрд┐рдХрддрдо рд╕рдорд░реНрдерд┐рдд рдСрдлрд╝рд╕реЗрдЯ, рдпрд╛ 8GB) рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдЕрдЧрд░
рд╢рд╛рдпрдж 1% рд╕реЗ рдХрдо рд╣реИ, рддреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдЪрд┐рдд рди рд╣реЛ
рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдУрдУрдПрдо рд╕реНрдерд┐рддрд┐ рд╣реИред

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

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

рдЧреБрд░реБ, 27 рдЕрдХреНрдЯреВрдмрд░, 2016 рдХреЛ 9:03 pm рдкрд░, pizlonator [email protected]
рд▓рд┐рдЦрд╛ рдерд╛:

@mtrofin https://github.com/mtrofin

рдореЙрдбреНрдпреВрд▓ рд▓реЗрдЦрдХ рдХреЛ рдиреНрдпреВрдирддрдо/рдЕрдзрд┐рдХрддрдо рдореЗрдореЛрд░реА рдХреЗ рд░реВрдк рдореЗрдВ 4GB рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ 4GB рднреМрддрд┐рдХ рдирд╣реАрдВ рд╣реИ
рдпрд╛рджред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рд╕рдВрдХрд▓рди рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ (рдХрдо рд╕реЗ рдХрдо async, рд╢рд╛рдпрдж рд╕рд┐рдВрдХ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рдЬреЛ рдПрдХ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ
рдЙрджрд╛рд╣рд░рдг рдХреЗрд╡рд▓ рддреЗрдЬ рд╕реНрдореГрддрд┐ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдбрдмрд▓ рдХрдВрдкрд╛рдЗрд▓ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдереНрд░реЗрдб рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/WebAssembly/design/issues/838#issuecomment -256738329,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/ALnq1F6CYUaq0unla0H6RYivUC8jfxIAks5q4PWIgaJpZM4Kh1gM
.

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

рдпреЗ рд╕рднреА рдмреИрд╕рд╛рдЦреА рд╣реИрдВ рдЬрд┐рдирдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдПрдирдУрдкреА рдпрд╛ рдбрдмрд▓ рд╕рдВрдХрд▓рди, рд▓реЗрдХрд┐рди рдмреИрд╕рд╛рдЦреА рднреА рдХреНрдпреЛрдВ?

@jfbastien рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ PROT_NONE рдореЗрдореЛрд░реА рдХреА рд▓рд╛рдЧрдд рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рд╣реИрдВ; рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЕрд▓рдЧ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореИрдкрд┐рдВрдЧ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рд╕реЗ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдЖрд▓рд╕реА рдЖрдмрд╛рджреА рд╣реЛрддреА рд╣реИред

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

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ WebAssembly.compile рдФрд░ Module рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдирд╣реАрдВ рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдП: рдореИрдВ рдЙрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдЖрдкрдХреЗ рдкрд╛рд╕ "рдХреЛрдб рд╕рд░реНрд╡рд░" рд╣реИ (рдЖрдИрдбреАрдмреА + postMessage рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд░реЙрд╕-рдУрд░рд┐рдЬрд┐рдирд▓ рдХреЛрдб рдХреИрд╢рд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░рдирд╛) new Module рдорд╛рдзреНрдпрдо рд╕реЗ), рд╣рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА new Instance ред

рддреЛ рдЕрдЧрд░ рдЙрд╕ рдкрд░ рд╕рд╣рдорддрд┐ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдпрд╣ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рджреЛ WebAssembly.eval рдУрд╡рд░рд▓реЛрдб рдХрд╛ рдПрдХ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдпреЛрдЧрд╛рддреНрдордХ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИред рд╣рд╛рдВ?

рдПрдХ рдЯреНрд╡реАрдХ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдПрдХ module рдЧреЗрдЯрд░ рдХреЗ рдмрд╛рдж рд╕реЗ рдЗрд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА Instance рдХреЗ рдЬреАрд╡рди рднрд░ рдХреЗ рд▓рд┐рдП рдЪрд╛рд░реЛрдВ рдУрд░ рдХреБрдЫ рдЖрдВрддрд░рд┐рдХ рдбреЗрдЯрд╛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП (рдЕрд░реНрдерд╛рдд, рдмрд╛рдИрдЯрдХреЛрдбред) Instance ; рдЕрднреА рддрддреНрдХрд╛рд▓рддрд╛ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж Module рдХреЛ рдЖрдорддреМрд░ рдкрд░ GCed рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдпрд╛ рддреЛ рдПрдХ рдбреЗрдЯрд╛ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрдЧрд╛ (рдЬрд┐рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рд╢рд╛рдпрдж рднреВрд▓ рдЬрд╛рдПрдВрдЧреЗ), рдпрд╛ рд╢рд╛рдпрдж eval рдХрд╛ рддреАрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬреЛ {instance, module} рдЬреЛрдбрд╝реА рд▓реМрдЯрд╛рддрд╛ рд╣реИ ...

рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореЛрдиреЛрд▓рд┐рдерд┐рдХ рдРрдк рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рдХреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдПрд╕рд┐рдВрдХ рд╡рди рд╕реНрдЯреЗрдк рдПрдкреАрдЖрдИ рд╣реЛрдиреЗ рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдкреИрдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

@Lukewagner рд╕реЗ рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рдирдП рдореЙрдбреНрдпреВрд▓ + рдирдП рдЗрдВрд╕реНрдЯреЗрдВрд╕ рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдП рдЧрдП рд╕рднреА рд╕рд┐рдВрдХ (рдЗрдирд▓рд╛рдЗрди рд╕рдВрдХрд▓рди) рдорд╛рдорд▓реЗ рджреЛрдиреЛрдВ рдЙрдкрдпреЛрдЧреА рд╣реИрдВред
рд╕рд╛рде рд╣реА рд╕рд┐рдВрдХ рдЗрдВрд╕реНрдЯреЗрдВрдЯрд┐рдПрдЯ рдХреЗ рд╕рд╛рде рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдХрдВрдкрд╛рдЗрд▓ (async) рд╕рд░реНрд╡рд░ рднреА рдЙрдкрдпреЛрдЧреА рд▓рдЧрддрд╛ рд╣реИред

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рджреЛ eval рд╡реЗрд░рд┐рдПрдВрдЯ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЗрд╕реЗ рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдирд╛рдо рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ (рд╕реБрд░рдХреНрд╖рд╛) рд▓реЛрдЧреЛрдВ рдХреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЬреЗрдПрд╕ eval (рдЬреЛ рдпрд╣ рдПрдХ рддрд░рд╣ рд╕реЗ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдХреЛрдк рдХреИрдкреНрдЪрд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд╣реАрдВ) рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
WebAssembly.instantiate рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?

рд╣рд╛рд╣, рдЕрдЪреНрдЫрд╛ рдмрд┐рдВрджреБ, eval рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реИ ред +1 рд╕реЗ WebAssembly.instantiate ред

рдПрд╕рд┐рдВрдХ рдЗрдВрд╕реНрдЯреЗрдВрдЯрд┐рдПрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

@mtrofin рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ WebAssembly.instantiate рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдм рддрдХ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдХреЛрдб-рд╕рд╛рдЭрд╛рдХрд░рдг/рд▓реЛрдбрд┐рдВрдЧ рдпреЛрдЬрдирд╛ рди рд╣реЛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЙрдкрдпреЛрдЧ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ Module рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред

@lukewagner рдпрд╣ рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИред

рд╣рд╛рд╣, рдЕрдЪреНрдЫрд╛ рдмрд┐рдВрджреБ, eval рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реИред +1 рд╕реЗ WebAssembly.instantiateред

рдорд╛рдирд╛ред

рддреЛ рдЕрдЧрд░ рдЙрд╕ рдкрд░ рд╕рд╣рдорддрд┐ рд╣реИ, рддреЛ рдпрд╣ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рджреЛ WebAssembly.eval рдЕрдзрд┐рднрд╛рд░реЛрдВ рдХрд╛ рдПрдХ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдпреЛрдЧрд╛рддреНрдордХ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИред рд╣рд╛рдВ?

рдРрд╕рд╛ рд╣реА рд▓рдЧрддрд╛ рд╣реИред

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

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдкреНрд░реЙрдкрд░реНрдЯреА рдмреЗрд╣рддрд░ рд╣реИред рдпрд╛ WebAssembly.instantiate рд╣рдореЗрд╢рд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг, рдореЙрдбреНрдпреВрд▓ рдЬреЛрдбрд╝реА рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рд╣реИ: рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдлрд╛рд╕реНрдЯрдореЗрдореЛрд░реА рдореЙрдбреНрдпреВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рдХреНрд╖реНрдп рдХреЗ рд╕рд╛рде WebAssembly.instantiate ред рдЕрдм рдЖрдк рдореЙрдбреНрдпреВрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рд╕рдВрд░рдЪрдирд╛-рдХреНрд▓реЛрди рдХрд░рддреЗ рд╣реИрдВред рдЕрдм, рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдлрд╛рд╕реНрдЯрдореЗрдореЛрд░реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ Memory -es рдХреЗ рд╕рд╛рде рддрддреНрдХрд╛рд▓ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@pizlonator рд╣рд╛рдБ, рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕рд┐рд░ рдореЗрдВ рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рдмрд╛рдЗрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЬреЛрдбрд╝реА рдХреЛ рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рд╢рд╛рдпрдж рдХрдо рд▓реЛрдЧ рдЧрд▓рддреА рд╕реЗ рдЕрдкреНрд░рдпреБрдХреНрдд Module ред

@mtrofin Recompilation рдЕрднреА рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдмрд╛рдВрдзрдирд╛ Module рдПрдХ рдмрдВрдж instantiate рдХреЙрд▓ рдФрд░ instantiate рдирдИ рдЖрдпрд╛рдд рдХреЗ рд╕рд╛рде; рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдПрдкреАрдЖрдИ рдЬреЛрдбрд╝ рдХрд╛ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рд╣реЛрдЧрд╛ рдЬрдм рдпрд╣ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ (рдпрд╛рдиреА, рдЖрдкрдХреЗ рдкрд╛рд╕ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреА рдпрд╛рджреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╡рд╛рд▓рд╛ 1 рдореЙрдбреНрдпреВрд▓ рд╣реИ)ред

рдпрд╣ рдзрд╛рдЧрд╛ рд▓рдВрдмрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднрд┐рд╕рд░рдг рдХрд░ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди 100% рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЙрд╕ рдХреЛрдб рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рд╣рдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ:

  1. рдПрдХрд▓ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрд╕рд┐рдВрдХреНрд╕ рдЗрдВрд╕реНрдЯреЗрдВрдЯреЗрд╢рдиред
  2. рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рд╢реЗрдпрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрд╕рд┐рдВрдХреНрд╕ рдЗрдВрд╕реНрдЯреЗрдВрдЯреЗрд╢рдиред
  3. рдПрдХрд▓ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЗрдВрд╕реНрдЯреЗрдВрдЯреЗрд╢рди (рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдорд▓реНрдЯреА-рдореЙрдбреНрдпреВрд▓ рдЙрдкрдпреЛрдЧреА рд╣реИ?)
  4. рдЗрди рд╕рднреА рдХреЗ рд▓рд┐рдП рдХреИрд╢рд┐рдВрдЧ (рджреЛрдиреЛрдВ рдХреИрд╢ рдореЗрдВ рдбрд╛рд▓рдирд╛, рд╕рд╛рде рд╣реА рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рддрддреНрдХрд╛рд▓ рдХрд░рдирд╛)ред
  5. рдПрдХ рдПрдХрд▓ .wasm рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЕрджреНрдпрддрди, рдФрд░ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХреИрд╢реНрдб рд▓реЛрдбред

рдФрд░ рдХреБрдЫ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @lukewagner рдХреЗ рдкрд╛рд╕ рдЖрдпрд╛рдд рдХреЗ рд╕рдордЭрддрд╛ ред

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

@jfbastien рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдирд┐рдкреЗрдЯ рдХреЗ рд▓рд┐рдП рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рд╣рдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЙрд╕ рд╡рд┐рд╢реЗрд╖ рдкрде рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдкреНрд░реЗрд░рд┐рдд рдХрд░реЗрдЧрд╛, рдФрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкрд╛рд╕ рдХреМрди рд╕реА рдЬрд╛рдирдХрд╛рд░реА рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

@mtrofin рд░рд╛рдЗрдЯ, Module m , рдЖрдк WebAssembly.instantiate(m) рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдПрд╕рд┐рдВрдХ рд╣реИред рдЖрдк new Instance(m) рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдорд╣рдВрдЧрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ new Module(m) рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред

@jfbastien рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдЬрдм рдЖрдк "async

  1. WebAssembly.instantiate(bytecode, imports)
  2. WebAssembly.instantiate(bytecode, imports) , рдЬрд╣рд╛рдВ imports рдореЗрдВ рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рд╢рд╛рдорд┐рд▓ рд╣реИ
  3. new Instance(new Module(bytecode), imports)
  4. рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЖрдк Module рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЖрдк put рд╡рд╣ IDBObjectStore ред рдмрд╛рдж рдореЗрдВ, рдЖрдк get a Module m рд╡рд╛рдкрд╕ рдФрд░ WebAssembly.instantiate(m, imports) рдХреЙрд▓ рдХрд░реЗрдВред
  5. рдпрд╣рд╛рдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ рд╣реИ: рдЖрдк WebAssembly.instantiate рдмрд╛рдЗрдЯрдХреЛрдб рд╕реЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдФрд░ instantiate рдмрд╛рдХреА Module рд╕реЗ рдЖрдИрдбреАрдмреА рд╕реЗ рдЦреАрдВрдЪреЗ рдЧрдП рд╣реИрдВред

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

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рдЪрд┐рдВрддрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЕрдм рдПрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝реЗрдЧрд╛: рдЕрдзрд┐рдХ рд╡рд┐рдХрд▓реНрдк рдЬреЛ рдЙрди рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рдкрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдмрдирд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкрд╛рд╕ рдЯреНрд░реЗрдбрдСрдлрд╝ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЬрд╛рдирдХрд╛рд░реА рдЙрдкрд▓рдмреНрдз рд╣реИред рдбреЗрд╡рд▓рдкрд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕реЛрдЪрддреЗ рд╣реБрдП, рдХреНрдпрд╛ рдЪрд┐рдВрддрд╛ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рдореВрд╣ рд╣реИ рдЬрд┐рд╕рдХреА рд╡реЗ рдкрд░рд╡рд╛рд╣ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рд╣рдЬ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВрдЧреЗ? рд╣рдордиреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ "рд╕рдЯреАрдХ рд╡рд┐рдлрд▓рддрд╛ рдмрд┐рдВрджреБрдУрдВ рдХреА рдХреАрдордд рдкрд░ рдЕрдиреБрдХреВрд▓рди" рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереА (рдпрд╣ рдлрд┐рд░ рд╕реЗ рдЙрдЫрд╛рд▓ рд╕реАрдорд╛ рдЬрд╛рдВрдЪ рдереА)ред рдХреНрдпрд╛ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк "рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝" рдзреНрд╡рдЬ рд╣реЛрдЧрд╛?

@mtrofin 99% рдЬреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд▓рд┐рдЦреЗрдВрдЧреЗ (рдпрд╛ WebAssembly.instantiate ред рдпрджрд┐ рдЖрдк рдХреБрдЫ рдХреЛрдб рд╕рд╛рдЭрд╛рдХрд░рдг рдкреНрд░рдгрд╛рд▓реА рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдк рдХреЗрд╡рд▓ рд╡рд┐рд╢реЗрд╖ "рдореИрдВ рдПрдХ рдЬреЗрдЖрдИрдЯреА рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ" рдФрд░ WebAssembly.compile рд▓рд┐рдП рд╕рд┐рдВрдХ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рдЖрд░рдВрдн рдХрд░рдирд╛" рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ WebAssembly.instantiate рдХрд╡рд░ рдХрд░реЗрдЧрд╛

@lukewagner рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдКрдкрд░ # 3 рдирдП рдореЙрдбреНрдпреВрд▓() рдореЗрдВ рдЖрдпрд╛рдд рдЬреЛрдбрд╝рд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ WebAssembly.compile рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдФрд░ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдпрджрд┐ рдЖрдк рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рд╕реНрдореГрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреЗрдд рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдк рдмрд╛рдж рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрдпрд╛рддреЛрдВ рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рддреНрд╡рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ, рддреЛ рдЖрдкрдХреЛ рд╣рд┐рдЪрдХреА рдЖ рд╕рдХрддреА рд╣реИред

рддреЛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ (рдмрд╕ рдЗрддрдирд╛ рдореИрдВ рд╕реНрдкрд╖реНрдЯ рд╣реВрдБ):

  • Add WebAssembly.instantiate(bytes, imports) рд░рд┐рдЯрд░реНрди рдХрд╛ рд╡рд╛рджрд╛ {instance:, рдореЙрдбреНрдпреВрд▓:}
  • Add WebAssembly.instantiate(module, imports) рд░рд┐рдЯрд░реНрди рдХрд╛ рд╡рд╛рджрд╛ {instance:, рдореЙрдбреНрдпреВрд▓:}
  • рдирдП рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдмрджрд▓реЗрдВ (рдмрд╛рдЗрдЯреНрд╕ , рдЖрдпрд╛рдд ) рд░рд┐рдЯрд░реНрди рдореЙрдбреНрдпреВрд▓
  • WebAssembly.compile рдореЗрдВ рдмрджрд▓реЗрдВ (рдмрд╛рдЗрдЯреНрд╕ , рдЖрдпрд╛рдд ) рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ

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

рдбрдмреНрд▓реНрдпреВрдбреАрд╡рд╛рдИрдЯреА?

рдУрд╣ рдУрд╣, рдореЗрд░рд╛ рдорддрд▓рдм рдЖрдпрд╛рдд рдХреЛ Instance рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрдирд╛ рдерд╛ред рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ Module рдпрд╛ compile ред [рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡реЗ рдереЗ, рддреЛ рдЖрдк рдмрд╕ instantiate рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ]

рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдПрдВрдб-рдЯреВ-рдПрдВрдб рдПрд╕рд┐рдВрдХ рдХреЗрд╕ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк 4GB рд╣реИрдХ рдореЗрдореЛрд░реА рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди JITed рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реНрдиреЗрд▓ рдпрд╛ рдкреГрд╖реНрдарднреВрдорд┐ рд╕рдВрдХрд▓рд┐рдд рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ (рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдереНрд░реЛ- рджреВрд░ рдЙрджрд╛рд╣рд░рдг)?

+1 рд╕рдВрдХрд▓рди рдФрд░ рддрддреНрдХрд╛рд▓ рдХреА рдПрд╕рд┐рдВрдХ рдЬреЛрдбрд╝реА рдкрд░ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдкрд░ - рд╕рдВрджреЗрд╢ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдбреЗрд╡рд▓рдкрд░ рд╕реЗ рдирд┐рд░реНрдгрдп рд╕рдорд╕реНрдпрд╛ рдХреА рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХреЛ рдЫреБрдкрд╛рддрд╛ рд╣реИред

рд╣рд╛рдБ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рд╣рдо рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣рд╛рдБ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВрдЧреЗ:
рдкрд╣рд▓реА рдмрд╛рд░:
WebAssembly.instantiate(рдмрд╛рдЗрдЯреНрд╕, рдЖрдпрд╛рдд) -> {рдореЙрдбреНрдпреВрд▓, рдЗрдВрд╕реНрдЯреЗрдВрд╕} рдХрд╛ рд╡рд╛рджрд╛ (рдХреИрд╢ рдореЙрдбреНрдпреВрд▓ рд╕реЗ indexeddb)
рджреВрд╕рд░реА рдмрд╛рд░:
WebAssembly.instantiate(рдореЙрдбреНрдпреВрд▓, рдЖрдпрд╛рдд) -> {рдореЙрдбреНрдпреВрд▓, рдЙрджрд╛рд╣рд░рдг} рдХрд╛ рд╡рд╛рджрд╛

рдореБрдЦреНрдп рдкреИрдЯрд░реНрди рд╣реЛрдиреЗ рдкрд░ рдХреЛрдИ рдЖрдкрддреНрддрд┐?

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

рд╡рд┐рдЪрд╛рд░?

@mtrofin (рдареАрдХ рд╣реИ, рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдмрд╕ instantiate ред)

@lukewagner (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @mtrofin рдХрд╛ рдорддрд▓рдм рдпрд╣реА рд╣реИ)

@lukewagner , @flagxor рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо async рд╕рдВрдХрд▓рди API рд░рдЦ рд░рд╣реЗ рд╣реИрдВ, рд╣реИ рдирд╛?

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

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

рдпрджрд┐ рд╣рдо рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рдЦрд░реАрджрддреЗ рд╣реИрдВ, рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдореЗрдореЛрд░реА рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ (рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмреИрдХрд┐рдВрдЧ рдореЗрдореЛрд░реА рдХреЗ рдмрд┐рдирд╛) рдХреЛ рдХрдВрдкрд╛рдЗрд▓ рдПрдкреАрдЖрдИ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рдореВрд▓реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╣рд╛рдВ, рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП Memory рдкрд╛рд╕ рдХрд░рдирд╛ рд╕рдВрднрд╡ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд) рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@mtrofin рд░рд╛рдЗрдЯ, compile рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд▓рдЧрдЗрди рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╡реИрдз рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк _compile_, _and_ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЖрдкрдХреЗ рдкрд╛рд╕ Memory , рд▓реЗрдХрд┐рди рдЖрдк рддрддреНрдХрд╛рд▓ (рдЕрднреА рддрдХ) рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

@pizlonator Btw, рдореЗрд░рд╛ рдорддрд▓рдм рдкрд╣рд▓реЗ рдкреВрдЫрдирд╛ рдерд╛, "рдереНрд░реЛ рдЕрдЧрд░ рдкреНрд░рддрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ 1000 рд╕реЗ рдЕрдзрд┐рдХ 4 instantiate рдПрдкреАрдЖрдИ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдП рдЧрдП рдЕрдиреНрдп рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВред)

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

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

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

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

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

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

@lukewagner рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд░ рд╣рдо 1000 рдореЙрдбреНрдпреВрд▓ рддрдХ рд╕реАрдорд┐рдд рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдЪрд┐рдВрддрд╛ рд╣реЛрдЧреА рдХрд┐ рд╕рд╣рдирд╢реАрд▓рддрд╛ рдХрд╛рдлреА рдмрдбрд╝реА рдирд╣реАрдВ рд╣реИред

  • рдореБрдЭреЗ рдПрдХ рд╣рдорд▓реЗ рдХреЗ рд╕рд╛рдордиреЗ рдЖрдиреЗ рдХреА рдЪрд┐рдВрддрд╛ рд╣реЛрдЧреА рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЫрдд рдХреЛ рдиреАрдЪреЗ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред
  • рдореИрдВ рд╕реНрдЯреИрдХ рдореЗрдВ рдХрд╣реАрдВ рдФрд░ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдпрд╣ рдкреБрдирд░реНрдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдХреНрдпрд╛ рдЫрдд рдХрд╛рдлреА рдХрдо рд╣реИред
  • рдореИрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдЬрд╛рдирдмреВрдЭрдХрд░ рд╣рдЬрд╛рд░реЛрдВ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯрдХреЛрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рд╡реАрдПрдо рдмрдирд╛рддреЗ рд╣реИрдВ, рдереЛрдбрд╝рд╛ рд╕рд╛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдирд╖реНрдЯ рдХрд░ рджреЗрддреЗ рд╣реИрдВред рдпрджрд┐ WebAssembly рдХрд╛ рдЙрдкрдпреЛрдЧ JS рд╕реЗ рдЙрд╕реА рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ JSC рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ 64-рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП GC рдХреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрджрд┐ рдЖрдк 1000 рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВ - рднрд▓реЗ рд╣реА рдкреНрд░рддреНрдпреЗрдХ рдЫреЛрдЯреА рдереА - рддреЛ рдЖрдкрдХреЛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреАрд╕реА рдпрджрд┐ рдЕрдЧрд▓рд╛ рдЖрд╡рдВрдЯрди рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░ рд╕рдлрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡реЗ 1000 рдпрд╛рджреЗрдВ рдЕрдм рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИрдВред рдЧреИрд░-4GB-рд╣реИрдХ рдпрд╛рджреЛрдВ рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рдмрд╛рдж, рдХрд╣рддреЗ рд╣реИрдВ, 10 4GB-рд╣реИрдХ рдпрд╛рджреЗрдВ рд▓рд╛рдЗрд╡ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ GC рдХреЛ рдЕрдкрдиреЗ рдЕрдиреБрдорд╛рдиреЛрдВ рдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд╣реАрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред рдЬрдм рдЖрдк рдЕрдкрдиреЗ рддрддреНрдХрд╛рд▓-> рд░рди-> рдбрд╛рдИ рд▓реВрдк рдореЗрдВ 1001 рд╡рд╛рдВ рдореЙрдбреНрдпреВрд▓ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕реЗ рдЬреАрд╕реА рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝реЗрдЧрд╛ред рдпрд╣ рдЙрди рдкреИрдЯрд░реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд╛рдн рд╣реЛрдЧрд╛ рдЬреЛ рдПрдХ рдЫреЛрдЯреА рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред 1 рдПрдордмреА рд╕реЗ рдХрдо рдХреБрдЫ рднреА, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ 1000 рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд▓реЛрдЧ 64KB рдореЗрдВ рдЙрдкрдпреЛрдЧреА рдЪреАрдЬреЗрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
  • рдореБрдЭреЗ рдЪрд┐рдВрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдиреНрдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдо рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдореИрдВ JSC C API рдФрд░ Objective-C API рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ JS рдХреЛрдб рд╕реЗ WebAssembly API рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рджрд░рд╡рд╛рдЬрд╛ рдЦреБрд▓рд╛ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд╡реЗ рдЧреНрд░рд╛рд╣рдХ рд╢рд╛рдпрдж рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рдВрдЯрд┐рдд 4GB рдореЗрдореЛрд░реА рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕реАрдорд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред рдРрд╕реЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрд╕ рдХреЛрдЯрд╛ рдХреЛ рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рдмрдирд╛рдирд╛ рднреА рдЖрдХрд░реНрд╖рдХ рд╣реИред

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

@pizlonator рдореЗрд▓рд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдФрд░ рдпрд╣ рдПрдХ рдХреНрд▓реАрдирд░/рд╕рд░рд▓ рдПрдкреАрдЖрдИ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдареАрдХ рд╣реИред

рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐ рдореБрдЭреЗ рдЙрди рд╡рд╕реНрддреБрдУрдВ рд╕реЗ рдХреЛрдИ рд╕рд░реЛрдХрд╛рд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ рдЬрд┐рдирдХрд╛ рдЖрдкрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ (рдЗрд╕ рд╕рдордп):

  • рд╕реАрдорд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ; рд╡рд╣ рд╕рд░рд▓ рд╣реИред
  • рдХрд┐рд╕реА рднреА рдЙрдЪрд┐рдд рд╕реАрдорд╛ рдкрд░, рдХреБрд▓ 64-рдмрд┐рдЯ рдкрддрд╛ рд╕реНрдерд╛рди рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЕрдВрд╢ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд╣ рд╣рдорд▓рд╛ рд╡реЗрдХреНрдЯрд░ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реИ; рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдУрдУрдПрдо рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ
  • рд╣рдо рдЖрд░рдХреНрд╖рдг рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдЕрдиреБрд░реВрдк GC рдЕрдиреБрдорд╛рдиреЛрдВ рдХреЛ рдЯрдХреНрдХрд░ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ Memory s рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдордВрдерди рдХрд░рдиреЗ рд╕реЗ GC рдЕрдзрд┐рдХ рдЖрдХреНрд░рд╛рдордХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдзрд┐рдХ рдЬреАрд╕реА рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди рд╣реЛрдЧрд╛ред

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреЗрдПрд╕ рдПрдкреАрдЖрдИ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░/рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╡рд░рдг) рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдХреЛ рд╕рддрд╣ рдкрд░ рд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рддреЗрдЬ рд╕реНрдореГрддрд┐ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЖрдВрддрд░рд┐рдХ рд╕реАрдорд╛рдПрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рд╢реБрдХреНрд░, рдЕрдХреНрдЯреВрдмрд░ 28, 2016 рдХреЛ 2:15 AM рдкрд░, рдЬреЗрдПрдл Bastien [email protected]
рд▓рд┐рдЦрд╛ рдерд╛:

рд╣рд╛рдВ, рдореЗрдореЛрд░реА рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╕рдВрднрд╡ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд) рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рд╕рдВрдХрд▓рди

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

-

рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/WebAssembly/design/issues/838#issuecomment -256850006,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/ALnq1KXrUWaegRZwEhznmT1YcyI33IN9ks5q4T6TgaJpZM4Kh1gM
.

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

рддреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИ? рдПрдХ рдмрд╛рдд http://webassembly.org/getting-started/js-api рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдореИрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рджреВрд╕рд░рд╛ рдмрд╛рдЗрдирд░реАрди рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛ (рдзреНрд╡рдирд┐ рдЕрдЪреНрдЫрд╛ @kripken?) @titzer рдХреИрдирд░реА рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ WebAssembly.instantiate ?

рдФрд░ рдХреБрдЫ?

@lukewagner : рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдмрд╣реБрдд рд▓рдВрдмреА рд╣реИред рдХреНрдпрд╛ рдЖрдк рд╡рд░реНрддрдорд╛рди рд╕рд┐рдВрдХ WebAssembly рд╕реЗ рдмрд╛рдЗрдирд░реАрди рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдПрдкреАрдЖрдИ рдпрд╣ рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдирдП рд╡рд╛рджреЗ-рдЖрдзрд╛рд░рд┐рдд рдПрдкреАрдЖрдИ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рдЬрд░реВрд░реА рд╣реИ - рдХреНрдпрд╛ рд╣рдо рдкреБрд░рд╛рдиреЗ рддрд░реАрдХреЗ рдХреЛ рд╣рдЯрд╛ рд░рд╣реЗ рд╣реИрдВ?

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

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

@kripken рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ: рд╡рд░реНрддрдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛрдИ рдПрд╕рд┐рдВрдХ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ?

рд╣рд╛рдБ ред async рд╕рд╛рдорд╛рди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдорд╕реНрдпрд╛ рджреЗрдЦреЗрдВред

@kripken рдиреЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╡рд╛рджреЗ рд╣реЛрдВрдЧреЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЧреЛрд▓реЗ рдХреЗ рдкрд╛рд╕ рд╡рд╛рджрд╛ рдХрддрд╛рд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ (рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рднреА рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЛ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ); SM рдореЗрдВ рдпрд╣ drainJobQueue() рдФрд░ V8 рдореЗрдВ рдореИрдВрдиреЗ рд╕реБрдирд╛ рд╣реИ рдХрд┐ рдПрдХ %RunMicroTasks() ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдг WebAssembly.instantiate рд╕реБрд╡рд┐рдзрд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрд╕реНрдерд┐рдд рд╣реЛрдиреЗ рдкрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

рдЙрди рджреЛрдиреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо HTML рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддреЗ рд╕рдордп Promise API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рддрдм рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╢реЗрд▓ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рд▓реЛрдбрд┐рдВрдЧ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд░рдЦрддреЗ рд╣реИрдВ), рд▓реЗрдХрд┐рди JS рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддреЗ рд╕рдордп рдирд╣реАрдВред рд╡рд╣рд╛рдВ рд╣рдо рдХреЗрд╡рд▓ рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдиреЛрдб рдореЗрдВ рдРрд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ рдЬреЛ WebAssembly рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╡рд╛рджрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдиреЛрдб рд▓реЛрдЧ рдЗрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рддреЗ рд╣реИрдВ?

рдореИрдВ рд╕реНрдЯреНрд░реЗрдЯрд▓рд╛рдЗрди JS рдЪреАрдЬрд╝ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ред рдпрджрд┐ рдЖрдк рд╣рдореЗрд╢рд╛ рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рд╡рд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ (рдХреЛрдб рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╡рд╛рджреЗ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)?

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

рд╕реНрдЯреНрд░реЗрдЯрд▓рд╛рдЗрди рдЗрд╢реНрдпреВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: emcc JS рдХреЛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд░рдирдЯрд╛рдЗрдо рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдореЗрдВ рдХреБрдЫ JS рдЗрд╕рдХреЗ рдареАрдХ рдмрд╛рдж рдЙрд╕ рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рдореЗрдВ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП ccall рдХрд╛ рдЙрдкрдпреЛрдЧ

WebAssembly рдХреЗ рд╕рд╛рде IMO рдиреЛрдб рд▓реЗрдХрд┐рди рд╡рд╛рджреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рдмрд╛рдзрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдЙрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ WebAssembly рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдмрд╣реБрдд рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд╣реИред

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

рдХреНрдпрд╛ рдЖрдк рдХреЗрд╡рд▓ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП async API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддреЗ рд╣реИрдВ? рдпрд╣ рдПрдХ рд╢реБрд░реБрдЖрдд рд╣реИ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЬрд┐рд╕ рдПрдВрдбрд╕реНрдЯреЗрдЯ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд╡рд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдкрд╣рд▓реЗ рд▓реЛрдб рдкрд░ рднреА рдПрд╕рд┐рдВрдХ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡рд╛рд╕рдо рдХреЗ рд▓рд┐рдП рдкреЙрд▓реАрдлрд┐рд▓ рдиреЛрдб рдкрд░ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рдХреНрдпреЛрдВ рд╣реИ? рдЕрднреА рднреА рдЙрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд▓рдЧрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рд╣реЛ :)

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

рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреА рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рджреВрд░ рдХрд░рддрд╛ рд╣реИ?

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

````

````

doSomething Module.my_func рдХреЛ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП output.js рд╕рд┐рд░реНрдл рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрднреА рддрдХ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рддреЛ рдпрд╣ рдПрдХ рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдмрджрд▓рд╛рд╡ рд╣реЛрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдЕрдм рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ?

рд╡рд╛рд╕рдо рдХреЗ рд▓рд┐рдП рдкреЙрд▓реАрдлрд┐рд▓ рдиреЛрдб рдкрд░ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рдХреНрдпреЛрдВ рд╣реИ? рдЕрднреА рднреА рдЙрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд▓рдЧрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рд╣реЛ :)

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

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

рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреА рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рджреВрд░ рдХрд░рддрд╛ рд╣реИ?

рдареАрдХ рд╣реИ рдпреЗ рдЕрдЪреНрдЫрд╛ рд╣реИ! рдЬрдм рддрдХ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡реЗрдм рдкреЗрдЬ рдкреНрд░реЙрдорд┐рд╕ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИред

[рд╕реНрдирд┐рдк]

рдХреНрдпрд╛ рдпрд╣ рдЕрдм рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ?

рд╣рд╛рдВред рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реЗ рдкреАрдУрд╡реА рд╕реЗ, рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯрди рд╕рд┐рд░реНрдл рдЬреЗрдПрд╕ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╡реНрдпрд╡рд╕рд╛рдп рдореЗрдВ рдирд╣реАрдВ рд╣реИ! рдЖрдкрдХрд╛ рдЙрджрд╛рд╣рд░рдг рдпреЗ рдУрд▓реНрдбрди рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирдИ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЖрдИрдПрдордУ рдХреЗ рд╡рд╛рджреЗ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрдЪрд╛рд╣рд┐рдПред

рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдореИрдВрдиреЗ instantiate рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП webassembly.org/demo рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдФрд░ рдпрд╣ рдереЛрдбрд╝рд╛ рдореБрд╢реНрдХрд┐рд▓ рдмреА/рд╕реА рд╡рд░реНрддрдорд╛рди рд╕рд┐рдВрдХреНрд░реЛрдирд╕ new Instance рдПрдХ рдРрд╕реЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкрд░рд┐рдгрд╛рдо рдЪрд╛рд╣рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдо рдмрд╛рдЗрдирд░реАрди рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ instantiate рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдПрдВрдЧреНрд░реАрдмреЙрдЯреНрд╕ рдбреЗрдореЛ рдХреЛ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

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

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

WebAssembly.instantiate API рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рд┐рдд рдХрдорд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рдирд╛ рдЙрдЪрд┐рдд рд╣реИред

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

рдореИрдВрдиреЗ рдЕрднреА рдЗрд╕ рд▓рдВрдмреЗ рдореБрджреНрджреЗ рдХреЛ рд╕реНрд╡рдпрдВ рд╕реНрдХрд┐рдо рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдЕрднреА рддрдХ рдбрд╛рдЙрдирд╕рд╛рдЗрдбреНрд╕ рдкрд░ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рднреА рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ :)

@kripken рд╡рд░реНрддрдорд╛рди рдХреЛрдб рдХреЗ рд╕рд╛рде рдЪреБрдиреМрддреА рдпрд╣ рд╣реИ рдХрд┐ рдмрд╛рдЗрдирд░реАрди/рдПрдорд╕реНрдХреНрд░рд┐рдкреНрдЯрди рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдЖрдпрд╛рдд рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ ( instantiate рд▓рд┐рдП рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ) рдЙрд╕реА рд╕рдордп рдЬрдм рдирд┐рд░реНрдпрд╛рдд рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдпрд╛рдд рдХреЛ "рдЕрдк рдлреНрд░рдВрдЯ" рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдПрд╕рд┐рдВрдХ рдПрдХреНрд╕рдПрдЪрдЖрд░ рдХреА рдкреВрдВрдЫ рдХреЗ рд▓рд┐рдП WebAssembly.instantiate рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рдлреА рдЫреЛрдЯрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╡рд░реНрддрдорд╛рди рдбреЗрдореЛ рдореЗрдВ рдПрд╕рд┐рдВрдХ compile )ред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХрддрд╛ рдХреА рдУрд░ рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреЛ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ , рдЙрд╕рд╕реЗ рд╣рдорд╛рд░рд╛ рд╡рд░реНрддрдорд╛рди рдПрдВрдЧреНрд░реАрдмреЙрдЯреНрд╕ рд╡рд╛рд╕рдо рдмрд┐рд▓реНрдб рд╕рдмрдСрдкреНрдЯрд┐рдорд▓ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╡реИрд╕реЗ рднреА рддрд╛рдЬрд╝рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдУрд╣, рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ wasm XHR рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдпрд╛рдд рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдпрд╣рд╛рдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдпрд╣ рддрдм рдмрд╣реБрдд рдкреЗрдЪреАрджрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЬреЛ рдХреБрдЫ рдХрд╣рд╛ рд╡рд╣ рдЧрд▓рдд рд╣реИред

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

рдПрдХрддрд╛ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдб emcc рдПрдорд┐рдЯ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рддрд╛рдХрд┐ рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ JS рдЧреНрд▓реВ рдХреЛ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред

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

@kripken XHR рд╕реЗ рдкрд╣рд▓реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдФрд░ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рд╣рдо рдЙрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреА рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЙрд╕ рдирд┐рд░реНрдпрд╛рдд-рдЙрдкрдпреЛрдЧ рдХреЛрдб рдХреЛ рдХреБрдЫ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рддрддреНрдХрд╛рд▓ рд╣рд▓ рд╣реЛрдиреЗ рдкрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рдореНрдо, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрднреА рднреА рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрд╖рдорд╛ рдХрд░реЗрдВ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдПрд╕рд┐рдВрдХрдиреЗрд╕ рдЖрдпрд╛рдд рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдХреНрдпреЛрдВ рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ - рдХреНрдпрд╛ рдЖрдпрд╛рдд рдХреЛ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рд▓рд╛рдн рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?) рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрд┐рди рдореБрджреНрджреЛрдВ рдХрд╛ рдореИрдВрдиреЗ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рд╡реЗ рдЕрднреА рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдпрд╣ XHR рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рднреА рд╣реЛ - рдпрд╛рдиреА, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдм рдПрдХ рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рдЖрдпрд╛рдд рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИ рдФрд░ рдирд┐рд░реНрдпрд╛рдд рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИред рдЗрд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЯреНрд░реЗрдбрдСрдлрд╝ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдордп рд╣реЛрдиреЗ рдкрд░ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдорд╛рдкрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

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

instantiate рдХрд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ WebAssembly.instantiate(bytes, importObj) , рдЗрд╕рд▓рд┐рдП рдПрд╕рд┐рдВрдХреНрд╕ рдХрдВрдкрд╛рдЗрд▓+рдЗрдВрд╕реНрдЯреЗрдВрдЯ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ importObj ред

рдСрдлрд╝рд▓рд╛рдЗрди рдмрд╛рдд рдХрд░рддреЗ рд╣реБрдП,

  1. рд╕рдВрдХрд▓рди рдХрд░рддреЗ рд╕рдордп рдореЗрдореЛрд░реА рдкреНрд░рджрд╛рди рдХрд░рдирд╛ред
  2. рд╕рдВрдХрд▓рди рдХрд░рддреЗ рд╕рдордп рд╕рднреА рдЖрдпрд╛рдд рдкреНрд░рджрд╛рди рдХрд░рдирд╛ (рдкрд┐рдЫрд▓реЗ рдХрд╛ рд╕реБрдкрд░рд╕реЗрдЯ)ред
  3. рдпрд╣ рд╕рдм рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХрд░рдирд╛ред

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

рд▓реЗрдХрд┐рди рдХреБрдЫ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ:

  • 1 + 3 рдХреЗ рд▓рд┐рдП instantiate(bytes, Memory) -> Promise рдЬреИрд╕реЗ рдирдП API рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдореЗрдореЛрд░реА рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдЬрд▓реНрджреА рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЬрдмрдХрд┐ рд▓рдЧрднрдЧ рд╕рднреА рдЕрдиреНрдп рдЖрдпрд╛рдд рдЬреЗрдПрд╕ рдлрд╝рдВрдХреНрд╢рди рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдЬрд▓реНрджреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред
  • 2 рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ, 3 рдХреЗ рдмрд┐рдирд╛, рдпрд╛рдиреА new Instance(bytes, imports) ред рдпрд╛рдиреА рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ + рдЗрдВрдкреЛрд░реНрдЯ рдкрд░ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХрдВрдкрд╛рдЗрд▓реЗрд╢рдиред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рд╡рд░реНрддрдорд╛рди рдХреЛрдб рдпрд╣ рдХрд░рддрд╛ рд╣реИ: instance = new WebAssembly.Instance(new WebAssembly.Module(getBinary()), imports) рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдХреЗрд╡рд▓ 1 API рдХреЙрд▓ рдореЗрдВ рдмрджрд▓ рджреЗрдВрдЧреЗред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рд╡рд┐рдХрд▓реНрдк рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрд░реНрде рд╣реИ рдирдП рдПрдкреАрдЖрдИ рдХрд╛ рдПрдХ рд╕рд┐рдВрдХ рд╕рдВрд╕реНрдХрд░рдг рдЬреЛрдбрд╝рдирд╛, рд╣рдорд╛рд░реЗ рдореМрдЬреВрджрд╛ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рдВрдХрд▓рди рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЪреАрдЬреЛрдВ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕рдордорд┐рдд рдмрдирд╛рдирд╛ред рдФрд░ рдореБрдЭреЗ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдореЗрдореЛрд░реА рдХреЛ рдЬрд╛рдирдиреЗ рдХреЗ рдирдП рдЕрдиреБрдХреВрд▓рди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ? (async рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реИ?)

рдореИрдВ рдореЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдЬреЛ рдЖрдпрд╛рдд (рд╕реНрдореГрддрд┐) рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдмрд╛рдзрд╛ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛рдд рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред рдлрд┐рд░ instantiate рд╡рд┐рдзрд┐ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рд╕рдХрддреА рд╣реИ рдпрджрд┐ рдЖрдкреВрд░реНрддрд┐ рдХреА рдЧрдИ рд╕реНрдореГрддрд┐ рдЙрд╕ рдЕрдкреЗрдХреНрд╖рд╛ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА рд╣реИ рдФрд░ рдкреБрди: рд╕рдВрдХрд▓рди рдореЗрдВ рджреЗрд░реА рдирд╣реАрдВ рд╣реЛрдЧреАред

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

рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдХрдИ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЖрд╡рд╢реНрдпрдХ рдерд╛!

@kripken рдЬрдмрдХрд┐ рд╕рд┐рдВрдХ рдПрдкреАрдЖрдИ рд╣реИрдВ, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдЬрд░реВрд░реА рд╣реИ, рд╡реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдкрде рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЕрдиреНрдпрдерд╛ рд╣рдо рдЕрдирд╛рд╡рд╢реНрдпрдХ рдореБрдЦреНрдп-рдереНрд░реЗрдб рдЬрдВрдХ, рдПрдПрд╕рдПрдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рд░рд┐рдЧреНрд░реЗрд╢рди рдкреЗрд╢ рдХрд░реЗрдВрдЧреЗред рдЬреЗрдПрд╕ +

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

рдЖрдЗрдП рдЬрд╝реВрдо рдЖрдЙрдЯ рдХрд░реЗрдВ рдФрд░ рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВред


рдпрд╣рд╛рдВ рдПрдВрдЧреНрд░реАрдмреЙрдЯреНрд╕ рдбреЗрдореЛ рдХреЛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ (asm.js рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ), рдмрд╛рдПрдВ, рдФрд░ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ (V8 рдореЗрдВ WebAssembly рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ), рджрд╛рдПрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рддреБрд▓рдирд╛ рдХреА рдЧрдИ рд╣реИред

comparison

рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рдВрдХрд▓рди рдПрдХ рднрдпрд╛рдирдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рдЧрддрд┐ рд╕рд▓рд╛рдЦреЛрдВ рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рджреГрд╢реНрдп рд╕рдВрдХреЗрдд рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИред

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

рд╣рдореЗрдВ WebAssembly.compile рдФрд░ WebAssembly.instantiate рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдиреЗ рдФрд░ new WebAssembly.Module рдФрд░ new WebAssembly.Instance рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдЖрдЗрдП рдереЛрдбрд╝рд╛ рдЧрд╣рд░рд╛рдИ рд╕реЗ рджреЗрдЦреЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ WebAssembly рдХреЗ рд▓рд┐рдП рджрд╛рдИрдВ рдУрд░ рдкреНрд░рдЧрддрд┐ рдкрдЯреНрдЯреА рдХрд┐рддрдиреА рдЦрд░рд╛рдм рд╣реИред

DevTools рдкреНрд░рджрд░реНрд╢рди рдкреИрдирд▓ рдХреЗ рд╕рд╛рде рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдЯреНрд░реЗрд╕ рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

screen shot 2016-12-28 at 1 26 59 pm

рдореЗрд░реЗ рдореИрдХрдмреБрдХ рдПрдпрд░ рдкрд░ рдХрд┐рд╕реА рднреА рдкреНрд░рдЧрддрд┐ рдкрдЯреНрдЯреА рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдореЗрдВ 30 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВред

рдЙрд╕ рд╕рдордп рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ? рдЬрдм рдореБрдЦреНрдп рдзрд╛рдЧрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ wasm рдореЙрдбреНрдпреВрд▓ рдбрд╛рдЙрдирд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж ~ реиреж рдореЗрдВ рдЬрд╝реВрдо рдХрд░реЗрдВ:

screen shot 2016-12-28 at 2 18 36 pm

рд╕рдВрдХрд▓рди ~ 20s рд▓реЗ рд░рд╣рд╛ рд╣реИ рдФрд░ рддрддреНрдХрд╛рд▓рддрд╛ ~ 2s рд▓реЗ рд░рд╣реА рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреВрдирд┐рдЯреА рд▓реЛрдбрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ WebAssembly.compile рдХреЙрд▓ рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рд╕рдорд░реНрдерд┐рдд рд╣реИ, рддреЛ 20s рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ V8 рдЕрднреА рднреА рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдПрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рдВрдХрд▓рди рдХрд░рддрд╛ рд╣реИред cc @titzer @flagxor рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ V8 рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

2s рдЗрдВрд╕реНрдЯреЗрдВрдЯреЗрд╢рди рдЬрдВрдХ рдПрдХрддрд╛ рд▓реЛрдбрд░ рдХреЛрдб рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реИ new WebAssembly.Instance ред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХрддрд╛ рдХреЛрдб рдФрд░ рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯрди рджреЛрдиреЛрдВ рдореЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпрд╣ _merely_ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкреИрд░ рдореЗрдВ рдЦреБрдж рдХреЛ рдЧреЛрд▓реА рдорд╛рд░рдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рдирд╣реАрдВ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдФрд╕рдд рд╡реЗрдм рдкреЗрдЬ рдореЗрдВ рджрд░реНрдЬрдиреЛрдВ рддреГрддреАрдп рдкрдХреНрд╖ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рдЙрди рд╕рднреА рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рд╢реАрд░реНрд╖-рджрд╕реНрддрд╛рд╡реЗрдЬрд╝-рдЬрдВрдХрд┐рдВрдЧ WebAssembly рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред

(рдпрджрд┐ рдЖрдк рдЯреНрд░реЗрд╕ рдХреЛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдпрд╣рд╛рдВ рдкреВрд░реА рдЯрд╛рдЗрдорд▓рд╛рдЗрди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: https://chromedevtools.github.io/timeline-viewer/?loadTimelineFromURL=https://www.dropbox.com/s/ noqjwql0pq6c1wy/wasm?dl=0)

рдореИрдВ 100% рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдПрд╕рд┐рдВрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ :) рд▓реЗрдХрд┐рди рдореИрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╣реА рдореЗрдореЛрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдСрд░реНрдереЛрдЧреЛрдирд▓ рд╣реИред рдФрд░ рдпрд╣ рдХрд┐ рд╣рдо рддреБрдЪреНрдЫ рд░реВрдк рд╕реЗ async + рдЙрд╕ рдЕрдиреБрдХреВрд▓рди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рд╣рдо рдЙрд╕ рдХреЙрдореНрдмреЛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╛ рддреЛ рдХреБрдЫ рдУрд╡рд░рд╣реЗрдб рдХреА рдХреАрдордд рдкрд░, рдпрд╛ рд╕рдордп рдХреЗ рд▓рд┐рдП рдпрджрд┐ рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдзреНрд╡рдЬ рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд░рдгрдмрджреНрдз рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдвреВрдВрдврддреЗ рд╣реИрдВ .

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

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

@kripken рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк I, @lukewagner рдФрд░ @ s3ththompson рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрд▓рдЧ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдкрд░ рдЖрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдореМрдЬреВрджрд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП asm.js рд╕реЗ рдПрдХ рд╕рд╣рдЬ рд╕рдВрдХреНрд░рдордг рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рдирд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рд╣реИ?

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рд╡реИрдз рдЪрд┐рдВрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдХрдо рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ IMO WebAssembly рдХреЗ рд╕рд╛рде рд╣рдо asm.js рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд▓рд╛ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рдЬрд▓реНрджреА рдЕрдкрдирд╛рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рдЬрд▓рд╛рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЖрдИрдЖрдИрдпреВрд╕реА рдХреЗ рдореМрдЬреВрджрд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛рдлреА рд▓рдЪреАрд▓реЗ рд╣реИрдВ рдФрд░ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рдВрдХрд▓рди рдЪрд╛рд╣рддреЗ рд╣реИрдВ ред

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

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

FWIW, Unity 5.6 WebAssembly.instantiate рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред

рдЬреЛрдирд╛рд╕

28 рджрд┐рд╕рдВрдмрд░ 2016 рдХреЛ рд░рд╛рдд 11:42 рдмрдЬреЗ рд╕реЗрда рдереЙрдореНрдкрд╕рди рдиреЗ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдкрд░ рд▓рд┐рдЦрд╛:

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

рдЖрдЗрдП рдЬрд╝реВрдо рдЖрдЙрдЯ рдХрд░реЗрдВ рдФрд░ рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВред

рдпрд╣рд╛рдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЙрд▓ (asm.js рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ), рд▓реЗрдлреНрдЯ рдФрд░ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЙрд▓реНрд╕ (рд╡рд░реНрддрдорд╛рди WebAssembly рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди) рдХреЗ рд╕рд╛рде рдПрдВрдЧреНрд░реАрдмреЙрдЯреНрд╕ рдбреЗрдореЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рддреБрд▓рдирд╛ рдХреА рдЧрдИ рд╣реИред

рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рдВрдХрд▓рди рдПрдХ рднрдпрд╛рдирдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рдЧрддрд┐ рд╕рд▓рд╛рдЦреЛрдВ рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рджреГрд╢реНрдп рд╕рдВрдХреЗрдд рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИред

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

рд╣рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ WebAssembly.compile рдФрд░ WebAssembly.instance рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдиреЗ рдФрд░ рдирдП WebAssembly.Module рдФрд░ рдирдП WebAssembly.Instance рдХреЛ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЖрдЗрдП рдереЛрдбрд╝рд╛ рдЧрд╣рд░рд╛рдИ рд╕реЗ рджреЗрдЦреЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ WebAssembly рдХреЗ рд▓рд┐рдП рджрд╛рдИрдВ рдУрд░ рдкреНрд░рдЧрддрд┐ рдкрдЯреНрдЯреА рдХрд┐рддрдиреА рдЦрд░рд╛рдм рд╣реИред

DevTools рдкреНрд░рджрд░реНрд╢рди рдкреИрдирд▓ рдХреЗ рд╕рд╛рде рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдЯреНрд░реЗрд╕ рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдореЗрд░реЗ рдореИрдХрдмреБрдХ рдПрдпрд░ рдкрд░ рдХрд┐рд╕реА рднреА рдкреНрд░рдЧрддрд┐ рдкрдЯреНрдЯреА рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдореЗрдВ 30 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВред

рдЙрд╕ рд╕рдордп рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ? рдЬрдм рдореБрдЦреНрдп рдзрд╛рдЧрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ wasm рдореЙрдбреНрдпреВрд▓ рдбрд╛рдЙрдирд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж ~ реиреж рдореЗрдВ рдЬрд╝реВрдо рдХрд░реЗрдВ:

рд╕рдВрдХрд▓рди ~ 20s рд▓реЗ рд░рд╣рд╛ рд╣реИ рдФрд░ рддрддреНрдХрд╛рд▓рддрд╛ ~ 2s рд▓реЗ рд░рд╣реА рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреВрдирд┐рдЯреА рд▓реЛрдбрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ WebAssembly.compile рдХреЛ рдХреЙрд▓ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рд╕рдорд░реНрдерд┐рдд рд╣реИ, рддреЛ 20s рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ V8 рдЕрднреА рднреА рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдПрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХрдВрдкрд╛рдЗрд▓ рдХрд░рддрд╛ рд╣реИред cc @titzer @flagxor рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ V8 рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

2s рдЗрдВрд╕реНрдЯреЗрдВрдЯреЗрд╢рди рдЬрдВрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдирдП WebAssembly.Instance рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдпреВрдирд┐рдЯреА рд▓реЛрдбрд░ рдХреЛрдб рдХреЗ рдХрд╛рд░рдг рд╣реИред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХрддрд╛ рдХреЛрдб рдФрд░ рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯрди рджреЛрдиреЛрдВ рдореЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

(рдпрджрд┐ рдЖрдк рдЯреНрд░реЗрд╕ рдХреЛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдпрд╣рд╛рдВ рдкреВрд░реА рдЯрд╛рдЗрдорд▓рд╛рдЗрди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: https://chromedevtools.github.io/timeline-viewer/?loadTimelineFromURL=https://www.dropbox.com/s/ noqjwql0pq6c1wy/wasm?dl=0)

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ, рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВред

@jfbastien рд╢рд╛рдпрдж рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ "рдирд┐рд╖реНрдХрд░реНрд╖" рд╕реЗ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред рдореИрдВ рдЬреНрдпрд╛рджрд╛рддрд░ рдпрд╣рд╛рдВ рд╕рд┐рд░реНрдл рд╡рд┐рдХрд▓реНрдк рдкреЗрд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореЗрд░рд╛ рдЦреБрдж рдХреЛрдИ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд╣реАрдВ рд╣реИред

рдЕрдЧрд░ рд╣рдо рдЕрднреА рдореЗрдореЛрд░реА-рдПрдЯ-рдХрдВрдкрд╛рдЗрд▓-рдЯрд╛рдЗрдо рдСрдкреНрдЯ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВрдиреЗ рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдП рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдЗрд╕реЗ ASAP рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рд╡рд░реНрддрдорд╛рди рд╕рд┐рдВрдХ рд╕рдВрдХрд▓рди рдХреЛ рдорд╛рдореВрд▓реА рд░реВрдк рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╛ рдЕрдЧрд░ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЕрдм рдПрдХ рдПрд╕рд┐рдВрдХ рддрд░реАрдХреЗ рд╕реЗ рдСрдкреНрдЯ рдХрд░реЗрдВ, рддреЛ рдореИрдВрдиреЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк ("1 + 3", рдпрд╛рдиреА, рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рд╕рднреА рдЖрдпрд╛рдд рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░рдирд╛, рдХреЗрд╡рд▓ рдореЗрдореЛрд░реА) рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЬреЛ рд╣рдореЗрдВ рдЗрд╕реЗ ASAP рднреА рджреЗ рд╕рдХрддрд╛ рд╣реИред

рдпрд╛ рдЕрдЧрд░ рд╣рдо рд╡рд░реНрддрдорд╛рди рдПрдкреАрдЖрдИ ("1 + 3" рдирд╣реАрдВ) рдХреЗ рд╕рд╛рде рдЙрд╕ рдСрдкреНрдЯ рдХреЗ рдПрд╕рд┐рдВрдХ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдЗрд╕реЗ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдХреБрдЫ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдпреЛрдЬрдирд╛ рдмрдирд╛ рджреЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореМрдЬреВрджрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░рдирд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╕рдореБрджрд╛рдп рд╕реЗ рдкрд░рд╛рдорд░реНрд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╕рдВрднрд╡рдд: рдХреБрдЫ рдЪрд┐рдВрддрд╛рдПрдВ рд╣реЛрдВрдЧреА рдФрд░ рд╣рдо рдЗрд╕реЗ рдмрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдРрд╕реЗ рдореЗрдВ рдХрд┐рддрдирд╛ рдкреНрд░рдпрд╛рд╕ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХрд┐рддрдирд╛ рдУрд╡рд░рд╣реЗрдб рд╕рд╣рди рдХрд░рдиреЗ рдХреЛ рддреИрдпрд╛рд░ рд╣реИрдВ - рдЕрдЧрд░ рд╣рдо рдХрд┐рд╕реА рднреА рдУрд╡рд░рд╣реЗрдб рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдмрд╣реБрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛ рд╕рдВрднрд╡рдд: рдЪрд┐рдВрддрд╛рдПрдВ рд╣реЛрдВрдЧреА, рдЬреЛ рдХрд┐ рдореЗрд░рд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдВрддрд░реНрдЬреНрдЮрд╛рди рд╣реИ - рдХреЛрдИ рднреА рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЗрд╕рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧреЗрдЧрд╛, рд╣рдо рд╢рд╛рдпрдж рдПрдХ рдирдП рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЕрдВрддрддрдГ рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрдирд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред

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

рдпрд╛ рдЕрдЧрд░ рд╣рдо рд╡рд░реНрддрдорд╛рди рдПрдкреАрдЖрдИ ("1 + 3" рдирд╣реАрдВ) рдХреЗ рд╕рд╛рде рдЙрд╕ рдСрдкреНрдЯ рдХреЗ рдПрд╕рд┐рдВрдХ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдЗрд╕реЗ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдХреБрдЫ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдпреЛрдЬрдирд╛ рдмрдирд╛ рджреЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореМрдЬреВрджрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░рдирд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╕рдореБрджрд╛рдп рд╕реЗ рдкрд░рд╛рдорд░реНрд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╕рдВрднрд╡рдд: рдХреБрдЫ рдЪрд┐рдВрддрд╛рдПрдВ рд╣реЛрдВрдЧреА рдФрд░ рд╣рдо рдЗрд╕реЗ рдмрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдРрд╕реЗ рдореЗрдВ рдХрд┐рддрдирд╛ рдкреНрд░рдпрд╛рд╕ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХрд┐рддрдирд╛ рдУрд╡рд░рд╣реЗрдб рд╕рд╣рди рдХрд░рдиреЗ рдХреЛ рддреИрдпрд╛рд░ рд╣реИрдВ - рдЕрдЧрд░ рд╣рдо рдХрд┐рд╕реА рднреА рдУрд╡рд░рд╣реЗрдб рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдмрд╣реБрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛ рд╕рдВрднрд╡рдд: рдЪрд┐рдВрддрд╛рдПрдВ рд╣реЛрдВрдЧреА, рдЬреЛ рдХрд┐ рдореЗрд░рд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдВрддрд░реНрдЬреНрдЮрд╛рди рд╣реИ - рдХреЛрдИ рднреА рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЗрд╕рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧреЗрдЧрд╛, рд╣рдо рд╢рд╛рдпрдж рдПрдХ рдирдП рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЕрдВрддрддрдГ рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрдирд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред

рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ:

  1. рдУрд╡рд░рд╣реЗрдбреНрд╕ рдХреНрдпрд╛ рд╣реИрдВ?

    • рдХреНрдпрд╛ рдпреЗ рдУрд╡рд░рд╣реЗрдбреНрд╕ Async + рдореЗрдореЛрд░реА-рдПрдЯ-рдХрдВрдкрд╛рдЗрд▓-рдЯрд╛рдЗрдо рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИрдВ, рдпрд╛ рдХреНрдпрд╛ рд╡реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрд╛рдзрд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдмрд╛рдж рдореЗрдВ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдЖрдИрдПрдордУ рдЕрдЧрд░ рд╡реЗ рдП + рдПрдо рдХреЗ рдирд┐рд╣рд┐рдд рд╣реИрдВ рддреЛ рд╣рдореЗрдВ рдПрдкреАрдЖрдИ рдПрдПрд╕рдПрдкреА рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

    • IIUC рдУрд╡рд░рд╣реЗрдбреНрд╕ рдпрд╛ рддреЛ рдЖрдпрд╛рдд рдпрд╛ рдирд┐рд░реНрдпрд╛рдд рдкрд░ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдЪреАрдЬ рд╣реИ, рдФрд░ A+M рдореЗрдВ рдирд┐рд╣рд┐рдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ?

  2. рд╣рдо рдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ? asm.js рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛ рд╕рдорд╛рди рдХреЛрдб рдХреЛ рднреА wasm рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

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

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

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

рдХрд┐ рдЬреЗрдПрд╕ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рддрдХ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬреЗрдПрд╕ рдЖрдпрд╛рдд рдирд╣реАрдВ рд╣реИ (рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореЗрдореЛрд░реА рд╣реИ!)

рдпрд╣ рдЖрдХрд╕реНрдорд┐рдХ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╕реЗрдВрдХрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП @ s3ththompson рдиреЗ рд╕рдордЭрд╛рдпрд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд╕реНрдореГрддрд┐-рдкрд░-рд╕рдВрдХрд▓рди-рд╕рдордп рдХреЗ рдореБрджреНрджреЗ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рд╡реИрд╕реЗ рднреА рдПрд╕рд┐рдВрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП @jfbastien рд╕реЗ рд╕рд╣рдордд

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рдпрджрд┐ рд╣рдо рдПрдХ рд╕рд░рд▓ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдкрде (рдЬреИрд╕реЗ "рдСрдирд▓реЛрдб" рдИрд╡реЗрдВрдЯ/рд╡рд╛рджрд╛) рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЧрд╛рдЬрд░ рд╕рднреА рдкреНрд░рдореБрдЦ рдкреВрд░реНрдг рдЬреАрдд рд╣реИрдВред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдИ рд╕рдмреВрдд рд╣реИ рдХрд┐ рд╕рдЯреАрдХ asm.js рд╕реНрд░реЛрдд backcompat рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдард┐рди рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ; рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд┐рдкрд░реАрдд рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреЛ рддреИрдпрд╛рд░ рд╣реИрдВ, рд╡рд╣ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╕рдВрдкреВрд░реНрдг рдмрд┐рдВрджреБред

@lukewagner рдСрдлрд╝рд▓рд╛рдЗрди рд╕реЗ рдмрд╛рдд рдХрд░рддреЗ

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

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

@jfbastien : рдЬрд╝рд░реВрд░ред рдореИрдВ рдЕрднреА рддрдХ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдЖрдк рдЖрд░реЗрдЦ рдореЗрдВ рдХреНрдпрд╛ рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рд╛рдБ, рд╢рд╛рдпрдж рдХреЛрдИ рдЕрдиреНрдп рд╕реНрдерд╛рди рдмреЗрд╣рддрд░ рд╣реИред рдПрдорд╕реНрдХреНрд░рд┐рдкреНрдЯрди рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдореБрджреНрджрд╛ рд╣реИ, https://github.com/kripken/emscripten/issues/4711 , рдЕрдЧрд░ рдЖрдк рдЬреЛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕реЗ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдПрдХ рдФрд░ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред

IIUC Emscripten рдЕрдм рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╕рдорд╛рдкрдиред

@s3ththompson рдЯрд┐рдкреНрдкрдгреА рдкрд░ рдЕрдиреБрд╡рд░реНрддреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрдХрд▓рди рдФрд░ рддрд╛рддреНрдХрд╛рд▓рд┐рдХрддрд╛ рдЙрдкрдпреЛрдЧреА рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореИрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдпрд╛ рдерд╛ рдЬрд╣рд╛рдБ рдореИрдВ Node.js ( v7.7.2 ) рдореЗрдВ рдПрдХ WebAssembly рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рд▓реЛрдб рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЕрдЧрд░ рдХреЗрд╡рд▓ рдПрдкреАрдЖрдИ рдЬреЛ рд╡рд╛рджреЗ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореИрдВ рдПрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдирд┐рд░реНрдпрд╛рдд рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВред

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

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

@ s3ththompson рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

mfateev picture mfateev  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dpw picture dpw  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

chicoxyzzy picture chicoxyzzy  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

beriberikix picture beriberikix  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bobOnGitHub picture bobOnGitHub  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ