This tweak to the runtime semantics of the Canonical ABI ensures that components can't use the dynamic type checks (performed when lifting a handle from an untyped i32 index into a homogeneous table) to uncover whether different type imports are in fact the same or, in a future state with resource subtyping, to uncover undeclared subtyping relationships between type imports. The problem and solution to this problem were presented way back but then I forgot all about it.
This tweak to the runtime semantics of the Canonical ABI ensures that components can't use the dynamic type checks (performed when lifting a handle from an untyped
i32
index into a homogeneous table) to uncover whether different type imports are in fact the same or, in a future state with resource subtyping, to uncover undeclared subtyping relationships between type imports. The problem and solution to this problem were presented way back but then I forgot all about it.