|about 1 year ago||3 months ago|
|-||GNU General Public License v3.0 or later|
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Toy C compiler, worth having an IR stage?
2 projects | /r/Compilers | 1 Jul 2023
I really liked targetting QBE (https://c9x.me/compile/) as an IR, as it gave me lots of back-end optimisations for free 😊.
C or LLVM for a fast backend?
3 projects | /r/ProgrammingLanguages | 2 Jun 2023
There is: QBE.
Made my first LLVM front-end… Now what?
2 projects | /r/Compilers | 9 May 2023
You can try buildling you own backend like llvm. A good example or starting point is probably QBE since it is extremely small but very functional.
Best book on writing an optimizing compiler (inlining, types, abstract interpretation)?
8 projects | /r/ProgrammingLanguages | 17 Apr 2023
Rust port of B3 from WebKit, LLVM-like backend
2 projects | /r/ProgrammingLanguages | 14 Apr 2023
How big is the whole backend? I've heard that it is small but I wanted to compare it to QBE which is around 8 KLoC and it is quite interesting too.
Few lesser known tricks, quirks and features of C
2 projects | news.ycombinator.com | 19 Feb 2023
I think QBE might be what you're looking for?
Do you consider LLVM a complicated software? And are there any alternatives and how they compare to LLVM?
As far as I know, there is QBE, which is actually kinda underrated, and Cranelift, mainly designed for JIT compilation
Before that, I had spent a bit of time working with QBE, which is much simpler and really easy to write a frontend for. I switched to libgccjit though, because I got frustrated with a few of the things lacking from QBE (like the ability to easily keep track of where different variables live on the stack). I think for many hobby language projects, QBE would be a good option (my project was off the ground very fast using QBE, and I got pretty far before I ran into limitations I couldn't easily work around).
If one of your parameters is size/complexity of the backend and you prefer something smaller, have a look at qbe and cwerg
The alternatives are generally hidden inside of another compiler. The big exception seems to be qbe (https://c9x.me/compile/) however since the author appears to have written this code without peer review, it's not easy to read it's source code.
What are some alternatives?
minivm - A VM That is Dynamic and Fast
ubpf - Userspace eBPF VM
well - The Future of Assembly Language. https://wellang.github.io/well/
mir - A lightweight JIT compiler based on MIR (Medium Internal Representation) and C11 JIT compiler and interpreter based on MIR
cproc - C11 compiler (mirror)
Som - Parser, code model, navigable browser and VM for the SOM Smalltalk dialect
go.vm - A simple virtual machine - compiler & interpreter - written in golang
Befunge - lang befunge 93 fast
asmjit - Low-latency machine code generation
c4 - C in four functions
Oberon - Oberon parser, code model & browser, compiler and IDE with debugger
wasmtime - A fast and secure runtime for WebAssembly