Oh, I don't mean the wasi:* APIs, which yes, are POSIX-y. I meant the component model which lets different components import and export interfaces with pretty rich types: component-model.bytecodealliance.org
This would be instead of the core module + JSON/utf-8 ABI that you have specified.
component-model.bytecodealliance.org
Introduction - The WebAssembly Component Model