It was one of the projects that made me realize what the arcane wizened sages of olden C were capable of - C is not as much a programming language with best practices as a template for one - and many competing ideas and interesting ways of coding have emerged over the ~40 years of C dominance (starting from the emergence of the language, to the early 2000s, around when for various reasons, OOP kinda 'won') - if one abandons all pretense of safety and comfort.
There's this project and MIR - both have the same mad science DNA, QBE being a bit more friendly and well documented, with MIR making faster code - boiling down mostly to the architectural decision that MIR does inlining while QBE does not.
I personally went with QBE for my hobby project because of C-interop, but at least in my tests, I found IR much faster and better codegen than MIR. Neither of MIR or IR are friendly/easy though.
https://github.com/graemeg/blaise
Having Blaise work on Windows, could be interesting... Though of course only in the long tail of already built Delphi apps... that still have source.... that are reasonably written... that don't rely on now unsupported libraries...
Hmmm... Ah yes. These may be some of the reasons people might not do Delphi as much anymore. Still, Delphi was great for me and helped me get a mortgage and things like that.
The Blaise author is progressing his development along nicely using QBE for the compiler. To me, Blaise looks like a team progressing things nicely, but I think it's mostly the original author.
Blaise could be a neat Pascal compiler with a great deal of old cruft cleaned out and is quite quick.
One of the benefits of this new QBE feature of supporting windows could be that this allows a language like Hare to be used for windows too, all the more power to Hare and other programming languages built on top of QBE!
The Linux kernel ABI, while stable, is not simpler than libc and not portable at all. You can build the modern computing environment on mingw.
However, if they chose to target Linux–only to show how low–level Hare is, that's understandable as well —no shade.
To take it to its logical conclusion, they're saying libc will be a package you install on your Hare/Linux system for compatibility with obsolete systems, which to me implies willingness to work on ports to other platforms —you're not going to replace libc otherwise.
int t, x, r, rf, rt, nr;
bits rs;
Ins *i, *i1;
Mem *m;
Ref *ra[4];
I think it deters some users by making it hard to read and understand the relatively subtle code in the 300 line function that follows. (Skill issue, I know)SysV and Win x64 differ enough that the Windows code is mostly unrelated to/detached from the other backends, so it doesn't feel (too) awful for it to have its own idiosyncratic style.
Btw adding some non-standard debugging support to QBE is not impossibly hard even without that. You can inject bogus no-ops per line, force the compiler to keep them, and it will dutifully track all state values throughout the pipeline, and likewise you can track values from variables to SSA assignments, to temp registers to actual registers, its mostly bookkeeping.
QBE – Compiler Back End - https://news.ycombinator.com/item?id=48059633 - May 2026 (28 comments*)
Blaise – A modern self-hosting zero-legacy Object Pascal compiler targeting QBE - https://news.ycombinator.com/item?id=48058644 - May 2026 (55 comments)
Qbecc – QBE based C compiler - https://news.ycombinator.com/item?id=45461195 - Oct 2025 (3 comments)
Let's write a peephole optimizer for QBE's ARM64 back end - https://news.ycombinator.com/item?id=45099348 - Sept 2025 (1 comment)
QBE – Compiler Back End - https://news.ycombinator.com/item?id=40346320 - May 2024 (37 comments)
cproc – Small C11 compiler based on QBE - https://news.ycombinator.com/item?id=32466098 - Aug 2022 (1 comment)
QBE 1.0 - https://news.ycombinator.com/item?id=31846433 - June 2022 (3 comments)
I wrote a peephole optimizer for QBE - https://news.ycombinator.com/item?id=30864448 - March 2022 (5 comments)
Cproc C Compiler - https://news.ycombinator.com/item?id=28242024 - Aug 2021 (45 comments)
Cproc – a C11 compiler using QBE as a back end - https://news.ycombinator.com/item?id=25273918 - Dec 2020 (1 comment)
QBE vs. LLVM - https://news.ycombinator.com/item?id=25273907 - Dec 2020 (99 comments)
Show HN: QBE – a new compiler back end - https://news.ycombinator.com/item?id=11555527 - April 2016 (68 comments)
(* Normally a thread that recent with significant comments would count as a dupe (https://news.ycombinator.com/newsfaq.html), but it didn't get that much frontpage time so I've made an exception.)
Now 1.3 is 63% the speed of gcc O2 on this largely hostile benchmark.