Overview post: [BenchmarkDotNet v0.10.12](https://aakinshin.net/posts/bdn-v0_10_12/)

### Highlights

* **Improved DisassemblyDiagnoser:**
  BenchmarkDotNet contains an embedded disassembler so that it can print assembly code for all benchmarks;
  it's not easy, but the disassembler evolves in every release.
* **Improved MemoryDiagnoser:**
  it has a better precision level, and it takes less time to evaluate memory allocations in a benchmark.
* **New TailCallDiagnoser:**
  now you get notifications when JIT applies the tail call optimizations to your methods.
* **Better environment info:**
  when your share performance results, it's very important to share information about your environment.
  The library generates the environment summary for you by default.
  Now it contains information about the amount of physical CPU, physical cores, and logic cores.
  If you run a benchmark on a virtual machine, you will get the name of the hypervisor
  (e.g., Hyper-V, VMware, or VirtualBox).
* **Better summary table:**
  one of the greatest features of BenchmarkDotNet is the summary table.
  It shows all important information about results in a compact and understandable form.
  Now it has better customization options: you can display relative performance of different environments
  (e.g., compare .NET Framework and .NET Core) and group benchmarks by categories.