Design: call_indirect рдмрдирд╛рдо рдЕрдореВрд░реНрдд

рдХреЛ рдирд┐рд░реНрдорд┐рдд 7 рдордИ 2020  ┬╖  36рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: WebAssembly/design

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

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

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

рдЙрдкрд░реЛрдХреНрдд рджреЛрдиреЛрдВ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, call_indirect рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рдЕрдореВрд░реНрддрди рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЕрдм рддрдХ рдпрд╣ рдХреЛрдИ рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ wasm рдореЗрдВ рдХреЗрд╡рд▓ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░ рдереЗред рдФрд░ рдореВрд▓ рд░реВрдк рд╕реЗ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐, рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░рдХреЗ, call_indirect рд╕рдВрдмрдВрдз рдореЗрдВ рд╕рднреА рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рднреА рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рд╕реНрдердЧрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐, рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЛ рд╣рдЯрд╛рдХрд░, "рдирдпрд╛" рдкреНрд░рдХрд╛рд░ (рдирд╛рдо externref рдореЗрдВ https://github.com/WebAssembly/reference-types/pull/87) рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдПрдХ рд╕реНрдЯреИрдВрдб-рдЗрди рд╣реИ рдПрдХ рдЕрдореВрд░реНрдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдПред рдпрджрд┐ рд▓реЛрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рд╣реА рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд╣рдореЗрдВ call_indirect рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдпрд╛рдд рдХреЗ рдмреАрдЪ рдЙрдкрд░реЛрдХреНрдд рдмрд╛рддрдЪреАрдд рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред

рдЕрдм рдЙрдкрд░реЛрдХреНрдд рдореБрджреНрджреЛрдВ рдХреЛ call_indirect рд╕рд╛рде рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрдИ рд╕рдВрднрд╛рд╡рд┐рдд рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рдЯреНрд░реЗрдбрдСрдлрд╝ рд╣реИрдВ, рдФрд░ рдпрд╣ рдПрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рд╕реНрдерд╛рди рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ рдЬреЛ рдЬрд▓реНрджреА рд╕реЗ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдпрд╣ рд╕реБрдЭрд╛рд╡ externref рд╕рдВрдмрдВрдз рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдЦрд░реАрджрдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрджрд┐ рд╣рдо рдЕрднреА рдХреЗ рд▓рд┐рдП call_indirect рдФрд░ func.ref рдХреЛ рдХреЗрд╡рд▓ рдЯрд╛рдЗрдк-рдЪреЗрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрдм рд╕рдВрдмрдВрдзрд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╣реИ, рддреЛ рд╣рдо рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдХреЙрд▓ рдХреЗ рд╕рднреА рдХреЛрд░-рд╡рд╛рд╕реНрдо рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рдореБрджреНрджреЛрдВ рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдЫреЛрдбрд╝ рджреЗрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдкреНрд░рддрд┐рдмрдВрдз рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реИ, рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдФрд░ рдХреНрдпрд╛ рдпрд╣ externref рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдмрд╛рдзрд╛ рдбрд╛рд▓рддрд╛ рд╣реИ рдЬрд┐рдирдХреА рд▓реЛрдЧ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╡рд┐рдХрд▓реНрдк call_indirect рдФрд░ func.ref рд╡реИрд╕реЗ рд╣реА рдЫреЛрдбрд╝рдирд╛ рд╣реИред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐, рдЬрд┐рд╕ рд╕рдорд╛рдзрд╛рди рдкрд░ рд╣рдо рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, externref рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдпрд╛рдд рдХреА рддрд░рд╣ рддрддреНрдХрд╛рд▓ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░/рдпрд╛ рдпрд╣ рдХрд┐ externref (рд╡рд┐рдбрдВрдмрдирд╛) рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐рд╕реА рднреА рд╕реБрдкрд░рдЯрд╛рдЗрдк рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП anyref рдХрд╛ рдЙрдк-рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рд╣рдо рдЕрдВрддрддрдГ anyref рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ)ред

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

call_indirect рдмрдирд╛рдо рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди, рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ

рдореИрдВ рдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ call_indirect[ti*->to*](func, args) , рдЬрд╣рд╛рдВ [ti*] -> [to*] рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реИ, func рдмрд╕ рдПрдХ funcref рд╣реИ (рдмрд▓реНрдХрд┐ рдПрдХ funcref рддрд╛рд▓рд┐рдХрд╛ рдФрд░ рдПрдХ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛), рдФрд░ args рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП to* рдорд╛рди рд╣реИрдВред рдЗрд╕реА рддрд░рд╣, рдореИрдВ рдЗрдВрдбреЗрдХреНрд╕ $foo рдкрд╛рд╕рд┐рдВрдЧ рддрд░реНрдХ args рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди рдХреА рд╕реАрдзреА рдХреЙрд▓ рдХреЗ рд▓рд┐рдП call($foo, args) рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред

рдЕрдм рдорд╛рди рд▓реАрдЬрд┐рдП $foo рдШреЛрд╖рд┐рдд рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░ ti* рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рдХрд╛рд░ to* рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╣реИред рдЖрдк рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ call_indirect[ti*->to*](ref.func($foo), args) call($foo, args) рдмрд░рд╛рдмрд░ рд╣реИред рджрд░рдЕрд╕рд▓, рдЕрднреА рдРрд╕рд╛ рд╣реА рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрдирд╛рдП рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред

call_indirect рдФрд░ рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ

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

  • tsub tsuper рдХрд╛ рдПрдХ рдЙрдкрдкреНрд░рдХрд╛рд░ рд╣реИ
  • рдореЙрдбреНрдпреВрд▓ рдЙрджрд╛рд╣рд░рдг IA рдПрдХ рдлрд╝рдВрдХреНрд╢рди $fsub рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ [] -> [tsub] рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛
  • рдореЙрдбреНрдпреВрд▓ рдПрдордмреА $fsuper рдкреНрд░рдХрд╛рд░ [] -> [tsuper] рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ
  • рдореЙрдбреНрдпреВрд▓ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдЖрдИрдмреА рдЖрдИрдП рдХреЗ $fsub рд╕рд╛рде $fsuper рд╕рд╛рде рддрддреНрдХрд╛рд▓ рдореЙрдбреНрдпреВрд▓ рдПрдордмреА рд╣реИ (рдЬреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзреНрд╡рдирд┐ рд╣реИ-рднрд▓реЗ рд╣реА рдпрд╣ рдЕрднреА рд╕рдВрднрд╡ рди рд╣реЛ, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╕рдВрднрд╛рд╡рд┐рдд рдЖрдЧрд╛рдореА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ)

рдЕрдм рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдЖрдИрдмреА call_indirect[ -> tsuper](ref.func($fsuper)) рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рджреЛ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ рдЬреЛ рд╕рдмрд╕реЗ рдкреНрд░рд╢рдВрд╕рдиреАрдп рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВ:

  1. рдХреЙрд▓ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдФрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рдВрдЧрдд рд╣реИрдВред
  2. рдХреЙрд▓ рдЯреНрд░реИрдк рд╣реЛ рдЬрд╛рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рджреЛрдиреЛрдВ рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрддреЗ рд╣реИрдВред

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

  1. рдЖрдпрд╛рддрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рднрд╛рд╖рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рдмрдЬрд╛рдп рдЖрдпрд╛рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░реЗрдВ call_indirect ред
  2. рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдФрд░ рдкрд░рд┐рднрд╛рд╖рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рдЙрдк-рдкреНрд░рдХрд╛рд░-рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо-рд░реИрдЦрд┐рдХ-рд╕рдордп рд░рди-рдЯрд╛рдЗрдо рдЬрд╛рдВрдЪ рдХрд░реЗрдВред

рдпрджрд┐ рдЖрдк рддрдХрдиреАрдХ 1 рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ рдХрд┐ рдЬрдм рд╣рдо рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рд╕рдВрджрд░реНрдн (рд╡реИрд░рд┐рдПрдВрдЯ рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде) рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрд╛рдиреА, func.ref($fsub) рдПрдХ ref ([] -> [tsub]) рдФрд░ рдПрдХ ref ([] -> [tsuper]) , рдФрд░ рдлрд┐рд░ рднреА рддрдХрдиреАрдХ 1 call_indirect[ -> super](ref.func($fsub)) рдХреЛ рдлрдБрд╕рд╛рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧреАред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдо 1 рдХреЗ рд▓рд┐рдП рддрдХрдиреАрдХ 2 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рд╕рдВрдмрдВрдзреА рдирд┐рд╣рд┐рддрд╛рд░реНрде рд╣реЛрддреЗ рд╣реИрдВред

рддреЛ рдЪрд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо 2 рдкрд░ рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддрдХрдиреАрдХ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдЖрдИрдмреА рдореЗрдВ call_indirect рдХрд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЖрдИрдП рдореЗрдВ $fsub рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ рдпрд╛ рдирд╣реАрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдкреНрд░рдореБрдЦ рдкрд╣рд▓реВ рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрдИ рдХреЙрд▓реЛрдВ рдХреЛ рдЯреНрд░реИрдк рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдХ рдФрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ IA рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рд░рд┐рд╕рд╛рд╡ рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджреЗрдВ рдФрд░ рдорд╛рди рд▓реЗрдВ рдХрд┐, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрджрд╛рд╣рд░рдг IA рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ $fsub рдХреЛ [] -> [tsub] рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ , рдЙрджрд╛рд╣рд░рдг IA рдХреЗрд╡рд▓ рдЗрд╕реЗ [] -> [tsuper] рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдо 2 рдХреЗ рд▓рд┐рдП рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЙрджрд╛рд╣рд░рдг IB call_indirect[ -> tsub]($fsuper) рдирд┐рд╖реНрдкрд╛рджрд┐рдд (рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг) рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреЙрд▓ рд╕рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧреАред рдЕрд░реНрдерд╛рддреН, рдЖрдИрдмреА call_indirect рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕ рд╕рдВрдХреАрд░реНрдгрддрд╛ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдИрдП рдиреЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдерд╛ред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдИрдмреА рдЖрдИрдП рдХреЗ рдПрдХ рдкрд╣рд▓реВ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ рдЬреЛ рдХрд┐ рдЖрдИрдП рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рджреНрд╡рд╛рд░рд╛ рдЧрд╛рд░рдВрдЯреАрдХреГрдд рдирд╣реАрдВ рд╣реИред рдХрдо рд╕реЗ рдХрдо, рдЖрдИрдмреА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдИрдП рдЬрд╛рдирдмреВрдЭрдХрд░ рдЫреБрдкрд╛ рд░рд╣рд╛ рд╣реЛред

call_indirect рдФрд░ рдЖрдпрд╛рдд рдЯрд╛рдЗрдк рдХрд░реЗрдВ

рдЕрдм рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЛ рдПрдХ рддрд░рдл рд░рдЦ рджреЗрдВ рдФрд░ рдЯрд╛рдЗрдк рдЗрдВрдкреЛрд░реНрдЯ рдкрд░ рд╡рд┐рдЪрд╛рд░

  • рдореЙрдбреНрдпреВрд▓ рдЙрджрд╛рд╣рд░рдг рдЖрдИрд╕реА рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ capability рдФрд░ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ $handle
  • рдореЙрдбреНрдпреВрд▓ рдЙрджрд╛рд╣рд░рдг рдЖрдИрд╕реА рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ рдПрдХ рд╕рдорд╛рд░реЛрд╣ $do_stuff рдХрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ [capability] -> [] рд▓реЗрдХрд┐рди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдпрд╛рдд [$handle] -> []
  • рдореЙрдбреНрдпреВрд▓ рдПрдордбреА рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ $extern рдФрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди $run рдкреНрд░рдХрд╛рд░ [$extern] -> []
  • рдореЙрдбреНрдпреВрд▓ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдЖрдИрдбреА рдореЙрдбреНрдпреВрд▓ рдПрдордбреА рд╣реИ рдЬрд┐рд╕реЗ IA рдХреЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП $handle рд╕рд╛рде $extern рдФрд░ IA рдХреЗ рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд╕рд╛рде $do_stuff рд░реВрдк рдореЗрдВ $run

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

рдЕрдм рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдЖрдИрдбреА e рдкреНрд░рдХрд╛рд░ рдХрд╛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ рд╣реИ $extern рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ call_indirect[$extern -> ](ref.func($run), e) ред рдпрд╣рд╛рдБ рджреЛ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ рдЬреЛ рд╕рдмрд╕реЗ рдкреНрд░рд╢рдВрд╕рдиреАрдп рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВ:

  1. рдХреЙрд▓ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдФрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рдВрдЧрдд рд╣реИрдВред
  2. рдХреЙрд▓ рдЯреНрд░реИрдк рд╣реЛ рдЬрд╛рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рджреЛрдиреЛрдВ рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрддреЗ рд╣реИрдВред

рдкрд░рд┐рдгрд╛рдо 2 рдЖрдпрд╛рддрд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде call_indirect рдХрд╛рдлреА рдмреЗрдХрд╛рд░ рдмрдирд╛ рджреЗрддрд╛ рд╣реИред рддреЛ рдкрд░рд┐рдгрд╛рдо 1 рдХреЗ рд▓рд┐рдП, рдПрд╣рд╕рд╛рд╕ рдЗрдирдкреБрдЯ рдЯрд╛рдЗрдк рдХрд┐ $extern рдирд╣реАрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд┐рд╡реЗрд╢ рдХреЗ рдкреНрд░рдХрд╛рд░ рд╣реИ $do_stuff (рдЬреЛ рдмрдЬрд╛рдп рд╣реИ capability ), рддреЛ рд╣рдо рд╕рдВрднрд╛рд╡рдирд╛ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рдкрд╛рдЯрдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рддрдХрдиреАрдХреЗрдВ:

  1. рдЖрдпрд╛рддрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рднрд╛рд╖рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рдмрдЬрд╛рдп рдЖрдпрд╛рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░реЗрдВ call_indirect ред
  2. рдкрд╣рдЪрд╛рдиреЗрдВ рдХрд┐ рд░рди рдЯрд╛рдЗрдо рдкрд░ рдЯрд╛рдЗрдк $extern рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЖрдИрдбреА capability рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред

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

