.mpy modules can contain MicroPython bytecode and/or native machine code. In this case, WASM is compiled (via C) to native code. So the performance is very good, much better than interpreting either MicroPython bytecode or WASM bytecode.
The conventional way of creating native modules for MicroPython is to write them in C. This work allows to use any language that supports WASM output target.