Open yamt opened 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
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.
some embedder apis have two-step instatantiation. that is,
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: