Hacker News new | past | comments | ask | show | jobs | submit login

If you want a simple modern compiler backend intended for production-readiness, consider Cranelift [1]. It's largely written by Dan Gohman, who is a longtime LLVM contributor (and a colleague of mine). It does a lot of the things LLVM's backend passes do, but it's cleaner and better factored, with the benefit of a decade of hindsight [2]. Cranelift should be great for teaching purposes.

[1]: https://github.com/CraneStation/cranelift

[2]: https://cranelift.readthedocs.io/en/latest/compare-llvm.html




I was wondering where I had heard of Cranelift before- seems like it is the default backend for wasmer[1].

[1] https://github.com/wasmerio/wasmer#building


Thanks. I'll check it out. In that vein, what do you think of QBE (open-source) and LCC for understandable compilers?

https://c9x.me/compile/

https://en.wikipedia.org/wiki/LCC_(compiler)


That is a pretty neat backend for compilers. Definitely worth using when going to the 'next level' between how do we take text and turn it into binary as level 1, and then level 2, how do we improve the binary we're going to generate by understanding what the ASTs are telling us.


Any plan to use this in rustc? If so, is there a plan to maintain cross language LTO w/ C++?


> Any plan to use this in rustc?

One of the primary expectations / use cases for cranelift is its use for rustc's debug builds: https://github.com/CraneStation/cranelift/blob/master/rustc....


Definitely, for debug builds. Eventually perhaps for release—LTO is one of the many things we would have to figure out if we go down this road.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: