exception-handling icon indicating copy to clipboard operation
exception-handling copied to clipboard

questions on tag identity

Open yamt opened this issue 1 year ago • 3 comments

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:

  • is my understanding correct?
  • i don't think wast can express the situation. the closest thing would be to write two identical (module). am i right?

yamt avatar Aug 28 '24 05:08 yamt

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

rossberg avatar Aug 28 '24 13:08 rossberg

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.

tlively avatar Aug 28 '24 14:08 tlively

@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.

rossberg avatar Sep 01 '24 14:09 rossberg