C# -> MSIL / CIL (CLR) -> LLVM bitcode -> machine code.
The summary is slightly misleading. Though they are working towards using LLVM, they currently have about 90% of their core JIT tests working with LLVM on windows x64, the rest fall back to their current JIT. So you won't be able to use this to run C# on linux / arm for a while yet.
There's been quite a bit of recent development on JIT support in LLVM. They had an old JIT a few versions ago which had it's own machine code generation pipeline. This was replaced with MCJIT, that leveraged the same code generation pipeline as the AOT path. More recently there's an effort called ORC to build a more flexible API to better handle the use cases that various JIT writers typically wish to implement. Their existing MCJIT API will still exist but it will become just one example implementation of using this underlying API.
While it is possible to implement garbage collection and exception handling in LLVM, these areas of the compiler could benefit from more improvement. Particularly in the area of compatibility with the native Microsoft stack.
Or you could copy something like Australia's NBN model. A single wholesaler builds and maintains the cables. They *must* run a cable if required for anyone in their service area. But they are only allowed to offer and charge for a link layer transport between end points. Any ISP can then include the rent of the link in the price for internet access and other services for their customers.
Though of course the NBN has screwed up. They bowed to pressure from the incumbents in a number of ways that made running a small ISP unprofitable. They based the pricing of link capacity on the current cost of bandwidth over existing services. And the new government has been trying to compromise the quality of the network by building curb side nodes instead of running fiber end-to-end.
Most of the companies that built rail, went bankrupt. After they were built, nobody was willing to pay the rent they needed to break even. Sometimes construction should be paid for from general tax revenue, because nobody can make money from it.
A couple of little easter eggs in bespoke software;
Hold a couple of modifier keys and click on the icon in the about dialog, "The developers [names] would like to present you with a complimentary cup holder" followed by opening the CD ROM tray. Every new developer checked in a change with their own name once they'd passed their probationary period.
Leave the about dialog open for 5 minutes, the dialog goes black and the developers names start floating around like the game asteroids. Click on a letter and it will disappear, splitting the name in half. With both parts moving slightly faster. Probably should have made it slightly hard to start though. The customer had a ball, but the manager was not happy.