Design: рд╕рд╢рд░реНрдд рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдХ рдкреЙрдкрд┐рдВрдЧ рдХрд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг

рдХреЛ рдирд┐рд░реНрдорд┐рдд 27 рдорд╛рд░реНрдЪ 2017  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: WebAssembly/design

рдореИрдВ рдПрдХ WebAssembly рд╕рдВрдХрд▓рдХ w/рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдБред рдореИрдВ рдкрд░реАрдХреНрд╖рдг рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ https://github.com/WebAssembly/spec/blob/634f0d9009404f498ef8d8bd510bd6f0941219cc/test/core/br_if.wast#L272 рдЬреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдереЛрдбрд╝рд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реБрдЖ:

(module
    (func
      $type-arg-void-vs-num-nested
      (result i32)

      block i32
        (i32.const 0)
        block
          (i32.const 1)
          (br_if 1)
        end
      end
    )
)

рдореБрдЭреЗ рдЬреЛ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ рд╡рд╣ рд╣реИ:

Error: check failed:
test.wast:10:12
type stack size too small at br_if value. got 0, expected at least 1
          (br_if 1)
           ^^^^^^^

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдпрд╣ br_if рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ рддреЛ рд╕реНрдЯреИрдХ рдЖрдХрд╛рд░ 2 рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╢рд░реНрдд рдХреЗ рд▓рд┐рдП 1 рдкреЙрдк рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдмрд╛рд╣рд░реА рдмреНрд▓реЙрдХ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдЪрд╛ рд╣реБрдЖ рд╣реЛрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ (i32.const 0) рдиреЗрд╕реНрдЯреЗрдб рдмреНрд▓реЙрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧрд┐рд░ рдЬрд╛рдПрдЧрд╛ред рдореБрдЭреЗ рдХреМрди рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ? рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рджред

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

>

рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдХрд╛ рдЕрдкрдирд╛ рдвреЗрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ?

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

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

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

рд╣рд╛рдБ, wabt рдХреА рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдпрд╣рд╛рдБ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реНрдЯреИрдХ рдкрд░ рджреЛ i32 s рд╣реИрдВ, рдлрд┐рд░ рднреА рдСрдкрд░реЗрдЯрд░ рдмреНрд▓реЙрдХ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдкрд╣рд▓реЗ рдХрднреА рдирд╣реАрдВ рдкреЙрдк рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╣реИред

рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдХрд╛ рдЕрдкрдирд╛ рдвреЗрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ? рдореИрдВ рдЕрд░реНрдерд╢рд╛рд╕реНрддреНрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдерди рд╕реЗ рднреНрд░рдорд┐рдд рдерд╛:

рдХрд┐рд╕реА рдмреНрд▓реЙрдХ рдпрд╛ рд▓реВрдк рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдореВрд▓реНрдп рд╕реНрдЯреИрдХ рдкрд░ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИред

рд╢рд╛рдпрдж рдЗрд╕реЗ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП:

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

рдпрд╛ рдореИрдВ рдЧрд▓рдд рд╕рдордЭ рд░рд╣рд╛ рд╣реВрдБ?

рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдХрд╛ рдЕрдкрдирд╛ рдвреЗрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ?

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

рдХрд┐рд╕реА рдмреНрд▓реЙрдХ рдпрд╛ рд▓реВрдк рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдореВрд▓реНрдп рд╕реНрдЯреИрдХ рдкрд░ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИред

рд╢рд╛рдпрдж рдЗрд╕реЗ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП:

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

рдпрд╛ рдореИрдВ рдЧрд▓рдд рд╕рдордЭ рд░рд╣рд╛ рд╣реВрдБ?

рд╣рд╛рдБ, рдпрд╣ рд╢рд╛рдпрдж Semantics.md рдореЗрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдФрдкрдЪрд╛рд░рд┐рдХ рдЧрджреНрдп рдпреБрдХреНрддрд┐ рдкрд░ рднреА рдХрд╛рдо рд╣реИред

>

рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдХрд╛ рдЕрдкрдирд╛ рдвреЗрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ?

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

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

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

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

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

artem-v-shamsutdinov picture artem-v-shamsutdinov  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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

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

badumt55 picture badumt55  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