I love QBE, but it does have its limitations:
- It handles the ABIs for passing and returning structures in registers, but only with superfluous copies to and from the stack.
- Can't generate debug info for data. This is probably due to lack of assembler support and/or complexity in the DWARF format.
- The line number debug info directives are currently undocumented and don't support inlined functions.
But it's smol, effective, and it doesn't make you deal with phi nodes!
Oh, it _does_ have string interpolation, my bad. Sadly, not by default -- you still have to go back and add an "f" before the string once you've started typing it and then realize that you want an interpolated string. Also, it doesn't always work -- if I define two interpolated string variables in one function, GCC chokes in a way I'm not understanding. And every interpolated string variable consumes 4K of global memory.
Oh, perfect, thanks! I've been using Niri for less than a week, hadn't got to using named workspaces yet, and missed the bit in the docs where it says they can be empty.