WebAssembly / exception-handling

Proposal to add exception handling to WebAssembly
https://webassembly.github.io/exception-handling/
Other
163 stars 36 forks source link

questions on tag identity #324

Open yamt opened 3 months ago

yamt commented 3 months ago

some embedder apis have two-step instatantiation. that is,

  1. load (and validate) a module
  2. instantiate the loaded module

some embedder apis allow to instantiate a loaded module multiple times.

consider a module, module-A, which exports a tag.

load the module (loaded-module-A) create two instances from the loaded module: instance-A1 and instance-A2

now another instance imports the tags from both of instance-A1 and instance-A2. my understanding is that these two imported tags should be considered as different tags. (it's how i implemented the tag matching in my runtime: https://github.com/yamt/toywasm/blob/4924e0efe7785b2482131a681928a61ca9916910/lib/type.h#L605-L619)

questions:

rossberg commented 3 months ago

Yes, tag definitions are "generative", i.e., allocated anew with each instantiation of a containing module.

You are right that this is not something .wast can observe right now, which is a bummer. We would need to add a separate instantiate command to support that. That's surely possible, but might be substantial work for the multiple tool chains consuming the .wast format, perhaps too much to be worthwhile. But worth discussing. @tlively

tlively commented 3 months ago

Interesting idea. In Binaryen’s case I think you’re right that this would be complicated to handle, but that’s mostly because of bugs and limitations that are already observable. We’ll work to improve our support over time, so if an instantiate command would be useful, I wouldn’t want to block it.

rossberg commented 2 months ago

@yamt, @tlively, I created a respective PR (against the wasm-3.0 branch). It implements the script extension and adds a test for generativity of instantiation. PTAL.