IMO when the intended usage is AOT with an external assembler, which is another subprocess, text-based IO is actually the more natural approach.