рдпрд╣ рд╣рдореЗрдВ рддрдХрдиреАрдХ 2 рдХреЗ рд╕рд╛рде рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рд╕рдорд╕реНрдпрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдИрдбреА рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╣реИ рдФрд░ $handle рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ IC рдиреЗ рдЧреБрдкреНрдд рд░рдЦрд╛ рдерд╛ред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдИрдбреА рдХрд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ $handle рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН capability ред рдЖрдИрдбреА рдкрд╣рдЪрд╛рди рд╕рдорд╛рд░реЛрд╣ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ $id_capability рдкреНрд░рдХрд╛рд░ рдХреЗ [capability] -> [capability] ред e рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рди рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП $extern , рдЖрдИрдбреА рддрдм call_indirect[$extern -> capability](ref.func($id_capability), e) рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рддрдХрдиреАрдХ 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдпрд╣ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдХреЙрд▓ рд╕рдлрд▓ рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ $extern рд░рди рдЯрд╛рдЗрдо рдкрд░ capability $extern рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЖрдИрдбреА рдХреЛ рдХрдЪреНрдЪрд╛ capability рдорд┐рд▓реЗрдЧрд╛ рдЬреЛ e рд╡рд╛рдкрд╕ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЗрд╕реА рддрд░рд╣, c рдкреНрд░рдХрд╛рд░ рдХрд╛ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ capability , рдЖрдИрдбреА call_indirect[capability -> $extern](ref.func($id_capability), c) рдХреЛ c рдХреЛ $extern рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖

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

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

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

рджреВрд╕рд░реА рддрд░рдл, рдЖрдкрдиреЗ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ рдХрд┐ рд╕реНрдерд┐рд░ рдЕрдореВрд░реНрдд рддрдВрддреНрд░ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд╕реНрдЯреЗрдмрд▓ Anyref рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

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

  1. рдпрд╣ call_indirect рд╕рдореНрдорд╛рди рдЙрдк-рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рд╣реИ)

рд╣реБрд╣? рдпрд╣ рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рдирд┐рдпрдореЛрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд░рддрд╛ рд╣реИред

  1. рдпрд╣ call_indirect рдХреЛ рдЕрдкрдиреЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИред

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

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

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

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

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

рдЗрд╕ рд╡рд┐рд╕реНрддреГрдд рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд░реЙрд╕! рдореЗрд░рд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╕рд╡рд╛рд▓ рд╣реИ: " call_indirect рдФрд░ рдЯрд╛рдЗрдк рдЗрдореНрдкреЛрд░реНрдЯреНрд╕" рд╕реЗрдХреНрд╢рди рдореЗрдВ рдЖрдк рд▓рд┐рдЦрддреЗ рд╣реИрдВ,

рдпрджрд┐ рдЖрдк рддрдХрдиреАрдХ 1 рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ рдХрд┐ рдЬрдм рд╣рдо рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рд╕рдВрджрд░реНрдн рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

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

рдпрд╣ рдирд╣реАрдВред рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рд╕реЗрдХреНрд╢рди рдореЗрдВ рд╕рднреА рдореБрджреНрджреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдпрд╛рдд рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдпрд╛рдд рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╕рднреА рдореБрджреНрджреЗ рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реЛрддреЗ рд╣реИрдВред рдЬрд┐рд╕ рд╡рд┐рд╢реЗрд╖ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ ref ([] -> [capability]) рдкреНрд░рдХрд╛рд░ рдХрд╛ рдорд╛рди рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ ref ([] -> [$handle]) рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рддрдм рдПрдХ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ funcref рдФрд░ рдкрд░реЛрдХреНрд╖ рд░реВрдк рд╕реЗ рдмреБрд▓рд╛рдпрд╛ред рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡рд┐рдкрд░реАрдд, рдореВрд▓реНрдп рдХрд╛ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди-рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рд▓рд┐рдВрдХ рд╕рдордп рдХреЗ рдмрдЬрд╛рдп рд░рди рдЯрд╛рдЗрдо рдкрд░ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдЖрдпрд╛рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдХреЗ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рдВрдХреНрд╢рди рд╕рдВрджрд░реНрдн рд╕реНрд╡рдпрдВ рдХрднреА рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

module instance IC defines a type capability and exports the type but not its definition as $handle
рдРрд╕реЗ рдХреИрд╕реЗ рдЪрд▓реЗрдЧрд╛? рдХреБрдЫ рдРрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ capability рдФрд░ $handle рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реЛ рддрд╛рдХрд┐ IC рдХреЛ рдкрддрд╛ рдЪрд▓реЗ рдХрд┐ рдЗрд╕рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реИ?
рд╕рд╛рде рд╣реА https://github.com/WebAssembly/proposal-type-imports/blob/master/proposals/type-imports/Overview.md#exports рдкрд░ рдЖрдзрд╛рд░рд┐рдд, рдЖрдпрд╛рддрд┐рдд рдкреНрд░рдХрд╛рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рд░ рд╣реИрдВред рддреЛ рднрд▓реЗ рд╣реА $capability рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рд╕рд╛рд░ рд╣реИред рд╢рд╛рдпрдж рдореИрдВ рдХреБрдЫ рдЧрд▓рдд рд╕рдордЭ рд░рд╣рд╛ рд╣реВрдБред

рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдкреНрд░рд╢реНрди module instance IC exports a function $do_stuff that was defined with type [capability] -> [] but exported with type [$handle] -> [] ред

рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рд╕рдВрдмрдВрдз, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ $capability <: $handle , рддреЛ рд╣рдо export $capability as $handle ред рд▓реЗрдХрд┐рди рдЗрд╕ рдЦрдВрдб рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЙрдк-рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЛ рдЕрд▓рдЧ рд░рдЦрдиреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдПрдХ рддрд░рдл рд░рдЦ рд░рд╣рд╛ рд╣реВрдВ... рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рднреА рд╕реЛрдЪрд╛:
рдпрджрд┐: $capability <: $handle , рддреЛ рд╣рдо export $capability as $handle , рд▓реЗрдХрд┐рди export ([$capability] -> []) as ([$handle] -> []) рдХреЛ "рд╡рд┐рдлрд▓" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ рдореЗрдВ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА рд╣реИрдВред

рдирд┐рд░реНрдпрд╛рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде, рдПрдХ рдореЙрдбреНрдпреВрд▓ рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ type $handle; func $do_stuff_export : [$handle] -> [] , рдФрд░ рдлрд┐рд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рддрддреНрдХрд╛рд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ type $handle := capability; func $do_stuff_export := $do_stuff ред (рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВред) рдЯрд╛рдЗрдк-рдЪреЗрдХрд░ рддрдм рдЬрд╛рдВрдЪрддрд╛ рд╣реИ "рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ $handle рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ capability рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпрд╛ рдирд┐рд░реНрдпрд╛рдд func $do_stuff_export := $do_stuff рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдорд╛рдиреНрдп рд╣реИ?"ред рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рдж рд╕реЗ $do_stuff рд╣реИ [capability] -> [] , рдКрдкрд░ рдмрд┐рд▓реНрдХреБрд▓ рдХреЗ рд╕рд╛рде рдЙрд╕рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд▓рд╛рдЗрдиреЛрдВ $do_stuff_export instantiating рдХреЗ рдмрд╛рдж $handle рдХреЗ рд╕рд╛рде capability , рдЗрд╕рд▓рд┐рдП рдЬрд╛рдБрдЪ рд╕рдлрд▓ рд╣реЛрддреА рд╣реИред (рдпрд╣рд╛рдВ рдХреЛрдИ рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реИред)

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

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ!

рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рд╕реЗрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдкреНрд░рд╢реНрди рд╣реЛрдЧрд╛ (рдЦреЗрдж рд╣реИ рдХрд┐ рдЪрд╛рд░реЛрдВ рдУрд░ рдХреВрджрдиреЗ рдХреЗ рд▓рд┐рдП):

рдореИрдВ рдЙрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдИрдмреА рд╕рдлрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП call_indirect[ -> tsuper](ref.func($fsuper)) рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗ, call_indirect "рдкрд░рд┐рднрд╛рд╖рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рдмрдЬрд╛рдп рдЖрдпрд╛рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░реЗрдВред"

рдФрд░ рдЖрдкрдиреЗ рдЬреЛрдбрд╝рд╛ рдХрд┐ (рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рдХрд╛рд░рдг) рд╣рдореЗрдВ рднреА рдЪрд╛рд╣рд┐рдП

  1. рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдФрд░ рдкрд░рд┐рднрд╛рд╖рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рдЙрдк-рдкреНрд░рдХрд╛рд░-рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо-рд░реИрдЦрд┐рдХ-рд╕рдордп рд░рди-рдЯрд╛рдЗрдо рдЬрд╛рдВрдЪ рдХрд░реЗрдВред

рдХреНрдпрд╛ рдпрд╣ "рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдФрд░ рдЖрдпрд╛рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ " рдХреЗ рдмреАрдЪ рд╕рдВрдЧрддрддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП? рдЪреВрдВрдХрд┐ рд╣рдо рдорд╛рди рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рдЖрдпрд╛рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рддреБрд▓рдирд╛ call_indirect рдХреА рд╣реИред

рдпрджрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдФрд░ рдЖрдпрд╛рдд рдХреЗ рдмреАрдЪ рд╕рдВрдЧрддрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдмрд╛рдж рдореЗрдВ, call_indirect[ -> tsub]($fsuper) рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ рдХрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рди рдЬрд╛рдПрдВред ;)

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

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

рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕реНрдерд╛рдкрд┐рдд рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ _exact_ рдкреНрд░рдХрд╛рд░ рдХреА рдзрд╛рд░рдгрд╛ рдХреЛ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдПрдХ рд╕рдЯреАрдХ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдХреЛрдИ рдЙрдкрдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рд╕реБрдкрд░рдЯрд╛рдЗрдк рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ (exact T) <: T ред

рдЗрд╕рдХреЗ рд╕рд╛рде, рд╣рдореЗрдВ рд╕рдЯреАрдХ рдкреНрд░рдХрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП call_indirect рдкрд░ рд▓рдХреНрд╖реНрдп рдкреНрд░рдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕рдЯреАрдХ рдкреНрд░рдХрд╛рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИред

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

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

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

рдПрдХ рджреЛ рдкрд╣рд▓реВ:

рд╡рд┐рдХрд▓реНрдк call_indirect рдФрд░ func.ref рдХреЛ рд╡реИрд╕реЗ рд╣реА рдЫреЛрдбрд╝рдирд╛ рд╣реИред

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

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

рдХреНрдпрд╛ рдЖрдк рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореБрдЭреЗ рдХрдиреЗрдХреНрд╢рди рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред

рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ рдХрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рди рдЬрд╛рдПрдВред ;)

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

рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕реНрдерд╛рдкрд┐рдд рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рдЯреАрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдзрд╛рд░рдгрд╛ рдХреЛ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдПред

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

WebAssembly рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдЗрд╕рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдордиреЗ рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЛ рд╕реНрдердЧрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ред рдХреЗ рдкреНрд░рдХрд╛рд░ ref.null рд╣реЛрдЧрд╛ exact nullref рд╕рдЯреАрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ред рд▓реЗрдХрд┐рди exact nullref exact anyref рдХрд╛ рдЙрдкрдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдЯреАрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕рдВрднрд╡рддрдГ рдХреЛрдИ рднреА рдорд╛рди exact anyref рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрднрд╡рдд: рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рдХрд╛ рд░рди-рдЯрд╛рдЗрдо рдкреНрд░рдХрд╛рд░ рдмрд┐рд▓реНрдХреБрд▓ anyref ред рдпрд╣ call_indirect рдХреЛ anyref s рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдкрдпреЛрдЧреА рдмрдирд╛ рджреЗрдЧрд╛ред

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

рдХреНрдпрд╛ рдЖрдк рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореБрдЭреЗ рдХрдиреЗрдХреНрд╢рди рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред

рдЖрдк рдПрдХ рд▓рдВрдмреЗ рд╡рд╛рдХреНрдп рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдХрд┐рд╕ рднрд╛рдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рдореБрдЭреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ? рдПрдХ рдЕрдиреБрдорд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк call_indirect рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдпрд╛рдд рдХреЗ рд╕рд╛рде рд╕рдордЧреНрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдпрд╛рдж рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЖрдкрдХрд╛ рд╕рдЯреАрдХ-рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕реБрдЭрд╛рд╡ рдХреЗрд╡рд▓ рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдКрдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ call_indirect рдореЗрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рднреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред

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

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

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

@RossTate :

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

рдХреЛрд╖реНрдардХ рдпрд╣рд╛рдБ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдЙрдирдХреЗ рдорди рдореЗрдВ рдХреНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╣реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИред рдЕрдиреНрдпрдерд╛, "рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкреНрд░рдХрд╛рд░ T & U рд╣рдореЗрд╢рд╛ T рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ T рдПрдХ рд╕рдЯреАрдХ рдкреНрд░рдХрд╛рд░ рд╣реИ" рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реЛрдЧрд╛ (рдпрд╣ рдирд╣реАрдВ рд╣реИ' t рд╡рд┐рдлрд▓, рдХреНрдпреЛрдВрдХрд┐ T & U рдЕрдорд╛рдиреНрдп рдпрд╛ рдиреАрдЪреЗ рд╣реЛрдЧрд╛)ред рдЕрдиреНрдп рдкреНрд░рд╢реНрди рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИрдВ, рдпрд╛рдиреА, рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЙрдиреНрд╣реЗрдВ (рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП) рдХрд╣рд╛рдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдЕрдкрдиреЗ рдХреБрдЫ рдкрддреНрд░реЛрдВ рдореЗрдВ рднреА рд╕рдЯреАрдХ рдкреНрд░рдХрд╛рд░ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдХ рдирд╣реАрдВ рдереЗ?

WebAssembly рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдЗрд╕рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдордиреЗ рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЛ рд╕реНрдердЧрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ред рд╕рдЯреАрдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ref.null рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╕рдЯреАрдХ nullref рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рд╕рдЯреАрдХ рдирд▓рд░реЗрдл рд╕рдЯреАрдХ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдпрд╣рд╛рдВ рдХреЛрдИ рдЕрд╕рд╣рдорддрд┐ рдирд╣реАрдВ рд╣реИред рдЙрдкрдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рд╕рдЯреАрдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╣реИред

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

рдареАрдХ рд╣реИ, рд╕рдВрдпреЛрдЬрди (exact anyref) рдПрдХ рдЙрдкрдпреЛрдЧреА рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ anyref рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдЙрджреНрджреЗрд╢реНрдп рдПрдХ рд╕реБрдкрд░рдЯрд╛рдЗрдк рд╣реЛрдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреНрдпреЛрдВ рд╣реИ?

рдпрд╣ call_indirect рдХреЛ рдХрд┐рд╕реА рднреА рд░реЗрдлрд░реА рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдкрдпреЛрдЧреА рдмрдирд╛ рджреЗрдЧрд╛ред

рдХреНрдпрд╛ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдЕрдм рдЖрдк рд╕реНрддрд░реЛрдВ рдХреЛ рднреНрд░рдорд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рдХрд╛рд░ (exact (func ... -> anyref)) рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИ, рдХрд╣рддреЗ рд╣реИрдВ, (func ... -> (ref $T)) ред рдЕрд░реНрдерд╛рддреН, exact рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдЧреИрд░-рддреБрдЪреНрдЫ рдЙрдкрдкреНрд░рдХрд╛рд░ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╣ рдкреВрд░реА рдмрд╛рдд рд╣реИ!

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк (exact (func ... -> anyref)) рдХреЛ (func ... -> exact anyref) ? рдпреЗ рдЕрд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рдХрд╛рд░ рд╣реИрдВред

рдЖрдкрдХрд╛ рд╕рдЯреАрдХ-рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕реБрдЭрд╛рд╡ рдХреЗрд╡рд▓ рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдКрдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ call_indirect рдореЗрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рднреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред

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

рдореЗрд░реА рд╕рдордЭ рдпрд╣ рд╣реИ рдХрд┐ call_indirect рдХрд╛ рдкреНрд░рд╛рдердорд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗрд╕ рд╕реА/рд╕реА ++ рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╣реИ

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

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

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

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

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, call_ref , рдЬрд┐рд╕рдореЗрдВ рдЯрд╛рдЗрдк рдЪреЗрдХ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред

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

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

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдореМрд▓рд┐рдХ рдореБрджреНрджреЗ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдХреНрдпрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреА рдЧреЛрдкрдиреАрдпрддрд╛ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЖрдпрд╛рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рд▓рдХреНрд╖реНрдп рд╣реИ? рдореИрдВ рдЗрд╕ рд╕реВрддреНрд░ рд╕реЗ рдЗрдХрдЯреНрдард╛ рд╣реЛрддрд╛ рд╣реВрдВ рдХрд┐ @RossTate рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд▓рдХреНрд╖реНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ @rossberg рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рд▓рдХреНрд╖реНрдп рдирд╣реАрдВ рд╣реИред рдЖрдЗрдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рдкреНрд░рд╢реНрди рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВ рдФрд░ рд╕рд╣рдордд рд╣реЛрдВ рддрд╛рдХрд┐ рд╣рдо рд╕рднреА рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХреЗ рдПрдХ рд╣реА рд╕реЗрдЯ рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХреЗрдВред

@RossTate :

рдареАрдХ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рдХреЙрд▓_рдЗрдирдбрд╛рдпрд░реЗрдХреНрдЯ рдФрд░ рдЯрд╛рдЗрдк рдЗрдВрдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдЯреАрдХ рдкреНрд░рдХрд╛рд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

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

рдЖрдкрдХреЗ рд╡рд╛рдХреНрдп рдореЗрдВ рдореБрдЦреНрдп рд╢рдмреНрдж рд╡рд╕реАрдпрдд рд╣реИред рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЧреИрд░-рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде call_indirect рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рд▓реЛрдЧ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред

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

@tlively :

рдХреНрдпрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреА рдЧреЛрдкрдиреАрдпрддрд╛ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЖрдпрд╛рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рд▓рдХреНрд╖реНрдп рд╣реИ? рдореИрдВ рдЗрд╕ рд╕реВрддреНрд░ рд╕реЗ рдЗрдХрдЯреНрдард╛ рд╣реЛрддрд╛ рд╣реВрдВ рдХрд┐ @RossTate рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд▓рдХреНрд╖реНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ @rossberg рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рд▓рдХреНрд╖реНрдп рдирд╣реАрдВ рд╣реИред

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

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

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

@tlively , рд╣рд╛рдБ, рд╕рд╣рдордд рд╣реБрдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрдИ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рдЬреЛ рдореИрдВ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВ #69 рд╕реЗ рд╕рднреА рдирддреАрдЬреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░ рдЪреБрдХрд╛ рд╣реВрдВ, рддрдм рдХрд░реВрдВрдЧрд╛ред ;)

@RossTate , рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдореВрд░реНрдд рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдХрд╛рд╕реНрдЯ рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рдмрдирд╛ рджреЗрдЧрд╛ред рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдореИрдВ рджреВрд╕рд░реЛрдВ рдХреЛ _рдереНрд░реВ_ рдПрдХ рдЕрдореВрд░реНрдд рдкреНрд░рдХрд╛рд░ рджреЗрдЦрдиреЗ рд╕реЗ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдореИрдВ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ (рдпрд╛ рдЦреБрдж рдХреЛ) _to_ рдПрдХ рдЕрдореВрд░реНрдд рдкреНрд░рдХрд╛рд░ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЭреВрдареЗ рджреНрд╡рдВрджреНрд╡ рдХреЛ рдмрдирд╛рдиреЗ рд╕реЗ рдХрд╛рд╕реНрдЯ рдХреЗ рдХреЗрдВрджреНрд░реАрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдЯреВрдЯ рдЬрд╛рдПрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореИрдВ рдПрдХ рдкреЙрд▓рд┐рдореЙрд░реНрдлрд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЕрдореВрд░реНрдд рдкреНрд░рдХрд╛рд░ рдХрд╛ рдорд╛рди рдкрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

@rossberg рдХреНрдпрд╛ рдЖрдк рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдорди рдореЗрдВ рдпрд╣ рдХреЗрдВрджреНрд░реАрдп рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдХреНрдпрд╛ рд╣реИ? рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдореЗрдВ рдореЗрд░рд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЕрдиреБрдорд╛рди рддреБрдЪреНрдЫ рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдорддрд▓рдм рдХреБрдЫ рдФрд░ рд╣реЛред

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

рдареАрдХ рд╣реИ, рдЖрдЗрдП рдмрд╣реБрд░реВрдкреА рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдФрд░ рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдпрд╛рддрд┐рдд рдкреНрд░рдХрд╛рд░ рд╣реИ Handle :

  1. рдЬрд╛рд╡рд╛ рдореЗрдВ рдмрд╣реБрд░реВрдкреА рдХрд╛рд░реНрдп рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╣реБрд░реВрдкреА рдХрд╛рд░реНрдп рд╕рднреА (рдЬрд╛рд╡рд╛ рд╕рдВрджрд░реНрдн) рдорд╛рдиреЛрдВ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рд╡реА-рдЯреЗрдмрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣реИрдВрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЬрд╛рд╡рд╛ рдореЙрдбреНрдпреВрд▓ рд╕рдВрднрд╡рддрдГ рдПрдХ рдЬрд╛рд╡рд╛ рд╡рд░реНрдЧ CHandle рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдЧрд╛ рдЬреЛ рд╕рдВрднрд╡рддрдГ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ Handle рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ (wasm-рд╕реНрддрд░) рд╕рджрд╕реНрдп рд╣реЛрдЧрд╛ рдФрд░ рдПрдХ v-рддрд╛рд▓рд┐рдХрд╛ рд╣реЛрдЧреА рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рд╡рд░реНрдЧ рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░реНрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдЬрдм рд╕рддрд╣-рд╕реНрддрд░ рдХреЗ рдкреЙрд▓реАрдореЙрд░реНрдлрд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ wasm рд╕реНрддрд░ рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореЙрдбреНрдпреВрд▓ рдЙрд╕реА рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╣ рдЕрдиреНрдп рд╡рд░реНрдЧреЛрдВ рдХреЛ рдХрд╛рд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ CHandle ред
  2. OCaml рдореЗрдВ рдмрд╣реБрд░реВрдкреА рдХрд╛рд░реНрдп рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╣реБрд░реВрдкреА рдХрд╛рд░реНрдп рд╕рднреА OCaml рдореВрд▓реНрдпреЛрдВ рд╕реЗ рднреМрддрд┐рдХ рд╕рдорд╛рдирддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпреЛрдВрдХрд┐ wasm OCaml рдХреА рдкреНрд░рдХрд╛рд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддрд░реНрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдЗрд╕рдХреЗ рдмрд╣реБрд░реВрдкреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рд╕реНрдЯ рдХрд╛ рднрд╛рд░реА рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рд╕рдВрд░рдЪрдирд╛ рд╕рдВрднрд╡рддрдГ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдмрдирд╛ рджреЗрдЧреАред рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ, рдПрдХ OCaml рдореЙрдбреНрдпреВрд▓ рдПрдХ рдмреАрдЬреАрдп рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рдХрд╛рд░ THandle рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдЧрд╛ рдЬреЛ рдЗрди рдорд╛рдирджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ Handle рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ (wasm-рд╕реНрддрд░) рд╕рджрд╕реНрдп рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╣реБрд░реВрдкреА рдХрд╛рд░реНрдп рддрдм OCaml рдорд╛рдиреЛрдВ рдХреЛ THandle рд╡реИрд╕реЗ рд╣реА рдбрд╛рд▓ рджреЗрдВрдЧреЗ рдЬреИрд╕реЗ рд╡реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдмреАрдЬреАрдп рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред

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

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

рд╕рд╛рде рд╣реА, рдЕрдм (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ) рдореИрдВ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рд╕рдЯреАрдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдЖрдкрдХрд╛ рдЗрд░рд╛рджрд╛ call_indirect рдФрд░ рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдзреНрдпрд╛рди рджреЗрдиреЗ рд╡рд╛рд▓реА рджреЛ рдкреНрд░рдореБрдЦ рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:

  1. рдпрд╣ call_indirect рд╕рдореНрдорд╛рди рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рд╣реИ)
  2. рдпрд╣ call_indirect рдХреЛ рдЕрдкрдиреЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИред

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

рджреВрд╕рд░реА рддрд░рдл, рдЖрдкрдиреЗ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ рдХрд┐ рд╕реНрдерд┐рд░ рдЕрдореВрд░реНрдд рддрдВрддреНрд░ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд╕реНрдЯреЗрдмрд▓ Anyref рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

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

  1. рдпрд╣ call_indirect рд╕рдореНрдорд╛рди рдЙрдк-рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рд╣реИ)

рд╣реБрд╣? рдпрд╣ рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рдирд┐рдпрдореЛрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд░рддрд╛ рд╣реИред

  1. рдпрд╣ call_indirect рдХреЛ рдЕрдкрдиреЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИред

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

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

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

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

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

рд╕реБрдирд╛ред

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

рдпрд╣рд╛рдВ рдореЗрд░реА рд╕рд▓рд╛рд╣ рдХрдИ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреЗ рдкрд░рд╛рдорд░реНрд╢ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред

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

рдЬрд┐рди рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рд╕реЗ рдореИрдВрдиреЗ рдкрд░рд╛рдорд░реНрд╢ рдХрд┐рдпрд╛ рд╣реИ рдЙрдирдореЗрдВ рдХреБрдЫ рдЙрдХреНрдд рдкрддреНрд░реЛрдВ рдХреЗ рд▓реЗрдЦрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдЕрдм, рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдЙрдирдХреА рд╕рд▓рд╛рд╣ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрд╢реНрд▓реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЕрднреА рдХреБрдЫ рдЙрдХреНрдд рдкрддреНрд░реЛрдВ рдХреЗ рдПрдХ рдЕрдиреНрдп рд▓реЗрдЦрдХ рдХреЛ рдИ-рдореЗрд▓ рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рдХреА рд╣реИред рдореИрдВрдиреЗ рдЬреЛ рдкреВрдЫрд╛ рд╡рд╣ рдпрд╣рд╛рдВ рд╣реИ:

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

рдпреЗ рд░рд╣реА рдЙрдирдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛:

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

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

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

WASI рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдореИрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рджрд╛рд╡реЛрдВ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ред рд╣рдордиреЗ WASI рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛, рдореИрдВ рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреНрд╖рдорддрд╛-рдЖрдзрд╛рд░рд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рдХрдИ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

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

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

рдореБрдЭреЗ рдпрд╣ рднреА рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ exact + newtype рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рджреВрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рд╕рдордп рдЗрд╕ рдХреВрдмрдбрд╝ рдкрд░ рдЦреЗрдд рдХреЛ рджрд╛рдВрд╡ рдкрд░ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рд╣рдо (рд╢реАрдШреНрд░ рд╣реА) рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдЬрд╣рд╛рдЬ рдХрд░рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрдЪрд┐рдд рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдЪрд╛рд╣рд┐рдПред

рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдореБрдЭреЗ рд╕рдВрджрд░реНрдн-рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ externref рдореЗрдВ call_indirect рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдореЗрдВ рдХреЛрдИ рдЦрддрд░рд╛ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред рд╣рд╛рдВ, рдпрджрд┐ рдХреЛрдИ рдореЙрдбреНрдпреВрд▓ externref рдорд╛рди рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ (рдПрдХ рдХреЙрдиреНрд╕ рдЧреНрд▓реЛрдмрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╛ рдЗрд╕реЗ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд╡рд╛рдкрд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ ...), рддреЛ рд╣рдордиреЗ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рдпрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЙрд╕ externref рдХреЛ рдбрд╛рдЙрдирдХрд╛рд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рд▓реЗрдХрд┐рди call_indirect рдПрдХ externref ; рдпрд╣ funcref , рдФрд░ externref funcref-type-equality check wrt i32 рд╕реЗ рдЕрд▓рдЧ рднреВрдорд┐рдХрд╛ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, call_indirect рдореЗрдВ рдЯрд╛рдЗрдк рдЗрдВрдкреЛрд░реНрдЯ, рдЯрд╛рдЗрдк рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдФрд░ рдкреНрд▓реЗ рдкрд░ рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рдЕрднрд╛рд╡ рдореЗрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдПрдХ рдирдП рдбрд┐рдЬрд╝рд╛рдЗрди рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдорд╡реАрдкреА рдореЗрдВ рдкреНрд░рддрд┐рдмрджреНрдз рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред .

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

