MMS • RSS
The .NET Core CLR team has announced that their next-generation just-in-time compiler RyuJIT is now completely powering the .NET Core platform. For those unfamiliar, in .NET Core the compiler (Roslyn) compiles C# into CIL (Common Intermediate Language) bytecode. Next RyuJIT compiles this CIL bytecode to the machine code of the targeted architecture. The result is that all 4 CPU architectures supported by RyuJIT (x86, x64, ARM32, and ARM64) can now take advantage of the performance and higher efficiency offered by RyuJIT as compared to the legacy systems.
RyuJIT development was first made visible to the public back in September 2013, via a community preview. The first production release of RyuJIT was for the x64 architecture and released as part of .NET Framework 4.6 in July 2015. The x86 was introduced next, followed by ARM32. Per Microsoft’s Bruce Forstall, ARM64 is “close to preview quality” in .NET Core 2.1. While not explicitly stated, it would seem that .NET Core 2.2 would include this architecture. Forstall notes that significant contributions were received from Qualcomm to advance support for the ARM64 platform.
Users of the current .NET Framework can benefit from RyuJIT when targeting the x64 platform, code generated for x32 will continue to use the legacy compiler, JIT32. .NET Core 2.1 users are already taking advantage of RyuJIT for x86, x64, and ARM32.
With this work completed Forstall notes that future plans for RyuJIT include adding SIMD support, architecture-specific hardware intrinsics and “support for Linux software conventions”. They also wish to continue improving the overall quality of the code generated by RyuJIT. Developer reaction seems to be positive overall, an interesting prospect was raised by one who inquired about the possibility of adding WebASM as a target, but for now nothing has been formally announced.