Drew Chadwick DeVault / ddevault / SirCmpwn - Opinionated white-male-guilt-ridden software developer. Cancelled Hyprland and slandered it as "toxic" and transphobic. Hates X11 users and Hacker News. Lolicon.

it's like c but worse

C people don't like Hare because it's strictly less capable. Rust people don't like it because it's a worse C, Drew somehow managed to make a programming language disliked by all sides. Truly an accomplishment.
the point of the language seems to be "stable language for 100 years" but that's called c and you aren't going to do that
keep dreaming you little bitch
So he just made Rust
actually he didn't because iirc hare doesn't even have the raii and memory safety checking that rust does

hare literally seems to be a very lackluster incompatible derivative of c that has a reference implementation that targets a compiler backend that is itself a very lackluster clone of gcc
it has pretty much no reason to exist and i cannot think of reasons why anybody would use it, except for the case that you happen to be drew devault and you are unusually biased in its favor since you made the thing
i think hare's memey compiler backend is more potentially useful than hare ever will be tbh
 
i think hare's memey compiler backend is more potentially useful than hare ever will be tbh
Kind of true, QBE has some merit (60-70% of the speed for 10% the effort in implementation) but it's between two niches:

- Super fast compilation, decent code: You use a copy-patch compilation algorithm, which is implemented by Cranelift, or other equivalents. Cranelift outputs better code than LLLVM -O0 while being a few order of magnitudes faster. Great for JITs, interpreted languages, etc.
- Super fast code: LLVM, basically what any serious language uses these days for AOT compilation.

QBE excels at neither.

There's not much market for anything inbetween. A good JIT would utilize both poles (LLVM for hot loops, Cranelift for ~mid code, interpretation for cold code). And since you're not the one writing the optimizer, arguments for using QBE over LLVM are mostly tangential and related to DX.
 
  • Informative
Reactions: UERISIMILITUDO
There's not much market for anything inbetween.
there are other dimensions, though
for instance, i think it might be a neat complement/alternative to stuff like tcc if you're trying to make a sequence of compilers bootstrap each other
also its small size could be beneficial in certain scenarios because llvm certainly isn't an incredibly lightweight piece of software

that being said, qbe is a questionable backend choice to be used by a language as supposedly ambitious as hare
 
there are other dimensions, though
for instance, i think it might be a neat complement/alternative to stuff like tcc if you're trying to make a sequence of compilers bootstrap each other
also its small size could be beneficial in certain scenarios because llvm certainly isn't an incredibly lightweight piece of software

that being said, qbe is a questionable backend choice to be used by a language as supposedly ambitious as hare
Drew is a minimalism sperg. QBE is a small backend, Hare itself is kept small as well. That's what the "size of a 3 1/2 inch floppy" weird brag is there for on its front page. When you actually need performance on the level of LLVM in your hot code paths, I'm pretty sure the recommended solution is dropping down to assembly.
 
i think it might be a neat complement/alternative to stuff like tcc if you're trying to make a sequence of compilers bootstrap each other
Oh, I hadn't thought of that. Agreed.

Bootstrapping is very important, and a lot of the rules of "Good Software" doesn't apply there. Everything is okay as long as it keeps stuff simple and free of self-dependencies. I'm a Rust shill but I'd gladly use portable C or some other trivial language (like a trivial assembler-like language with Lisp syntax) to bootstrap my tools & even implement minimally viable bootstrap implementations for the languages I'm creating. Even though I'd never use these languages for anything serious unless I had to.

Minimalism has its use cases and so far it's really just for bootstrapping & trusting your whole system closure (in some places such as embedded devices used for national security, etc). For general software it's not that particularly useful.
 
Back