Enter the Dragon: RyuJIT Project Yields New Compiler for NET
Microsoft is developing a new Just-In-Time (JIT) compiler that will ultimately be used to run .NET-based application. Codenamed “RyuJIT”, the new compiler marks a change in design philosophy. The current 64-bit JIT compiler is designed to support an operating profile found in server environments where execution performance is prioritized over startup performance. Supporting technologies such as NGen and background JIT are leaned on to provide extra performance boosts. However RyuJIT’s design goals recognize the popularity of 64-bit code in computing platforms beyond the server. As a result RyuJIT places an emphasis on overall performance improvements when compared to the current x64 JIT, including shortening application start up times.
Andrew Pardoe, a Microsoft Program Manager working on the RyuJIT project, observes that up until this point the .NET CodeGEN team was managing two separate code bases, one for the X64 .NET JIT compiler and one for X86 .NET JIT compiler. RyuJIT is based on the code base for the current X86 .NET JIT compiler. The end goal is that the RyuJIT project will be .NET’s JIT compiler for all current and future architectures (X86, X64, ARM, etc). At present RyuJIT is X64-only, with a Community Technology Preview (CTP) available now for 64-bit Windows 8.1 and Windows Server 2012 R2.
Installing the CTP will allow you to experiment with the new compiler at your discretion, it does not replace the current X64 JIT compiler in use. To use RyuJIT, either use the following environmental variable:
COMPLUS_AltJit=* Alternatively create a new registry key
HKEY_Local_Machine\SOFTWARE\Microsoft\.NETFramework\AltJit as a string with the value *. Note RyuJIT does not currently support Edit & Continue, but support for this feature is expected in a future release. Microsoft’s Kevin Frei states that while RyuJIT currently only supports Windows 8.1 and Server 2012 R2, the final version of RyuJIT “…will be part of the full .NET Runtime, fully supported on all platforms that .NET supports”.