Sorry, I should have said "one call to InstantiateModule" instead of exec. I don't know how go processes work, but surely you can do that in a different context so that the runtime stays alive and you just pass around a way to connect to it. Then on the rust side, you change it to work on lines of input, one line in means one line out.
The current way, your go code starts a new system process to process every message, the way I'm suggesting it'll only start one for the whole run.