So I have been working on a experimental .NET runtime in my free time that compiles .NET IL to C89 and am getting faster performance results than .NET Native (which was a pleasant surprise). Its also even faster when compiling with the GCC or Clang on Windows.
Here is a IL2X WASM demo running a RayTraceBenchmark (Try it out!): http://reign-studios.com/wasm/il2x/ray-trace-benchmark/il2x.html
Now compare IL2X to Mono AOT: https://raytracer-mono-aot.platform.uno/
Here are the benchmark results between different .NET Runtimes (IL2X beats them all): https://onedrive.live.com/view.aspx?resid=FBA0605018C1795B!29408&ithint=file%2Cxlsx&authkey=!AHCOVIoafw_umyA
Here are the compiled.exe files for VC++, GCC and Clang: https://1drv.ms/f/s!Alt5wRhQYKD7geViEuyq7JieoLDjVA
The IL2X project is on GitHub located here: https://github.com/reignstudios/IL2X
IL2X has comes with its own portable .NET Core based corelib that is/will be designed to run anywhere. The more features I add to the portable corelib the closer I get to translating the official .NET Standard libs. I still have missing instruction support and implementation details but its coming along well.
What IL2X does to get its performance is translate the evaluation stack into normal local stack variables that in tern the C compilers can optimize away. This results in a super fast, small and highly portable runtime. Also the code can be compiled on any CPU, ARM, MIPS, RISC-V etc.
I want to be clear the IL2X runtime isn’t ready for anybody to use and is still considered experimental and a work in progress.