LLVM is a much more mature and modern compiler by basically every measure, and importantly, a native cross compiler unlike GCC.
One copy of LLVM can build for many architectures vs needing one GCC toolchain for every architecture you wish to target.
Also modern languages like rust require LLVM so we need it anyway, and the kernel has rust now, so why not make the most mature compiler stack the global default? Using two different compilers for the kernel would be begging for problems.
I am most optimistic for the Fil-C fork of LLVM being a default some day where we get compile time memory safety too.
We do maintain gcc in tree for legacy languages like Fortran though.
If I understand correctly, I think they build an older version of gcc using tcc (Tiny C Compiler by Bellard); then using that to build newer versions incrementally until they get to the modern stack with LLVM.
Fun read! I built a minimal Linux shell [0] in c and Zig last year which does not depend on libc. It was a great way to learn about execve, the new-ish clone3 syscall and how Linux starts a process. Parsing strings is the least fun part of the building the shell.
Seed - Automatically seed your database with production-like dummy data based on your schema for local development and testing ( Link: https://github.com/snaplet/seed )
Location: Mumbai, India
Remote: Preferred
Willing to relocate: Yes, within India
Technologies: Java, Golang, Python, WebAssembly, Linux, SQL, Kubernetes, AWS, GCP, Ruby on Rails
Résumé/CV: https://www.linkedin.com/in/raunak1/
Email: raunak1001 (at) outlook (dot) com
- Principal Software Engineer with 11 years experience.
- Have predominantly worked in scaling out backend services with a focus on building search, analytics and recommendation systems, refactoring monoliths, optimizing cloud costs.
- Have done minimal downtime migrations of infrastructure for AWS and GCP.
As a side project, I have been building a WebAssembly interpreter from scratch at https://github.com/rrampage/wart . It can run Doom and boot Linux!
reply