interface types versioning #139
Description
What will versioning for interface types look like? I recognize this is a can of worms and I'm exploring ways to avoid versioning myself, e.g. serialize complex structures that may have versioning differences similar to graphs in wasi_nn.
Because interface types are affine, this makes the problem perhaps more interesting than first glance.
A common approach to versioning in general is to attach a version field and have helpers manage deprecation or upgrading to a newer model. When linking wasm modules, something will need to recognize the version of a type and only link the latest version (one of many potential resolutions). Other ecosystems may have a package manager (wapm maybe?) that manages dependencies so at link time there is only one resolved version.
Another approach is for the ABI to have a major version attached to the signature, e.g. "myvariant_v2".
I hope all of the above approaches act as a decent straw man for something better :)