рдЬрд╝рд░реВрд░ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдХреЛрдИ рдЦрддрд░рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

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

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, externref рдПрдХрдорд╛рддреНрд░ рд╕рд╛рд░ рдкреНрд░рдХрд╛рд░ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдПрдХ WASI-рдЖрдзрд╛рд░рд┐рдд рд╣реЛрд╕реНрдЯ externref рдХреЛ i31ref (рдпрд╛ рдЬреЛ рднреА WASI "рд╣реИрдВрдбрд▓" рд╣реИрдВ) рдХреЗ рд╕рд╛рде рддреБрд░рдВрдд рдЪрд╛рд▓реВ рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдореЗрд░реА рд╕рдордЭ рдпрд╣ рд╣реИ рдХрд┐ WASI рд╣реЛрд╕реНрдЯ-рдирд┐рд░реНрднрд░ рдХреЛрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ WebAssembly рдореЗрдВ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдЗрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ WASI рд╕рд┐рд╕реНрдЯрдо рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдпрд╛рдд рдХреА рддрд░рд╣ рд╣реА externref рдХрд╛ рдЗрд▓рд╛рдЬ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ WASI рдХреЗ рдЕрдореВрд░реНрдд рдирд┐рд░реНрдпрд╛рдд Handle рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рддрддреНрдХрд╛рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ Handle рд╣реИ i31ref , рддреЛ call_indirect рдХреЗ рдЙрдкрд░реЛрдХреНрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдореЙрдбреНрдпреВрд▓ рд╕реАрдорд╛рдУрдВ рдХреЗ рдкрд╛рд░ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓реЛрдЧреЛрдВ рдХреЛ externref рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИрдВрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рддреЛ рдореЗрд░реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ, рдЬреЛ рдЕрдм рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рдореЗрд░реА рдореВрд▓ рдкреЛрд╕реНрдЯ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпрд╛ рд▓реЛрдЧ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ externref рдЕрдиреНрдп рдЕрдореВрд░реНрдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдпрд╛рдд рдХреА рддрд░рд╣ рддрддреНрдХрд╛рд▓ рд╣реЛ?

рддреЛ рдореЗрд░реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ, рдЬреЛ рдЕрдм рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рдореЗрд░реА рдореВрд▓ рдкреЛрд╕реНрдЯ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпрд╛ рд▓реЛрдЧ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ externref рдЕрдиреНрдп рдЕрдореВрд░реНрдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдпрд╛рдд рдХреА рддрд░рд╣ рддрддреНрдХрд╛рд▓ рд╣реЛ?

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

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

рдПрдХ wasm рдореЙрдбреНрдпреВрд▓ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, externref рдЕрд░реНрде рд╣реЛрд╕реНрдЯ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЕрдкрд╛рд░рджрд░реНрд╢реА рдкреНрд░рдХрд╛рд░ рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ externref рдЖрд╕рдкрд╛рд╕ рдХреЗ рд╕рдореНрдореЗрд▓рди рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рдПрдХ рдореЗрдЬрдмрд╛рди рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреА рдкрд░рдВрдкрд░рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ externref рдбреЛрдо рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рд╕реЗ рдЬреБрдбрд╝реЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ externref рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд, рдЬреИрд╕реЗ parentNode : [externref] -> [externref] рдФрд░ childNode : [externref, i32] -> [externref] ред рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╡рд╛рддрд╛рд╡рд░рдг, рдЬреИрд╕реЗ рдХрд┐ рд╕реНрд╡рдпрдВ рд╣реЛрд╕реНрдЯ, рд╡рд╣реА рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реЛрд╕реНрдЯ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ externref рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЙрд╕ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЖрдпрд╛рддрд┐рдд рддрд░реАрдХреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдЬрдмрд╛рди рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ рдФрд░ externref рдореЗрдЬрдмрд╛рди рд╕рдВрджрд░реНрдн рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рдкрд░реНрдпрд╛рд╡рд░рдг рдПрдХ рдФрд░ рдореЙрдбреНрдпреВрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдореЗрдЬрдмрд╛рди рд╕рдВрджрд░реНрднреЛрдВ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдИ рдореЙрдбреНрдпреВрд▓ рдПрдо рдХрд╛ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИ, рдФрд░ рд╡рд╣ рдореЙрдбреНрдпреВрд▓ рдПрдо рдКрдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ parentNode рдФрд░ childNode рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдИ рдореЙрдбреНрдпреВрд▓ рдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдПрдо рдХреА рдкрд╣реБрдВрдЪ рдХреЛ рдбреАрдУрдПрдо рддрдХ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдИ рдХреЛ рдПрдо рдкрд░ рд╕реАрдорд┐рдд рднрд░реЛрд╕рд╛ рд╣реИ рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдИ рдХрд┐рд╕реА рднреА рдмрдЧ рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдПрдо рдХреА рдЬрд╝рд░реВрд░рддреЗрдВ рдЗрди рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред E рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ M рдХреЛ "MonitoredRef" рдХреЗ рд╕рд╛рде M рдХреЗ externref рд░реВрдк рдореЗрдВ рддреБрд░рдВрдд рдЪрд╛рд▓реВ рдХрд░реЗрдВред рдорд╛рди рд▓реЗрдВ рдХрд┐, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, E, M DOM рдиреЛрдб рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ M, DOM рдЯреНрд░реА рд╕реЗ рдКрдкрд░ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред рддрдм E рдХрд╛ MonitoredRef рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ ref (struct externref externref) , рдЬрд╣рд╛рдВ рджреВрд╕рд░рд╛ externref (E рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ) DOM рдиреЛрдб рд╣реИ рдЬрд┐рд╕ рдкрд░ M рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓рд╛ externref рдХрд╛ рдкреВрд░реНрд╡рдЬ рд╣реИ рд╡рд╣ рдиреЛрдб рдХрд┐ рдПрдо рдХреЛ рдЕрддреАрдд рдореЗрдВ рдЪрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред рдИ рддрдм рдПрдо рдХреЗ parentNode рддреБрд░рдВрдд рдЪрд╛рд▓реВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдЧрд▓рддреА рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдпреЗ рджреЛ рд╕рдВрджрд░реНрдн рд╕рдорд╛рди рд╣реИрдВред E рд╕реНрд╡рдпрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ parentNode рдФрд░ childNode рдлрд╝рдВрдХреНрд╢рди рдЖрдпрд╛рдд рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕рд╕реЗ E рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ DOM рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХрд╛ рд░рди-рдЯрд╛рдЗрдо рдореЙрдирд┐рдЯрд░ рдмрди рдЬрд╛рдПрдЧрд╛ред

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

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

рдореБрдЭреЗ рдРрд╕реА рдХрд┐рд╕реА рдпреЛрдЬрдирд╛ рдХреА рдЬрд╛рдирдХрд╛рд░реА рднреА рдирд╣реАрдВ рд╣реИ; рдореИрдВ рдпрд╣ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рд╡рд┐рдХрд▓реНрдк рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдерд╛ред рдпрд╛рдиреА, рдХреНрдпрд╛ externref рдПрдХ "рдЖрджрд┐рдо" рдкреНрд░рдХрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП i32 , рдпрд╛ рдПрдХ "рддрддреНрдХрд╛рд▓" рдкреНрд░рдХрд╛рд░, рдЬреИрд╕реЗ рдЖрдпрд╛рддрд┐рдд рдкреНрд░рдХрд╛рд░?

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

рдЖрд╣, рд╣рд╛рдБ, рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдЕрдВрддрд░ рдмрддрд╛рддрд╛ рд╣реИ: рдореИрдВ @tlively рд╕реЗ рд╕рд╣рдордд externref рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕рд╛рд░ рдирд╣реАрдВ рд╣реИ рдФрд░ "рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде externref рдХреЛ рддреБрд░рдВрдд рдЪрд╛рд▓реВ рдХрд░рдиреЗ" рдХреА рдХреЛрдИ рдзрд╛рд░рдгрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдореИрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдЖрд╢реНрд╡рд╕реНрдд рдорд╣рд╕реВрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред (рдЪреВрдВрдХрд┐ externref рдПрдХ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдШреЛрд╖рд┐рдд рдкреНрд░рдХрд╛рд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдИ рдЗрд╕реЗ рдкреНрд░рддрд┐-рдореЙрдбреНрдпреВрд▓ рдЖрдзрд╛рд░ рдкрд░ рддрддреНрдХрд╛рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реИред)

рдбрд╛рдЙрдирдХрд╛рд╕реНрдЯ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ рддрдереНрдп WASI API рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ/рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рдмреЗрдХрд╛рд░ рдмрдирд╛ рджреЗрддрд╛ рд╣реИ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ WASI рдХреА рдпреЛрдЬрдирд╛ i32 рд╣реИрдВрдбрд▓ рд╕реЗ рд╕реАрдзреЗ рдЯрд╛рдЗрдк рдЗрдВрдкреЛрд░реНрдЯ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХрд░рдиреЗ рдХреА рд░рд╣реА рд╣реИ (рдФрд░ рдореИрдВрдиреЗ /#6 , b/c рд╣рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рдЪрд╛рд╣рд┐рдП)ред

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

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

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

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

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

@tlively ,

FWIW, рдореИрдВрдиреЗ рдХрднреА рднреА WebAssembly рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрджрд░ рд╕реЗ externref рдХреЛ рддрддреНрдХрд╛рд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╕рдордЭрд╛ рд╣реИред

рдареАрдХ рд╣реИ, рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ externref рд╡рд┐рджреЗрд╢реА рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХрд╛ "рдЖрджрд┐рдо" рдкреНрд░рдХрд╛рд░ рд╣реИред рдХрд┐рд╕реА рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреБрдЫ рдФрд░ рдЪрд╛рд╣рд┐рдП: рдХреБрдЫ рдЬреИрд╕реЗ anyref рдпрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЖрдпрд╛рддред

@lukewagner , рдпрджрд┐ рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ, рддреЛ рдореИрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдпрд╛рдд рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рджрд╛рдпрд░реЗ рдХреЛ рдЪреМрдбрд╝рд╛ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдмреЛрд░реНрдб рдкрд░

@RossTate :

рдЬрд┐рди рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рд╕реЗ рдореИрдВрдиреЗ рдкрд░рд╛рдорд░реНрд╢ рдХрд┐рдпрд╛ рд╣реИ рдЙрдирдореЗрдВ рдХреБрдЫ рдЙрдХреНрдд рдкрддреНрд░реЛрдВ рдХреЗ рд▓реЗрдЦрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

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

рдореИрдВрдиреЗ рдЬреЛ рдкреВрдЫрд╛ рд╡рд╣ рдпрд╣рд╛рдВ рд╣реИ:

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

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

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

рдореИрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рджрд╛рд╡реЛрдВ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ред

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

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

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

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

рдХреНрдпрд╛ рдореИрдВ рдХреГрдкрдпрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рддрдЪреАрдд рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИ рдпрджрд┐ _asking_ рд╕рдВрдмрдВрдзрд┐рдд рдЪреИрдВрдкрд┐рдпрди рджреНрд╡рд╛рд░рд╛ рдЙрди рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬреЛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд░реНрдХ рдпрд╛ рднрд╡рд┐рд╖реНрдп рдХреА рдпреЛрдЬрдирд╛рдПрдВ (рдЬреЛ рд╣рдореЗрд╢рд╛ рд╕реНрдкрд╖реНрдЯ рдпрд╛ рд▓рд┐рдЦрд┐рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ), _рдорд╛рди рд▓реЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗред рдПрдХ рдЙрддреНрддрд░ рдФрд░ рдЗрди рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡реНрдпрд╛рдкрдХ рджрд╛рд╡реЗ рдФрд░ рд╕реБрдЭрд╛рд╡ рджреЗрдирд╛?

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

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

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

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

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

WebAssembly/рдкреНрд░рд╕реНрддрд╛рд╡-рдкреНрд░рдХрд╛рд░-рдЖрдпрд╛рдд#4, WebAssembly/рдкреНрд░рд╕реНрддрд╛рд╡-рдкреНрд░рдХрд╛рд░-рдЖрдпрд╛рдд#6, рдФрд░ WebAssembly/рдкреНрд░рд╕реНрддрд╛рд╡-рдкреНрд░рдХрд╛рд░-рдЖрдпрд╛рдд#7 рдкреНрд░рддреНрдпреЗрдХ рдиреЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЗрд╕ рдпреЛрдЬрдирд╛ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ред рдЗрдирдореЗрдВ рд╕реЗ рдЕрдВрддрд┐рдо рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЬреАрд╕реА рдХреЗ рдкрд╛рд╕ рд░рдЦрд╛, рд▓реЗрдХрд┐рди WebAssembly/gc#86 рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди GC рдкреНрд░рд╕реНрддрд╛рд╡ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рдЕрдореВрд░реНрдд рддрдВрддреНрд░ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

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

@RossTate :

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкреНрд░рд╢реНрди рдХреЗ рд▓рд┐рдП @tlively рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдкрд╛рдпрд╛ред рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рдкреНрд░рд╢реНрди рдкрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдлреА рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИред

рд╣рдореНрдо, рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рдкрд░ рдКрдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рджреА

рдирд╣реАрдВред рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЙрдирдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╕рд╣рдорддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдкрд╣рд▓реЗ рдкреБрд╖реНрдЯрд┐ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдзрдиреНрдпрд╡рд╛рдж!

@lukewagner , рдЖрдкрдХреЗ рдХреНрдпрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ?

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

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

рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ред рдлрд┐рд░ рд╣рдо рд╕рднреА рдПрдХ рд╣реА рдкреГрд╖реНрда рдкрд░ рд╣реИрдВ (рдФрд░ рдореБрдЭреЗ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @tlively рд╢рд╛рдорд┐рд▓ рдЯреНрд░реЗрдбрдСрдлрд╝ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдФрд░ рдирд┐рд░реНрдгрдп рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ)ред

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

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

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

рдзрдиреНрдпрд╡рд╛рдж!

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

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

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

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

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

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

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