Alex Denisov writes about LLVM, compilers, and testing, including bitcode, learning compilers, and how projects like GNU Make and FreeBSD are tested.
Commenters recommend his Bitcode Demystified post for how bitcode works at a low level, and the author also posts there seeking work.
The comments are wildly fragmented in this thread. I agree with @torginus, the article has less and less of anything useful to people that want to get into compilers.
Anyways, the "Who .. hires compiler engineer?" section is fairly vague in my opinion, so: AMD, Nvidia, Intel, Apple, Google definitely hire for compiler positions. These hire fairly 'in-open' so probably the best bets all around. Aside from this, Jane Street and Bloomberg also do hire at the peak tier but for that certain language. The off beat options are: Qualcomm, Modular, Amazon (AWS) and ARM. Also see, https://mgaudet.github.io/CompilerJobs/
I seriously attempted getting into compilers last year before realising it is not for me but during those times it felt like people who want to be compiler devs are much much more in number compared to jobs that exist (yes exist, not vacant).
The common way to get going is to do LLVM. Making a compiler is great and all but too many people exist with a lox interpreter-compiler or something taken from the two Go books. Contributing to LLVM (or friends like Carbon, Swift, Rust) or atleast some usage experience is the way. The other side of this is doing GNU GCC and friends but I have seen like only one opening that mentions this way as being relevant. University level courses are rarely of any use.
Lastly, LLVM meetups/conferences are fairly common at most tech hubs and usually have a jobs section listing all requirements.
A few resources since I already made this…
We kind of have it, except it does not seem to have taken off and has been relegated to a second-class citizen at best.
I am talking about LLVM Bitcode[0] – when the binary product (a executable or .o/.a files) is shipped in the LLVM IR representation and then is «AOT»'d into the final product (a final executable) that can, for instance, take advantage of the latest ISA features (armv9, Zen23, POWER18 or new RISC-V extensions) with zero effort on the end user part. For a while, Apple even encouraged iOS devs to upload their apps into the App Store in the Bitcode format. That has all but ceased to exist for not obvious reasons about a year or two ago. Technically, if Apple chose to transition onto an alternative ISA again (say, RISC-V), at least iOS apps would not require recompilation and would get statically converted to the new ISA at the download time.
Imagine a world where there would be a single Linux distribution for a given architecture shipped in the Bitcode format (sans the small arch specific boot area and the AOT engine), for instance.
[0] https://lowlevelbits.org/bitcode-demystified/
[1] https://www.highcaffeinecontent.com/blog/20190518-Translating-an-ARM-iOS-App-to-Intel-macOS-Using-Bitcode
>Apple adds features like PCI-e for discrete GPU support (ok, they did in A9), and if Ax series performance starts to exceed corresponding Intel mobile parts by >50% (enough to compensate for the overhead of binary translation for legacy x86 apps).
When it happens, it might not need binary translation.
http://lowlevelbits.org/bitcode-demystified/
Lots of suspicion because of the move to force App Store apps to have Bitcode enabled for submission. This would allow them to potentially transpile x86 apps for ARM:
https://lowlevelbits.org/bitcode-demystified/
Also as we've seen with iPad Pro + AWS M6G instances the performance is now there to power desktops.
In theory that’s what bitcode protects against.
Today, that doesn’t save binaries not distributed through the store or ones you compiled yourself via other compiler chains.
It is possible to change that. One could even imagine it as part of the loading procedure.
https://lowlevelbits.org/bitcode-demystified/
It's worth noting that there have been discussions about bitcode and ARM in the past, notably ATP 122 and Bitcode Demystified. Both are worth listening to and reading respectively if you're interested in how this stuff works on a low level:
http://atp.fm/episodes/122
http://lowlevelbits.org/bitcode-demystified/