Interface Types and Isolation? #99
Description
Is Interface Types an isolation mechanism, or an interfacing mechanism? @tlively and I were surprised to hear from @fgmccabe that a wasm module using IT should not be able to share its memory with other modules, which led to some discussion and now this issue.
An example of a concrete use case for sharing memory: Imagine a game engine that has some compiled script language code as well (e.g. the engine might be C++ and the script language could be C# or Python). It might be nice to link the compiled game engine and the compiled script code and hook them up using IT. But in this case we'd want to share large amounts of memory between them, for example a script plugin might render the game's UI, or generate audio samples. We would want to use IT to avoid the engine rolling its own string, array, etc. conversions and just use IT there, but we would not want to use it for everything. For large binary data we'd like to just share memory (and are willing to take the risks).
More generally, we would like to allow Interface Types to be used for some interactions between two modules while preserving the ability for those two modules to drop down to the current style of coordination for other interactions.
Thoughts?