current commit
260305.1 · Initial support for (thread ...) and (wait ...) in WAST (#8418)
(module $Mem
  (memory (export "shared") 1 1 shared)
)
(register "mem_1")

(thread $T1 (shared (module $Mem))
  (register "mem" $Mem)
  (module
    (memory (import "mem" "shared") 1 1 shared)
    (func (export "run")
      (i32.store (i32.const 0) (i32.const 42))
    )
  )
  (invoke "run")
)

(thread $T2 (shared (module $Mem))
  (register "mem" $Mem)
  (module
    (memory (import "mem" "shared") 1 1 shared)
    (func (export "run") (result i32)
      (i32.load (i32.const 0))
    )
  )
  (assert_return (invoke "run") (either (i32.const 0) (i32.const 42)))
)

(wait $T1)
(wait $T2)


(module (memory (import "mem_1" "shared") 1 1 shared))

(assert_unlinkable
  (module (memory (import "mem" "shared") 1 1 shared))
  "unknown import"
)

(register "mem" $Mem)

(thread $T3
  (assert_unlinkable
    (module (memory (import "mem" "shared") 1 1 shared))
    "unknown import"
  )
)

(wait $T3)