I really like QBE but I hope they will make it a true library because I don't want to launch a subprocess to compile a program.
IMO when the intended usage is AOT with an external assembler, which is another subprocess, text-based IO is actually the more natural approach.
I'm just converting the call to an external assembler in my compiler rcc to assemble the bytes directly. No need for strings and external files. The cost of the external call is outrageous.