Rider 2026.1 Ships an ASM Viewer for JIT, ReadyToRun, and NativeAOT Output
Rider 2026.1 adds a .NET Disassembler plugin that lets you inspect machine code generated by the JIT, ReadyToRun, and NativeAOT compilers without leaving the IDE.
JetBrains shipped Rider 2026.1 on March 30, and the headline developer-tooling addition is a new ASM Viewer that renders the native disassembly of your C# code directly inside the IDE. The plugin supports JIT, ReadyToRun (crossgen2), and NativeAOT (ilc) output on x86/x64 and ARM64.
Why look at assembly in the first place
Performance-sensitive .NET code, think hot loops, SIMD paths, or struct-heavy allocations, sometimes behaves differently from what the C# source implies. The JIT might devirtualize a call, the PGO data might inline a method you expected to remain a call, or NativeAOT might layout structs in a way that kills your cache line assumptions. Until now you needed external tools like SharpLab, BenchmarkDotNet’s DisassemblyDiagnoser, or Egor Bogatov’s Disasmo to see what actually lands on the CPU. Rider 2026.1 brings that workflow into the editor.
Getting started
Install the plugin from Settings > Plugins > Marketplace by searching for ”.NET Disassembler”. It requires a .NET 6.0+ project. Once installed, open any C# file, place the cursor on a method or property, and open View > Tool Windows > ASM Viewer (or right-click and select it from the context menu). Rider compiles the target and displays the assembly output automatically.
Take a simple example:
public static int Sum(int[] values)
{
int total = 0;
for (int i = 0; i < values.Length; i++)
total += values[i];
return total;
}
With PGO enabled and tiered compilation active, the JIT on .NET 10 will vectorize that loop into SIMD instructions. The ASM Viewer shows you the vpaddd and vmovdqu instructions that prove it actually happened, right next to your source.
Snapshot and diff
The plugin supports snapshots. You can capture the current assembly output, make a code change, and then diff the two side by side. This is useful when you want to verify that a small refactor (say, switching from Span<T> to ReadOnlySpan<T>, or adding a [MethodImpl(MethodImplOptions.AggressiveInlining)] attribute) actually changes the generated code the way you expect.
Configuration options
The toolbar in the ASM Viewer lets you toggle:
- Tiered compilation on or off
- PGO (Profile-Guided Optimization)
- Diff-friendly output that stabilizes addresses for cleaner comparisons
- Compiler target: JIT, ReadyToRun, or NativeAOT
Switching between JIT and NativeAOT output for the same method is a quick way to see how much the two pipelines diverge for your specific code patterns.
Where this fits
The ASM Viewer does not replace BenchmarkDotNet for measuring actual throughput. It complements it. When a benchmark shows an unexpected regression, the viewer gives you a fast path to “what changed in the generated code?” without switching tools or writing a separate harness. The plugin is based on the Disasmo project by Egor Bogatov and is available on Windows, macOS, and Linux. Full details on the JetBrains Marketplace.