diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
deleted file mode 100644
index 3e68fba968..0000000000
--- a/.github/workflows/build.yaml
+++ /dev/null
@@ -1,35 +0,0 @@
-name: build
-
-on:
- pull_request:
- push:
-
-jobs:
- build-windows:
- runs-on: windows-latest
- steps:
- - uses: actions/checkout@v3
- - name: Run
- shell: cmd
- run: |
- call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
- ./build.bat
- build-linux:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- - name: Set up Clang
- uses: egor-tensin/setup-clang@v1
- with:
- version: latest
- platform: x64
- - name: Set up zlib-static
- run: sudo apt-get install -y libkrb5-dev
- - name: Run
- run: ./build.sh
- build-macos:
- runs-on: macOS-latest
- steps:
- - uses: actions/checkout@v3
- - name: Run
- run: ./build.sh
\ No newline at end of file
diff --git a/.github/workflows/generate-changelog.yaml b/.github/workflows/generate-changelog.yaml
new file mode 100644
index 0000000000..71592e4d46
--- /dev/null
+++ b/.github/workflows/generate-changelog.yaml
@@ -0,0 +1,35 @@
+name: generate-changelog
+run-name: Generate changelog / ${{ github.event.head_commit.message }}
+
+on:
+ push:
+ branches:
+ - master
+ workflow_dispatch:
+
+permissions: write-all
+
+jobs:
+ generate:
+ runs-on: ubuntu-latest
+ steps:
+
+ - name: Checkout
+ uses: actions/checkout@v3
+ with:
+ ref: master
+
+ - name: Download changelog
+ run: ./build.cmd docs-update --depth 1 --preview
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Push changelog
+ uses: JamesIves/github-pages-deploy-action@3.7.1
+ with:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ BRANCH: docs-changelog-details
+ FOLDER: docs/_changelog/details
+ GIT_CONFIG_NAME: Andrey Akinshin
+ GIT_CONFIG_EMAIL: andrey.akinshin@gmail.com
+ CLEAN: true
\ No newline at end of file
diff --git a/.github/workflows/docs-stable.yaml b/.github/workflows/generate-gh-pages.yaml
similarity index 70%
rename from .github/workflows/docs-stable.yaml
rename to .github/workflows/generate-gh-pages.yaml
index f5abc60532..cb01860995 100644
--- a/.github/workflows/docs-stable.yaml
+++ b/.github/workflows/generate-gh-pages.yaml
@@ -1,4 +1,5 @@
-name: docs-stable
+name: generate-gh-pages
+run-name: Generate gh-pages / ${{ github.event.head_commit.message }}
on:
push:
@@ -9,7 +10,7 @@ on:
permissions: write-all
jobs:
- build:
+ generate:
runs-on: windows-latest
steps:
@@ -19,17 +20,15 @@ jobs:
ref: docs-stable
- name: Build BenchmarkDotNet
- run: ./build.bat --target Build
+ run: ./build.cmd build
- # Temporary disabled because of the API limit
- # - name: Download changelog
- # run: ./build.bat --target DocFX_Changelog_Download --LatestVersions true --StableVersions true
- # env:
- # GITHUB_PRODUCT: ChangelogBuilder
- # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ - name: Download changelog
+ run: ./build.cmd docs-update --depth 1 --preview
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Build documentation
- run: ./build.bat --target DocFX_Build
+ run: ./build.cmd docs-build
- name: Upload Artifacts
uses: actions/upload-artifact@v1
@@ -39,7 +38,7 @@ jobs:
deploy:
concurrency: ci-${{ github.ref }}
- needs: [build]
+ needs: [generate]
runs-on: ubuntu-latest
steps:
diff --git a/.github/workflows/publish-nightly.yaml b/.github/workflows/publish-nightly.yaml
new file mode 100644
index 0000000000..e316c0fcba
--- /dev/null
+++ b/.github/workflows/publish-nightly.yaml
@@ -0,0 +1,31 @@
+name: publish-nightly
+run-name: Publish nightly nupkg / ${{ github.event.head_commit.message }}
+
+on:
+ push:
+ branches:
+ - master
+
+jobs:
+ publish:
+ runs-on: ubuntu-latest
+ if: ${{ github.repository == 'dotnet/BenchmarkDotNet' }}
+ steps:
+ - uses: actions/checkout@v3
+ - name: Set date
+ run: echo "DATE=$(date +'%Y%m%d')" >> $GITHUB_ENV
+ - name: Pack
+ run: ./build.cmd pack /p:VersionSuffix=nightly.$DATE.$GITHUB_RUN_NUMBER
+ - name: Upload nupkg to artifacts
+ uses: actions/upload-artifact@v3
+ with:
+ name: nupkgs
+ path: "**/*.nupkg"
+ - name: Publish nupkg
+ env:
+ MYGET_API_KEY: ${{ secrets.MYGET_API_KEY }}
+ run: .dotnet/dotnet nuget push **/*.nupkg --source https://www.myget.org/F/benchmarkdotnet/api/v3/index.json --api-key $MYGET_API_KEY --timeout 600
+ - name: Publish snupkg
+ env:
+ MYGET_API_KEY: ${{ secrets.MYGET_API_KEY }}
+ run: .dotnet/dotnet nuget push **/*.snupkg --source https://www.myget.org/F/benchmarkdotnet/api/v3/index.json --api-key $MYGET_API_KEY --timeout 600
diff --git a/.github/workflows/report-test-results.yaml b/.github/workflows/report-test-results.yaml
new file mode 100644
index 0000000000..005465b329
--- /dev/null
+++ b/.github/workflows/report-test-results.yaml
@@ -0,0 +1,27 @@
+name: report-test-results
+run-name: Report test results for '${{ github.event.workflow_run.head_branch }}' / ${{ github.event.workflow_run.head_commit.message }}
+
+on:
+ workflow_run:
+ workflows: [ 'run-tests' ]
+ types:
+ - completed
+
+jobs:
+ report:
+ runs-on: ubuntu-latest
+ permissions: write-all
+ steps:
+ - name: Download Artifacts
+ uses: dawidd6/action-download-artifact@v2
+ with:
+ workflow: ${{ github.event.workflow_run.workflow_id }}
+ - name: Display structure of downloaded files
+ run: ls -R
+ - name: Report tests results
+ uses: AndreyAkinshin/test-reporter@0e2c48ebec2007001dd77dd4bcbcd450b96d5a38
+ with:
+ name: report
+ path: "**/*.trx"
+ reporter: dotnet-trx
+ fail-on-error: true
\ No newline at end of file
diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml
new file mode 100644
index 0000000000..58a248382d
--- /dev/null
+++ b/.github/workflows/run-tests.yaml
@@ -0,0 +1,114 @@
+name: run-tests
+run-name: Run tests / ${{ github.event.head_commit.message }}
+
+on:
+ pull_request:
+ push:
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
+ cancel-in-progress: true
+
+jobs:
+
+ test-windows-core:
+ runs-on: windows-latest
+ steps:
+ - name: Disable Windows Defender
+ run: Set-MpPreference -DisableRealtimeMonitoring $true
+ shell: powershell
+ - uses: actions/checkout@v3
+ - name: Run task 'build'
+ shell: cmd
+ run: |
+ call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
+ ./build.cmd build
+ - name: Run task 'in-tests-core'
+ shell: cmd
+ run: |
+ call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
+ ./build.cmd in-tests-core -e
+ - name: Upload test results
+ uses: actions/upload-artifact@v3
+ if: always()
+ with:
+ name: test-windows-core-trx
+ path: "**/*.trx"
+
+ test-windows-full:
+ runs-on: windows-latest
+ steps:
+ - name: Disable Windows Defender
+ run: Set-MpPreference -DisableRealtimeMonitoring $true
+ shell: powershell
+ - uses: actions/checkout@v3
+ - name: Run task 'build'
+ shell: cmd
+ run: |
+ call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
+ ./build.cmd build
+ - name: Run task 'in-tests-full'
+ shell: cmd
+ run: |
+ call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
+ ./build.cmd in-tests-full -e
+ - name: Upload test results
+ uses: actions/upload-artifact@v3
+ if: always()
+ with:
+ name: test-windows-full-trx
+ path: "**/*.trx"
+
+ test-linux:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - name: Set up Clang
+ uses: egor-tensin/setup-clang@v1
+ with:
+ version: latest
+ platform: x64
+ - name: Set up zlib-static
+ run: sudo apt-get install -y libkrb5-dev
+ - name: Run task 'build'
+ run: ./build.cmd build
+ - name: Run task 'unit-tests'
+ run: ./build.cmd unit-tests -e
+ - name: Run task 'in-tests-core'
+ run: ./build.cmd in-tests-core -e
+ - name: Upload test results
+ uses: actions/upload-artifact@v3
+ if: always()
+ with:
+ name: test-linux-trx
+ path: "**/*.trx"
+
+ test-macos:
+ runs-on: macos-13
+ steps:
+ - uses: actions/checkout@v3
+ - name: Run task 'build'
+ run: ./build.cmd build
+ - name: Run task 'unit-tests'
+ run: ./build.cmd unit-tests -e
+ - name: Run task 'in-tests-core'
+ run: ./build.cmd in-tests-core -e
+ - name: Upload test results
+ uses: actions/upload-artifact@v3
+ if: always()
+ with:
+ name: test-macos-trx
+ path: "**/*.trx"
+
+ spellcheck-docs:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/setup-node@v1
+ name: Setup node
+ with:
+ node-version: "16"
+ - run: npm install -g cspell
+ name: Install cSpell
+ - run: cspell --config ./cSpell.json "docs/**/*.md" --no-progress
+ name: Run cSpell
\ No newline at end of file
diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml
deleted file mode 100644
index 5ab4f3a77d..0000000000
--- a/.github/workflows/spellcheck.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-name: Documentation Checks
-
-on:
- push:
- branches:
- - master
- paths:
- - "docs/**/*"
- pull_request:
- branches:
- - master
- paths:
- - "docs/**/*"
-jobs:
- spellcheck:
- name: "Docs: Spellcheck"
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- name: Check out the code
- - uses: actions/setup-node@v1
- name: Setup node
- with:
- node-version: "16"
- - run: npm install -g cspell
- name: Install cSpell
- - run: cspell --config ./cSpell.json "docs/**/*.md" --no-progress
- name: Run cSpell
diff --git a/README.md b/README.md
index 876d867e15..4d3518d5bf 100644
--- a/README.md
+++ b/README.md
@@ -1,21 +1,21 @@
-
+
- ![](docs/logo/logo-wide.png)
+ ![](https://raw.githubusercontent.com/dotnet/BenchmarkDotNet/ec962b0bd6854c991d7a3ebd77037579165acb36/docs/logo/logo-wide.png)
-
+
-
+
[![NuGet](https://img.shields.io/nuget/v/BenchmarkDotNet.svg)](https://www.nuget.org/packages/BenchmarkDotNet/)
+ [![MyGet](https://img.shields.io/myget/benchmarkdotnet/vpre/benchmarkdotnet?label=myget)](https://www.myget.org/feed/Packages/benchmarkdotnet)
[![Downloads](https://img.shields.io/nuget/dt/benchmarkdotnet.svg)](https://www.nuget.org/packages/BenchmarkDotNet/)
[![Stars](https://img.shields.io/github/stars/dotnet/BenchmarkDotNet?color=brightgreen)](https://github.com/dotnet/BenchmarkDotNet/stargazers)
- [![Gitter](https://img.shields.io/gitter/room/dotnet/BenchmarkDotNet?color=yellow)](https://gitter.im/dotnet/BenchmarkDotNet)
- [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE.md)
- [![Twitter](https://img.shields.io/twitter/follow/BenchmarkDotNet?style=social)](https://twitter.com/BenchmarkDotNet)
+ ![License](https://img.shields.io/badge/license-MIT-blue.svg)
+ [![Twitter](https://img.shields.io/twitter/follow/BenchmarkDotNet?style=social&label=Twitter)](https://twitter.com/BenchmarkDotNet)
-
+
-
+
**BenchmarkDotNet** helps you to transform methods into benchmarks, track their performance, and share reproducible measurement experiments.
It's no harder than writing unit tests!
Under the hood, it performs a lot of [magic](#automation) that guarantees [reliable and precise](#reliability) results thanks to the [perfolizer](https://github.com/AndreyAkinshin/perfolizer) statistical engine.
BenchmarkDotNet protects you from popular benchmarking mistakes and warns you if something is wrong with your benchmark design or obtained measurements.
The results are presented in a [user-friendly](#friendliness) form that highlights all the important facts about your experiment.
-The library is adopted by [14300+ projects](#who-uses-benchmarkdotnet) including .NET Runtime and supported by the [.NET Foundation](https://dotnetfoundation.org).
+BenchmarkDotNet is already adopted by [16600+ GitHub projects](https://github.com/dotnet/BenchmarkDotNet/network/dependents) including
+ [.NET Runtime](https://github.com/dotnet/runtime),
+ [.NET Compiler](https://github.com/dotnet/roslyn),
+ [.NET Performance](https://github.com/dotnet/performance),
+ and many others.
-It's [easy](#simplicity) to start writing benchmarks, check out an example
+It's [easy](#simplicity) to start writing benchmarks, check out the following example
(copy-pastable version is [here](https://benchmarkdotnet.org/articles/guides/getting-started.html)):
```cs
@@ -106,7 +110,7 @@ Intel Core i7-7700K CPU 4.20GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cor
The measured data can be exported to different formats (md, html, csv, xml, json, etc.) including plots:
-![](docs/images/v0.12.0/rplot.png)
+![](https://raw.githubusercontent.com/dotnet/BenchmarkDotNet/ec962b0bd6854c991d7a3ebd77037579165acb36/docs/images/v0.12.0/rplot.png)
*Supported runtimes:* .NET 5+, .NET Framework 4.6.1+, .NET Core 2.0+, Mono, NativeAOT
*Supported languages:* C#, F#, Visual Basic
@@ -128,7 +132,7 @@ For example, if you want to [parameterize](https://benchmarkdotnet.org/articles/
mark a field or a property with `[Params(1, 2, 3)]`: BenchmarkDotNet will enumerate all of the specified values
and run benchmarks for each case.
If you want to compare benchmarks with each other,
- mark one of the benchmark as the [baseline](https://benchmarkdotnet.org/articles/features/baselines.html)
+ mark one of the benchmarks as the [baseline](https://benchmarkdotnet.org/articles/features/baselines.html)
via `[Benchmark(Baseline = true)]`: BenchmarkDotNet will compare it with all of the other benchmarks.
If you want to compare performance in different environments, use [jobs](https://benchmarkdotnet.org/articles/configs/jobs.html).
For example, you can run all the benchmarks on .NET Core 3.0 and Mono via
@@ -158,12 +162,12 @@ If you prefer command-line experience, you can configure your benchmarks via
Reliable benchmarks always include a lot of boilerplate code.
-Let's think about what should you do in a typical case.
+Let's think about what you should do in a typical case.
First, you should perform a pilot experiment and determine the best number of method invocations.
Next, you should execute several warm-up iterations and ensure that your benchmark achieved a steady state.
After that, you should execute the main iterations and calculate some basic statistics.
-If you calculate some values in your benchmark, you should use it somehow to prevent the dead code elimination.
-If you use loops, you should care about an effect of the loop unrolling on your results
+If you calculate some values in your benchmark, you should use it somehow to prevent dead code elimination.
+If you use loops, you should care about the effect of the loop unrolling on your results
(which may depend on the processor architecture).
Once you get results, you should check for some special properties of the obtained performance distribution
like multimodality or extremely high outliers.
@@ -174,7 +178,7 @@ If you write this code from scratch, it's easy to make a mistake and spoil your
Note that it's a shortened version of the full checklist that you should follow during benchmarking:
there are a lot of additional hidden pitfalls that should be handled appropriately.
Fortunately, you shouldn't worry about it because
- BenchmarkDotNet [will do](https://benchmarkdotnet.org/articles/guides/how-it-works.html) this boring and time-consuming stuff for you.
+ BenchmarkDotNet [will perform](https://benchmarkdotnet.org/articles/guides/how-it-works.html) this boring and time-consuming stuff for you.
Moreover, the library can help you with some advanced tasks that you may want to perform during the investigation.
For example,
@@ -193,10 +197,10 @@ You shouldn't worry about the perfect number of method invocation, the number of
So, you shouldn't use any magic numbers (like "We should perform 100 iterations here"),
the library will do it for you based on the values of statistical metrics.
-BenchmarkDotNet also prevents benchmarking of non-optimized assemblies that was built using DEBUG mode because
+BenchmarkDotNet also prevents benchmarking of non-optimized assemblies that were built using DEBUG mode because
the corresponding results will be unreliable.
-It will print a warning you if you have an attached debugger,
- if you use hypervisor (HyperV, VMware, VirtualBox),
+The library will print a warning if you have an attached debugger,
+ if you use a hypervisor (HyperV, VMware, VirtualBox),
or if you have any other problems with the current environment.
During 6+ years of development, we faced dozens of different problems that may spoil your measurements.
@@ -224,58 +228,15 @@ In this case, you can scroll the results up and check out ASCII-style histograms
or generate beautiful png plots using `[RPlotExporter]`.
BenchmarkDotNet doesn't overload you with data; it shows only the essential information depending on your results:
- it allows you to keep summary small for primitive cases and extend it only for the complicated cases.
+ it allows you to keep the summary small for primitive cases and extend it only for complicated cases.
Of course, you can request any additional statistics and visualizations manually.
If you don't customize the summary view,
the default presentation will be as much user-friendly as possible. :)
-## Who uses BenchmarkDotNet?
-
-Everyone!
-BenchmarkDotNet is already adopted by more than [14300+](https://github.com/dotnet/BenchmarkDotNet/network/dependents?package_id=UGFja2FnZS0xNTY3MzExMzE%3D) projects including
- [dotnet/performance](https://github.com/dotnet/performance) (reference benchmarks for all .NET Runtimes),
- [dotnet/runtime](https://github.com/dotnet/runtime/issues?utf8=%E2%9C%93&q=BenchmarkDotNet) (.NET runtime and libraries),
- [Roslyn](https://github.com/dotnet/roslyn/search?q=BenchmarkDotNet&type=Issues&utf8=✓) (C# and Visual Basic compiler),
- [Mono](https://github.com/mono/mono/tree/master/sdks/wasm/bench-runner),
- [ASP.NET Core](https://github.com/aspnet/AspNetCore/tree/master/src/Servers/IIS/IIS/benchmarks),
- [ML.NET](https://github.com/dotnet/machinelearning/tree/main/test/Microsoft.ML.PerformanceTests),
- [Entity Framework Core](https://github.com/dotnet/efcore/tree/master/benchmark),
- [PowerShell](https://github.com/PowerShell/PowerShell/tree/master/test/perf/benchmarks)
- [SignalR](https://github.com/aspnet/SignalR/tree/master/benchmarks/Microsoft.AspNetCore.SignalR.Microbenchmarks),
- [F#](https://github.com/fsharp/fsharp/blob/master/tests/scripts/array-perf/array-perf.fs),
- [Orleans](https://github.com/dotnet/orleans/tree/master/test/Benchmarks),
- [Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json/tree/master/Src/Newtonsoft.Json.Tests/Benchmarks),
- [Elasticsearch.Net](https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/bool-queries.html#_perfomance_considerations),
- [Dapper](https://github.com/DapperLib/Dapper/tree/main/benchmarks/Dapper.Tests.Performance),
- [Expecto](https://github.com/haf/expecto/tree/master/Expecto.BenchmarkDotNet),
- [ImageSharp](https://github.com/SixLabors/ImageSharp/tree/master/tests/ImageSharp.Benchmarks),
- [RavenDB](https://github.com/ravendb/ravendb/tree/v4.0/bench),
- [NodaTime](https://github.com/nodatime/nodatime/tree/master/src/NodaTime.Benchmarks),
- [Jint](https://github.com/sebastienros/jint/tree/dev/Jint.Benchmark),
- [NServiceBus](https://github.com/Particular/NServiceBus/issues?utf8=✓&q=+BenchmarkDotNet+),
- [Serilog](https://github.com/serilog/serilog/tree/dev/test/Serilog.PerformanceTests),
- [Autofac](https://github.com/autofac/Autofac/tree/develop/bench/Autofac.Benchmarks),
- [Npgsql](https://github.com/npgsql/npgsql/tree/main/test/Npgsql.Benchmarks),
- [Avalonia](https://github.com/AvaloniaUI/Avalonia/tree/master/tests/Avalonia.Benchmarks),
- [ReactiveUI](https://github.com/reactiveui/ReactiveUI/tree/master/src/Benchmarks),
- [SharpZipLib](https://github.com/icsharpcode/SharpZipLib/tree/master/benchmark/ICSharpCode.SharpZipLib.Benchmark),
- [LiteDB](https://github.com/mbdavid/LiteDB/tree/master/LiteDB.Benchmarks),
- [GraphQL for .NET](https://github.com/graphql-dotnet/graphql-dotnet/tree/master/src/GraphQL.Benchmarks),
- [.NET Docs](https://github.com/dotnet/docs/tree/master/samples/snippets/csharp/safe-efficient-code/benchmark),
- [RestSharp](https://github.com/restsharp/RestSharp/tree/dev/benchmarks/RestSharp.Benchmarks),
- [MediatR](https://github.com/jbogard/MediatR/tree/master/test/MediatR.Benchmarks),
- [TensorFlow.NET](https://github.com/SciSharp/TensorFlow.NET/tree/master/src/TensorFlowNet.Benchmarks),
- [Apache Thrift](https://github.com/apache/thrift/tree/master/lib/netstd/Benchmarks/Thrift.Benchmarks).
-On GitHub, you can find
- 12600+ [issues](https://github.com/search?o=desc&q=BenchmarkDotNet+-repo:dotnet%2FBenchmarkDotNet&s=created&type=Issues&utf8=✓),
- 5200+ [commits](https://github.com/search?o=desc&q=BenchmarkDotNet+-repo:dotnet%2FBenchmarkDotNet&s=committer-date&type=Commits&utf8=✓), and
- 1,600,000+ [files](https://github.com/search?o=desc&q=BenchmarkDotNet+-repo:dotnet%2FBenchmarkDotNet&s=indexed&type=Code&utf8=✓)
- that involve BenchmarkDotNet.
-
## Learn more about benchmarking
BenchmarkDotNet is not a silver bullet that magically makes all of your benchmarks correct and analyzes the measurements for you.
-Even if you use this library, you still should know how to design the benchmark experiments and how to make correct conclusions based on the raw data.
+Even if you use this library, you still should know how to design benchmark experiments and how to make correct conclusions based on the raw data.
If you want to know more about benchmarking methodology and good practices,
it's recommended to read a book by Andrey Akinshin (the BenchmarkDotNet project lead): ["Pro .NET Benchmarking"](https://aakinshin.net/prodotnetbenchmarking/).
Use this in-depth guide to correctly design benchmarks, measure key performance metrics of .NET applications, and analyze results.
@@ -288,16 +249,6 @@ You will avoid common pitfalls, control the accuracy of your measurements, and i
-## Build status
-
-| Build server | Platform | Build status |
-|--------------|----------|--------------|
-| Azure Pipelines | Windows | [![Azure Pipelines Windows](https://dev.azure.com/dotnet/BenchmarkDotNet/_apis/build/status/BenchmarkDotNet%20-%20Windows)](https://dev.azure.com/dotnet/BenchmarkDotNet/_build/latest?definitionId=55) |
-| Azure Pipelines | Ubuntu | [![Azure Pipelines Ubuntu](https://dev.azure.com/dotnet/BenchmarkDotNet/_apis/build/status/BenchmarkDotNet%20-%20Ubuntu)](https://dev.azure.com/dotnet/BenchmarkDotNet/_build/latest?definitionId=56) |
-| Azure Pipelines | macOS | [![Azure Pipelines macOS](https://dev.azure.com/dotnet/BenchmarkDotNet/_apis/build/status/BenchmarkDotNet%20-%20macOS)](https://dev.azure.com/dotnet/BenchmarkDotNet/_build/latest?definitionId=57) |
-| AppVeyor | Windows | [![AppVeyor/Windows](https://img.shields.io/appveyor/ci/dotnetfoundation/benchmarkdotnet/master.svg)](https://ci.appveyor.com/project/dotnetfoundation/benchmarkdotnet/branch/master) |
-| GitHub Actions | * | [![build](https://github.com/dotnet/BenchmarkDotNet/actions/workflows/build.yaml/badge.svg)](https://github.com/dotnet/BenchmarkDotNet/actions/workflows/build.yaml) |
-
## Contributions are welcome!
BenchmarkDotNet is already a stable full-featured library that allows performing performance investigation on a professional level.
@@ -314,6 +265,6 @@ Let's build the best tool for benchmarking together!
## Code of Conduct
-This project has adopted the code of conduct defined by the [Contributor Covenant](http://contributor-covenant.org/)
+This project has adopted the code of conduct defined by the [Contributor Covenant](https://www.contributor-covenant.org/)
to clarify expected behavior in our community.
For more information, see the [.NET Foundation Code of Conduct](https://dotnetfoundation.org/code-of-conduct).
diff --git a/appveyor.yml b/appveyor.yml
deleted file mode 100644
index dd8ca43691..0000000000
--- a/appveyor.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-#---------------------------------#
-# general configuration #
-#---------------------------------#
-
-# version format
-version: 0.13.5.{build}
-
-# branches to build
-branches:
- # blacklist
- except:
- - gh-pages
-
-pull_requests:
- do_not_increment_build_number: true
-
-# Do not build on tags (GitHub only)
-skip_tags: true
-
-#---------------------------------#
-# environment configuration #
-#---------------------------------#
-
-os: Visual Studio 2022
-
-# scripts that are called at very beginning, before repo cloning
-init:
- - git config --global core.autocrlf input
-
-# add Visual C++ toolset to $path so NativeAOT tests can build native executables
-before_build:
- - call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
-
-#---------------------------------#
-# build configuration #
-#---------------------------------#
-
-build_script:
-- ps: .\build.ps1
-
-test: off
-deploy: off
-
-artifacts:
- - path: '**\BenchmarkDotNet.*.*nupkg' # find all NuGet packages recursively
\ No newline at end of file
diff --git a/azure-pipelines.Ubuntu.yml b/azure-pipelines.Ubuntu.yml
deleted file mode 100755
index f67af5ef3c..0000000000
--- a/azure-pipelines.Ubuntu.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-trigger:
- branches:
- include:
- - master
- exclude:
- - gh-pages
-
-name: $(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r)
-
-jobs:
-- template: build/azure-pipelines.job.template.yml
- parameters:
- name: Ubuntu
- vmImage: 'ubuntu-20.04'
- scriptFileName: ./build.sh
- initialization:
- - bash: |
- wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
- sudo apt-add-repository "deb https://apt.llvm.org/focal/ llvm-toolchain-focal-9 main"
- sudo apt-get update
- - bash: |
- sudo apt-get install cmake clang-9 libicu66 uuid-dev libcurl4-openssl-dev zlib1g-dev libkrb5-dev
diff --git a/azure-pipelines.Windows.yml b/azure-pipelines.Windows.yml
deleted file mode 100755
index 071abcab84..0000000000
--- a/azure-pipelines.Windows.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-trigger:
- branches:
- include:
- - master
- exclude:
- - gh-pages
-
-name: $(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r)
-
-jobs:
-- template: build/azure-pipelines.job.template.yml
- parameters:
- name: Windows
- vmImage: 'windows-2019'
- scriptFileName: .\build.ps1
\ No newline at end of file
diff --git a/azure-pipelines.macOS.yml b/azure-pipelines.macOS.yml
deleted file mode 100755
index d6fd5a2cbe..0000000000
--- a/azure-pipelines.macOS.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-trigger:
- branches:
- include:
- - master
- exclude:
- - gh-pages
-
-name: $(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r)
-
-jobs:
-- template: build/azure-pipelines.job.template.yml
- parameters:
- name: macOS
- vmImage: 'macOS-latest'
- scriptFileName: ./build.sh
diff --git a/build.cmd b/build.cmd
new file mode 100755
index 0000000000..2a8c5273ba
--- /dev/null
+++ b/build.cmd
@@ -0,0 +1,5 @@
+:<<"::CMDLITERAL"
+@CALL build\build.bat %*
+@GOTO :EOF
+::CMDLITERAL
+"$(cd "$(dirname "$0")"; pwd)/build/build.sh" "$@"
\ No newline at end of file
diff --git a/build/Build.csproj b/build/BenchmarkDotNet.Build/BenchmarkDotNet.Build.csproj
similarity index 68%
rename from build/Build.csproj
rename to build/BenchmarkDotNet.Build/BenchmarkDotNet.Build.csproj
index 43c8d3c55b..3b5596f3b5 100644
--- a/build/Build.csproj
+++ b/build/BenchmarkDotNet.Build/BenchmarkDotNet.Build.csproj
@@ -3,13 +3,13 @@
Exe
net7.0
$(MSBuildProjectDirectory)
+ enable
-
-
-
-
+
+
+
\ No newline at end of file
diff --git a/build/BenchmarkDotNet.Build/BuildContext.cs b/build/BenchmarkDotNet.Build/BuildContext.cs
new file mode 100644
index 0000000000..a13c77c5ed
--- /dev/null
+++ b/build/BenchmarkDotNet.Build/BuildContext.cs
@@ -0,0 +1,187 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using BenchmarkDotNet.Build.Helpers;
+using BenchmarkDotNet.Build.Meta;
+using BenchmarkDotNet.Build.Options;
+using BenchmarkDotNet.Build.Runners;
+using Cake.Common;
+using Cake.Common.Build;
+using Cake.Common.Diagnostics;
+using Cake.Common.IO;
+using Cake.Common.Tools.DotNet;
+using Cake.Common.Tools.DotNet.MSBuild;
+using Cake.Core;
+using Cake.Core.IO;
+using Cake.FileHelpers;
+using Cake.Frosting;
+
+namespace BenchmarkDotNet.Build;
+
+public class BuildContext : FrostingContext
+{
+ public string BuildConfiguration { get; set; } = "Release";
+ public DotNetVerbosity BuildVerbosity { get; set; } = DotNetVerbosity.Minimal;
+
+ public DirectoryPath RootDirectory { get; }
+ public DirectoryPath BuildDirectory { get; }
+ public DirectoryPath ArtifactsDirectory { get; }
+
+ public FilePath SolutionFile { get; }
+ public FilePath TemplatesTestsProjectFile { get; }
+ public FilePathCollection AllPackableSrcProjects { get; }
+ public FilePath VersionsFile { get; }
+ public FilePath CommonPropsFile { get; }
+ public FilePath ReadmeFile { get; }
+
+ public DotNetMSBuildSettings MsBuildSettingsRestore { get; }
+ public DotNetMSBuildSettings MsBuildSettingsBuild { get; }
+ public DotNetMSBuildSettings MsBuildSettingsPack { get; }
+
+ private bool IsCiBuild => !this.BuildSystem().IsLocalBuild;
+
+ public IReadOnlyCollection NuGetPackageNames { get; }
+
+ public VersionHistory VersionHistory { get; }
+
+ public GitRunner GitRunner { get; }
+ public UnitTestRunner UnitTestRunner { get; }
+ public DocumentationRunner DocumentationRunner { get; }
+ public BuildRunner BuildRunner { get; }
+ public ReleaseRunner ReleaseRunner { get; }
+
+ public BuildContext(ICakeContext context)
+ : base(context)
+ {
+ RootDirectory = new DirectoryPath(new DirectoryInfo(Directory.GetCurrentDirectory()).Parent?.Parent?.FullName);
+ BuildDirectory = RootDirectory.Combine("build");
+ ArtifactsDirectory = RootDirectory.Combine("artifacts");
+
+
+ SolutionFile = RootDirectory.CombineWithFilePath("BenchmarkDotNet.sln");
+
+ TemplatesTestsProjectFile = RootDirectory.Combine("templates")
+ .CombineWithFilePath("BenchmarkDotNet.Templates.csproj");
+ AllPackableSrcProjects = new FilePathCollection(context.GetFiles(RootDirectory.FullPath + "/src/**/*.csproj")
+ .Where(p => !p.FullPath.Contains("Disassembler")));
+
+ VersionsFile = BuildDirectory.CombineWithFilePath("versions.txt");
+ CommonPropsFile = BuildDirectory.CombineWithFilePath("common.props");
+ ReadmeFile = RootDirectory.CombineWithFilePath("README.md");
+
+ MsBuildSettingsRestore = new DotNetMSBuildSettings();
+ MsBuildSettingsBuild = new DotNetMSBuildSettings();
+ MsBuildSettingsPack = new DotNetMSBuildSettings();
+
+ if (IsCiBuild)
+ {
+ System.Environment.SetEnvironmentVariable("BDN_CI_BUILD", "true");
+
+ MsBuildSettingsBuild.MaxCpuCount = 1;
+ MsBuildSettingsBuild.WithProperty("UseSharedCompilation", "false");
+ }
+
+
+ if (context.Arguments.HasArgument("msbuild"))
+ {
+ var msBuildParameters = context.Arguments.GetArguments().First(it => it.Key == "msbuild").Value;
+ foreach (var msBuildParameter in msBuildParameters)
+ {
+ var split = msBuildParameter.Split(new[] { '=' }, 2);
+ if (split.Length == 2)
+ {
+ var name = split[0];
+ var value = split[1];
+
+ MsBuildSettingsRestore.WithProperty(name, value);
+ MsBuildSettingsBuild.WithProperty(name, value);
+ MsBuildSettingsPack.WithProperty(name, value);
+
+ if (name.Equals("configuration", StringComparison.OrdinalIgnoreCase)) BuildConfiguration = value;
+
+ if (name.Equals("verbosity", StringComparison.OrdinalIgnoreCase))
+ {
+ var parsedVerbosity = Utils.ParseVerbosity(value);
+ if (parsedVerbosity != null)
+ BuildVerbosity = parsedVerbosity.Value;
+ }
+ }
+ }
+ }
+
+ if (KnownOptions.Stable.Resolve(this))
+ {
+ const string name = "NoVersionSuffix";
+ const string value = "true";
+ MsBuildSettingsRestore.WithProperty(name, value);
+ MsBuildSettingsBuild.WithProperty(name, value);
+ MsBuildSettingsPack.WithProperty(name, value);
+ }
+
+ // NativeAOT build requires VS C++ tools to be added to $path via vcvars64.bat
+ // but once we do that, dotnet restore fails with:
+ // "Please specify a valid solution configuration using the Configuration and Platform properties"
+ if (context.IsRunningOnWindows())
+ {
+ MsBuildSettingsRestore.WithProperty("Platform", "Any CPU");
+ MsBuildSettingsBuild.WithProperty("Platform", "Any CPU");
+ }
+
+ var nuGetPackageNames = new List();
+ nuGetPackageNames.AddRange(this
+ .GetSubDirectories(RootDirectory.Combine("src"))
+ .Select(directoryPath => directoryPath.GetDirectoryName())
+ .Where(name => !name.Contains("Disassembler", StringComparison.OrdinalIgnoreCase)));
+ nuGetPackageNames.Add("BenchmarkDotNet.Templates");
+ nuGetPackageNames.Sort();
+ NuGetPackageNames = nuGetPackageNames;
+
+ VersionHistory = new VersionHistory(this, VersionsFile);
+
+ GitRunner = new GitRunner(this);
+ UnitTestRunner = new UnitTestRunner(this);
+ DocumentationRunner = new DocumentationRunner(this);
+ BuildRunner = new BuildRunner(this);
+ ReleaseRunner = new ReleaseRunner(this);
+ }
+
+ public void GenerateFile(FilePath filePath, StringBuilder content)
+ {
+ GenerateFile(filePath, content.ToString());
+ }
+
+ public void GenerateFile(FilePath filePath, string content, bool reportNoChanges = false)
+ {
+ var relativePath = RootDirectory.GetRelativePath(filePath);
+ if (this.FileExists(filePath))
+ {
+ var oldContent = this.FileReadText(filePath);
+ if (content == oldContent)
+ {
+ if (reportNoChanges)
+ this.Information("[NoChanges] " + relativePath);
+ return;
+ }
+
+ this.FileWriteText(filePath, content);
+ this.Information("[Updated] " + relativePath);
+ }
+ else
+ {
+ this.FileWriteText(filePath, content);
+ this.Information("[Generated] " + relativePath);
+ }
+ }
+
+ public void RunOnlyInPushMode(Action action)
+ {
+ if (KnownOptions.Push.Resolve(this))
+ {
+ action();
+ }
+ else
+ this.Information(" Skip because PushMode is disabled");
+ }
+}
\ No newline at end of file
diff --git a/build/ChangeLogBuilder.cs b/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs
similarity index 51%
rename from build/ChangeLogBuilder.cs
rename to build/BenchmarkDotNet.Build/ChangeLogBuilder.cs
index d590e6fc82..e7769e1fbd 100644
--- a/build/ChangeLogBuilder.cs
+++ b/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs
@@ -1,105 +1,45 @@
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
-using System.Diagnostics;
-using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using BenchmarkDotNet.Build.Helpers;
+using BenchmarkDotNet.Build.Meta;
+using Cake.Common.Diagnostics;
using Cake.Core.IO;
-using JetBrains.Annotations;
using Octokit;
-namespace Build;
+namespace BenchmarkDotNet.Build;
-public static class OctokitExtensions
+public static class ChangeLogBuilder
{
- public static string ToStr(this User user, string prefix) => user != null
- ? $" ({prefix} [@{user.Login}]({user.HtmlUrl}))"
- : "";
-
- private static string ToStr(this Author user, string prefix) => user != null
- ? $" ({prefix} {user.ToLink()})"
- : "";
-
- private static string ToStr(this Committer user, string prefix) => user != null
- ? $" ({prefix} {user.Name})"
- : "";
-
- public static string ToLink(this Author user) => $"[@{user.Login}]({user.HtmlUrl})";
-
- public static string ToLinkWithName(this Author user, string name) => $"[@{user.Login} ({name})]({user.HtmlUrl})";
-
- public static string ToCommitMessage(this Commit commit)
+ private class Config
{
- var message = commit.Message.Trim().Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)
- .FirstOrDefault() ?? "";
- return message.Length > 80 ? message.Substring(0, 77) + "..." : message;
- }
-
- public static string ToLink(this GitHubCommit commit) => $"[{commit.Sha.Substring(0, 6)}]({commit.HtmlUrl})";
-
- public static string ToByStr(this GitHubCommit commit)
- {
- if (commit.Author != null)
- return commit.Author.ToStr("by");
- return commit.Commit.Author != null ? commit.Commit.Author.ToStr("by") : "";
- }
-}
-
-public class ChangeLogBuilder
-{
- public class Config
- {
- [PublicAPI] public string ProductHeader => Environment.GetEnvironmentVariable("GITHUB_PRODUCT");
- [PublicAPI] public string Token => Environment.GetEnvironmentVariable("GITHUB_TOKEN");
-
- [PublicAPI] public string RepoOwner => "dotnet";
- [PublicAPI] public string RepoName => "BenchmarkDotNet";
- [PublicAPI] public string CurrentMilestone { get; }
-
- [PublicAPI] public string PreviousMilestone { get; }
- [PublicAPI] public string LastCommit { get; }
+ public string CurrentVersion { get; }
+ public string PreviousVersion { get; }
+ public string LastCommit { get; }
- public void Deconstruct(out string repoOwner, out string repoName, out string currentMilestone,
- out string previousMilestone, out string lastCommit)
+ public void Deconstruct(out string currentMilestone, out string previousMilestone, out string lastCommit)
{
- repoOwner = RepoOwner;
- repoName = RepoName;
- currentMilestone = CurrentMilestone;
- previousMilestone = PreviousMilestone;
+ currentMilestone = CurrentVersion;
+ previousMilestone = PreviousVersion;
lastCommit = LastCommit;
}
- public Config(string[] args)
+ public Config(string currentVersion, string previousVersion, string lastCommit)
{
- CurrentMilestone = args[0];
- PreviousMilestone = args[1];
- LastCommit = args.Length <= 2 ? CurrentMilestone : args[2];
- }
-
- public Config(string currentMilestone, string previousMilestone, string lastCommit)
- {
- CurrentMilestone = currentMilestone;
- PreviousMilestone = previousMilestone;
+ CurrentVersion = currentVersion;
+ PreviousVersion = previousVersion;
LastCommit = lastCommit;
}
}
- public class AuthorEqualityComparer : IEqualityComparer
- {
- public static readonly IEqualityComparer Default = new AuthorEqualityComparer();
-
- public bool Equals(Author x, Author y) => x.Login == y.Login;
-
- public int GetHashCode(Author author) => author.Login.GetHashCode();
- }
-
- public class MarkdownBuilder
+ private class MarkdownBuilder
{
- private static IReadOnlyList AllMilestones = null;
+ private static IReadOnlyList? allMilestones;
private static readonly Dictionary AuthorNames = new();
-
+
private readonly Config config;
private readonly StringBuilder builder;
@@ -116,17 +56,15 @@ private MarkdownBuilder(Config config)
private async Task Build()
{
- var (repoOwner, repoName, milestone, previousMilestone, lastCommit) = config;
+ var (currentVersion, previousVersion, lastCommit) = config;
if (string.IsNullOrEmpty(lastCommit))
- lastCommit = milestone;
+ lastCommit = $"v{currentVersion}";
+
+ var client = Utils.CreateGitHubClient();
- var client = new GitHubClient(new ProductHeaderValue(config.ProductHeader));
- var tokenAuth = new Credentials(config.Token);
- client.Credentials = tokenAuth;
-
- if (milestone == "_")
+ if (currentVersion == "_")
{
- var allContributors = await client.Repository.GetAllContributors(repoOwner, repoName);
+ var allContributors = await client.Repository.GetAllContributors(Repo.Owner, Repo.Name);
builder.AppendLine("# All contributors");
builder.AppendLine();
foreach (var contributor in allContributors)
@@ -141,17 +79,18 @@ private async Task Build()
return builder.ToString();
}
- if (AllMilestones == null)
+ if (allMilestones == null)
{
var milestoneRequest = new MilestoneRequest
{
State = ItemStateFilter.All
};
- AllMilestones = await client.Issue.Milestone.GetAllForRepository(repoOwner, repoName, milestoneRequest);
+ allMilestones =
+ await client.Issue.Milestone.GetAllForRepository(Repo.Owner, Repo.Name, milestoneRequest);
}
IReadOnlyList allIssues = Array.Empty();
- var targetMilestone = AllMilestones.FirstOrDefault(m => m.Title == milestone);
+ var targetMilestone = allMilestones.FirstOrDefault(m => m.Title == $"v{currentVersion}");
if (targetMilestone != null)
{
var issueRequest = new RepositoryIssueRequest
@@ -160,7 +99,7 @@ private async Task Build()
Milestone = targetMilestone.Number.ToString()
};
- allIssues = await client.Issue.GetAllForRepository(repoOwner, repoName, issueRequest);
+ allIssues = await client.Issue.GetAllForRepository(Repo.Owner, Repo.Name, issueRequest);
}
var issues = allIssues
@@ -171,11 +110,11 @@ private async Task Build()
.Where(issue => issue.PullRequest != null)
.OrderBy(issue => issue.Number)
.ToList();
-
- var compare = await client.Repository.Commit.Compare(repoOwner, repoName, previousMilestone, lastCommit);
+
+ var compare =
+ await client.Repository.Commit.Compare(Repo.Owner, Repo.Name, $"v{previousVersion}", lastCommit);
var commits = compare.Commits;
-
-
+
foreach (var contributor in commits.Select(commit => commit.Author))
if (contributor != null && !AuthorNames.ContainsKey(contributor.Login))
{
@@ -190,18 +129,18 @@ string PresentContributor(GitHubCommit commit)
return $"{AuthorNames[commit.Author.Login]} ({commit.Author.ToLink()})".Trim();
return commit.Commit.Author.Name;
}
-
+
var contributors = compare.Commits
.Select(PresentContributor)
.OrderBy(it => it)
.Distinct()
.ToImmutableList();
-
- var milestoneHtmlUlr = $"https://github.com/{repoOwner}/{repoName}/issues?q=milestone:{milestone}";
+
+ var milestoneHtmlUlr = $"https://github.com/{Repo.Owner}/{Repo.Name}/issues?q=milestone:v{currentVersion}";
builder.AppendLine("## Milestone details");
builder.AppendLine();
- builder.AppendLine($"In the [{milestone}]({milestoneHtmlUlr}) scope, ");
+ builder.AppendLine($"In the [v{currentVersion}]({milestoneHtmlUlr}) scope, ");
builder.Append(issues.Count + " issues were resolved and ");
builder.AppendLine(pullRequests.Count + " pull requests were merged.");
builder.AppendLine($"This release includes {commits.Count} commits by {contributors.Count} contributors.");
@@ -219,7 +158,7 @@ string PresentContributor(GitHubCommit commit)
}
private void AppendList(string title, IReadOnlyList items, Func format,
- string conclusion = null)
+ string? conclusion = null)
{
builder.AppendLine($"## {title} ({items.Count})");
builder.AppendLine();
@@ -234,18 +173,19 @@ private void AppendList(string title, IReadOnlyList items, Func
builder.AppendLine();
}
}
-
- public static async Task Run(DirectoryPath path, string currentMilestone, string previousMilestone, string lastCommit)
+
+ public static void Run(BuildContext context, DirectoryPath path,
+ string currentVersion, string previousVersion, string lastCommit)
{
try
{
- var config = new Config(currentMilestone, previousMilestone, lastCommit);
- var releaseNotes = await MarkdownBuilder.Build(config);
- await File.WriteAllTextAsync(path.Combine(config.CurrentMilestone + ".md").FullPath, releaseNotes);
+ var config = new Config(currentVersion, previousVersion, lastCommit);
+ var releaseNotes = MarkdownBuilder.Build(config).Result;
+ context.GenerateFile(path.Combine($"v{config.CurrentVersion}.md").FullPath, releaseNotes, true);
}
catch (Exception e)
{
- await Console.Error.WriteLineAsync(e.Demystify().ToString());
+ context.Error(e.ToString());
}
}
}
\ No newline at end of file
diff --git a/build/BenchmarkDotNet.Build/CommandLineParser.cs b/build/BenchmarkDotNet.Build/CommandLineParser.cs
new file mode 100644
index 0000000000..e97676ca68
--- /dev/null
+++ b/build/BenchmarkDotNet.Build/CommandLineParser.cs
@@ -0,0 +1,337 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Runtime.InteropServices;
+using BenchmarkDotNet.Build.Options;
+using Cake.Frosting;
+
+namespace BenchmarkDotNet.Build;
+
+public class CommandLineParser
+{
+ private const string ScriptName = "build.cmd";
+
+ private static readonly string CallScriptName =
+ (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) ? ScriptName : "./" + ScriptName;
+
+ public static readonly CommandLineParser Instance = new();
+
+ public string[]? Parse(string[]? args)
+ {
+ if (args == null || args.Length == 0 || (args.Length == 1 && Is(args[0], "help", "--help", "-h")))
+ {
+ PrintHelp();
+ return null;
+ }
+
+ if (Is(args[0], "cake"))
+ return args.Skip(1).ToArray();
+
+ var argsToProcess = new Queue(args);
+
+ var taskName = argsToProcess.Dequeue();
+ if (Is(taskName, "-t", "--target") && argsToProcess.Any())
+ taskName = argsToProcess.Dequeue();
+
+ var taskNames = GetTaskNames();
+ var matchedTaskName = taskNames
+ .FirstOrDefault(name => string.Equals(name.Replace("-", ""), taskName.Replace("-", ""),
+ StringComparison.OrdinalIgnoreCase));
+ if (matchedTaskName == null)
+ {
+ PrintError($"'{taskName}' is not a task");
+ return null;
+ }
+
+ taskName = matchedTaskName;
+
+ if (argsToProcess.Count == 1 && Is(argsToProcess.Peek(), "-h", "--help"))
+ {
+ PrintTaskHelp(taskName);
+ return null;
+ }
+
+ var cakeArgs = new List
+ {
+ "--target",
+ taskName
+ };
+ while (argsToProcess.Any())
+ {
+ var arg = argsToProcess.Dequeue();
+
+ if (arg.StartsWith("/p:"))
+ {
+ cakeArgs.Add("--msbuild");
+ cakeArgs.Add(arg[3..]);
+ continue;
+ }
+
+ if (arg.StartsWith('-'))
+ {
+ cakeArgs.Add(arg);
+ if (argsToProcess.Any() && !argsToProcess.Peek().StartsWith('-'))
+ cakeArgs.Add(argsToProcess.Dequeue());
+ continue;
+ }
+
+ PrintError("Unknown option: " + arg);
+ return null;
+ }
+
+ return cakeArgs.ToArray();
+ }
+
+
+ private readonly IOption[] baseOptions =
+ {
+ KnownOptions.Verbosity, KnownOptions.Exclusive, KnownOptions.Help, KnownOptions.Stable
+ };
+
+ private void PrintHelp()
+ {
+ WriteHeader("Description:");
+
+ WritePrefix();
+ WriteLine("BenchmarkDotNet build script");
+
+ WriteLine();
+
+ WriteHeader("Usage:");
+
+ WritePrefix();
+ Write(CallScriptName + " ");
+ WriteTask(" ");
+ WriteOption("[OPTIONS]");
+ WriteLine();
+
+ WriteLine();
+
+ PrintExamples(GetTasks().SelectMany(task => task.HelpInfo.Examples).ToList());
+
+ PrintOptions(baseOptions);
+
+ WriteHeader("Tasks:");
+ var taskWidth = GetTaskNames().Max(name => name.Length) + 3;
+ foreach (var (taskName, taskDescription, _) in GetTasks())
+ {
+ if (taskName.Equals("Default", StringComparison.OrdinalIgnoreCase))
+ continue;
+
+ WriteTask(" " + taskName.PadRight(taskWidth));
+ Write(taskDescription);
+
+ WriteLine();
+ }
+ }
+
+ private void PrintTaskHelp(string taskName)
+ {
+ var taskType = typeof(BuildContext).Assembly
+ .GetTypes()
+ .Where(type => type.IsSubclassOf(typeof(FrostingTask)) && !type.IsAbstract)
+ .First(type => Is(type.GetCustomAttribute()?.Name, taskName));
+ taskName = taskType.GetCustomAttribute()!.Name;
+ var taskDescription = taskType.GetCustomAttribute()?.Description ?? "";
+ var helpInfo = GetHelpInfo(taskType);
+
+ WriteHeader("Description:");
+
+ WritePrefix();
+ WriteLine(!string.IsNullOrWhiteSpace(taskDescription)
+ ? $"Task '{taskName}': {taskDescription}"
+ : $"Task '{taskName}'");
+
+ if (!string.IsNullOrWhiteSpace(helpInfo.Description))
+ foreach (var line in helpInfo.Description.Split('\n', StringSplitOptions.RemoveEmptyEntries))
+ {
+ WritePrefix();
+ WriteLine(line.TrimEnd());
+ }
+
+ WriteLine();
+
+ WriteHeader("Usage:");
+
+ WritePrefix();
+ Write(CallScriptName + " ");
+ WriteTask(taskName + " ");
+ WriteOption("[OPTIONS]");
+ WriteLine();
+
+ WriteLine();
+
+ PrintExamples(helpInfo.Examples);
+
+ PrintOptions(helpInfo.Options.Concat(baseOptions).ToArray());
+
+ if (helpInfo.EnvironmentVariables.Any())
+ {
+ WriteHeader("Environment variables:");
+ foreach (var envVar in helpInfo.EnvironmentVariables)
+ {
+ WritePrefix();
+ WriteOption(envVar.Name);
+ WriteLine();
+ }
+ }
+ }
+
+ private void PrintOptions(IOption[] options)
+ {
+ const string valuePlaceholder = "";
+
+ WriteLine("Options:", ConsoleColor.DarkCyan);
+
+ int GetWidth(IOption option)
+ {
+ int width = option.CommandLineName.Length;
+ foreach (var alias in option.Aliases)
+ width += 1 + alias.Length;
+ if (option is StringOption)
+ width += 1 + valuePlaceholder.Length;
+ return width;
+ }
+
+ const int descriptionGap = 3;
+ var maxWidth = options.Max(GetWidth) + descriptionGap;
+
+ foreach (var option in options)
+ {
+ var allNames = option.Aliases.Append(option.CommandLineName).OrderBy(name => name.Length);
+ var joinName = string.Join(',', allNames);
+
+ WritePrefix();
+ WriteOption(joinName);
+ if (option is StringOption)
+ {
+ Write(" ");
+ WriteArg(valuePlaceholder);
+ }
+
+ Write(new string(' ',
+ maxWidth - joinName.Length - (option is StringOption ? valuePlaceholder.Length + 1 : 0)));
+ var descriptionLines = option.Description.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
+ Write(descriptionLines.FirstOrDefault() ?? "");
+ for (int i = 1; i < descriptionLines.Length; i++)
+ {
+ WriteLine();
+ WritePrefix();
+ Write(new string(' ', maxWidth));
+ Write(descriptionLines[i]);
+ }
+
+ WriteLine();
+ }
+
+ WritePrefix();
+ WriteOption("/p:");
+ WriteArg("");
+ WriteOption("=");
+ WriteArg(valuePlaceholder);
+ Write(new string(' ', maxWidth - "/p:=".Length - valuePlaceholder.Length));
+ Write("Passes custom properties to MSBuild");
+ WriteLine();
+
+ WriteLine();
+ }
+
+ private void PrintExamples(IReadOnlyList examples)
+ {
+ if (!examples.Any())
+ return;
+ WriteHeader("Examples:");
+
+ foreach (var example in examples)
+ {
+ WritePrefix();
+ Write(CallScriptName + " ");
+ WriteTask(example.TaskName + " ");
+ foreach (var (name, value, isMsBuild) in example.Arguments)
+ {
+ if (isMsBuild)
+ {
+ WriteOption("/p:");
+ WriteArg(name);
+ WriteOption("=");
+ WriteArg(value + " ");
+ }
+ else
+ {
+ WriteOption(name + " ");
+ if (value != null)
+ WriteArg(value + " ");
+ }
+ }
+
+ WriteLine();
+ }
+
+ WriteLine();
+ }
+
+ private static HashSet GetTaskNames()
+ {
+ return GetTasks().Select(task => task.Name).ToHashSet(StringComparer.OrdinalIgnoreCase);
+ }
+
+ private static List<(string Name, string Description, HelpInfo HelpInfo)> GetTasks()
+ {
+ return typeof(BuildContext).Assembly
+ .GetTypes()
+ .Where(type => type.IsSubclassOf(typeof(FrostingTask)) && !type.IsAbstract)
+ .Select(type => (
+ Name: type.GetCustomAttribute()?.Name ?? "",
+ Description: type.GetCustomAttribute()?.Description ?? "",
+ HelpInfo: GetHelpInfo(type)
+ ))
+ .Where(task => task.Name != "")
+ .ToList();
+ }
+
+ private static HelpInfo GetHelpInfo(Type taskType)
+ {
+ return Activator.CreateInstance(taskType) is IHelpProvider helpProvider
+ ? helpProvider.GetHelp()
+ : new HelpInfo();
+ }
+
+ private static bool Is(string? arg, params string[] values) =>
+ values.Any(value => value.Equals(arg, StringComparison.OrdinalIgnoreCase));
+
+ private void PrintError(string text)
+ {
+ Console.ForegroundColor = ConsoleColor.Red;
+ Console.Error.WriteLine("ERROR: " + text);
+ Console.WriteLine();
+ Console.ResetColor();
+ PrintHelp();
+ }
+
+ private void WritePrefix() => Write(" ");
+ private void WriteTask(string message) => Write(message, ConsoleColor.Green);
+ private void WriteOption(string message) => Write(message, ConsoleColor.Blue);
+ private void WriteArg(string message) => Write(message, ConsoleColor.DarkYellow);
+ private void WriteObsolete(string message) => Write(message, ConsoleColor.Gray);
+
+ private void WriteHeader(string message)
+ {
+ WriteLine(message, ConsoleColor.DarkCyan);
+ }
+
+ private void Write(string message, ConsoleColor? color = null)
+ {
+ if (color != null)
+ Console.ForegroundColor = color.Value;
+ Console.Write(message);
+ if (color != null)
+ Console.ResetColor();
+ }
+
+ private void WriteLine(string message = "", ConsoleColor? color = null)
+ {
+ Write(message, color);
+ Console.WriteLine();
+ }
+}
\ No newline at end of file
diff --git a/build/BenchmarkDotNet.Build/EnvVar.cs b/build/BenchmarkDotNet.Build/EnvVar.cs
new file mode 100644
index 0000000000..569c33726b
--- /dev/null
+++ b/build/BenchmarkDotNet.Build/EnvVar.cs
@@ -0,0 +1,23 @@
+using System;
+
+namespace BenchmarkDotNet.Build;
+
+public class EnvVar
+{
+ public static readonly EnvVar GitHubToken = new("GITHUB_TOKEN");
+ public static readonly EnvVar NuGetToken = new("NUGET_TOKEN");
+
+ public string Name { get; }
+
+ private EnvVar(string name) => Name = name;
+
+ public string? GetValue() => Environment.GetEnvironmentVariable(Name);
+
+ public void AssertHasValue()
+ {
+ if (string.IsNullOrEmpty(GetValue()))
+ throw new Exception($"Environment variable '{Name}' is not specified!");
+ }
+
+ public void SetEmpty() => Environment.SetEnvironmentVariable(Name, "");
+}
\ No newline at end of file
diff --git a/build/BenchmarkDotNet.Build/Example.cs b/build/BenchmarkDotNet.Build/Example.cs
new file mode 100644
index 0000000000..eaef9799e5
--- /dev/null
+++ b/build/BenchmarkDotNet.Build/Example.cs
@@ -0,0 +1,38 @@
+using System.Collections.Generic;
+using BenchmarkDotNet.Build.Options;
+
+namespace BenchmarkDotNet.Build;
+
+public class Example
+{
+ private readonly List arguments = new();
+
+ public string TaskName { get; }
+ public IReadOnlyCollection Arguments => arguments;
+
+ public Example(string taskName)
+ {
+ TaskName = taskName;
+ }
+
+ public Example WithMsBuildArgument(string name, string value)
+ {
+ arguments.Add(new Argument(name, value, true));
+ return this;
+ }
+
+ public Example WithArgument(BoolOption option)
+ {
+ arguments.Add(new Argument(option.CommandLineName, null, false));
+ return this;
+ }
+
+ public Example WithArgument(StringOption option, string value)
+ {
+ arguments.Add(new Argument(option.CommandLineName, value, false));
+ return this;
+ }
+
+
+ public record Argument(string Name, string? Value, bool IsMsBuild);
+}
\ No newline at end of file
diff --git a/build/BenchmarkDotNet.Build/Folder.DotSettings b/build/BenchmarkDotNet.Build/Folder.DotSettings
new file mode 100644
index 0000000000..53109cf04e
--- /dev/null
+++ b/build/BenchmarkDotNet.Build/Folder.DotSettings
@@ -0,0 +1,4 @@
+
+ <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" />
+ <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" />
+ True
\ No newline at end of file
diff --git a/build/BenchmarkDotNet.Build/HelpInfo.cs b/build/BenchmarkDotNet.Build/HelpInfo.cs
new file mode 100644
index 0000000000..5de8c27931
--- /dev/null
+++ b/build/BenchmarkDotNet.Build/HelpInfo.cs
@@ -0,0 +1,12 @@
+using System;
+using BenchmarkDotNet.Build.Options;
+
+namespace BenchmarkDotNet.Build;
+
+public class HelpInfo
+{
+ public string Description { get; init; } = "";
+ public IOption[] Options { get; init; } = Array.Empty();
+ public EnvVar[] EnvironmentVariables { get; init; } = Array.Empty();
+ public Example[] Examples { get; init; } = Array.Empty();
+}
\ No newline at end of file
diff --git a/build/BenchmarkDotNet.Build/Helpers/OctokitExtensions.cs b/build/BenchmarkDotNet.Build/Helpers/OctokitExtensions.cs
new file mode 100644
index 0000000000..f981d6a12c
--- /dev/null
+++ b/build/BenchmarkDotNet.Build/Helpers/OctokitExtensions.cs
@@ -0,0 +1,40 @@
+using System;
+using System.Linq;
+using Octokit;
+
+namespace BenchmarkDotNet.Build.Helpers;
+
+public static class OctokitExtensions
+{
+ public static string ToStr(this User? user, string prefix) => user != null
+ ? $" ({prefix} [@{user.Login}]({user.HtmlUrl}))"
+ : "";
+
+ private static string ToStr(this Author? user, string prefix) => user != null
+ ? $" ({prefix} {user.ToLink()})"
+ : "";
+
+ private static string ToStr(this Committer? user, string prefix) => user != null
+ ? $" ({prefix} {user.Name})"
+ : "";
+
+ public static string ToLink(this Author user) => $"[@{user.Login}]({user.HtmlUrl})";
+
+ public static string ToLinkWithName(this Author user, string name) => $"[@{user.Login} ({name})]({user.HtmlUrl})";
+
+ public static string ToCommitMessage(this Commit commit)
+ {
+ var message = commit.Message.Trim().Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)
+ .FirstOrDefault() ?? "";
+ return message.Length > 80 ? message.Substring(0, 77) + "..." : message;
+ }
+
+ public static string ToLink(this GitHubCommit commit) => $"[{commit.Sha.Substring(0, 6)}]({commit.HtmlUrl})";
+
+ public static string ToByStr(this GitHubCommit commit)
+ {
+ if (commit.Author != null)
+ return commit.Author.ToStr("by");
+ return commit.Commit.Author != null ? commit.Commit.Author.ToStr("by") : "";
+ }
+}
\ No newline at end of file
diff --git a/build/BenchmarkDotNet.Build/Helpers/Utils.cs b/build/BenchmarkDotNet.Build/Helpers/Utils.cs
new file mode 100644
index 0000000000..2d6bbfc520
--- /dev/null
+++ b/build/BenchmarkDotNet.Build/Helpers/Utils.cs
@@ -0,0 +1,61 @@
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Text.RegularExpressions;
+using Cake.Common.Tools.DotNet;
+using Octokit;
+
+namespace BenchmarkDotNet.Build.Helpers;
+
+public static class Utils
+{
+ public static string GetOs()
+ {
+ if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
+ return "linux";
+ if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
+ return "windows";
+ if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
+ return "macos";
+ return "unknown";
+ }
+
+ public static DotNetVerbosity? ParseVerbosity(string verbosity)
+ {
+ var lookup = new Dictionary(StringComparer.OrdinalIgnoreCase)
+ {
+ { "q", DotNetVerbosity.Quiet },
+ { "quiet", DotNetVerbosity.Quiet },
+ { "m", DotNetVerbosity.Minimal },
+ { "minimal", DotNetVerbosity.Minimal },
+ { "n", DotNetVerbosity.Normal },
+ { "normal", DotNetVerbosity.Normal },
+ { "d", DotNetVerbosity.Detailed },
+ { "detailed", DotNetVerbosity.Detailed },
+ { "diag", DotNetVerbosity.Diagnostic },
+ { "diagnostic", DotNetVerbosity.Diagnostic }
+ };
+ return lookup.TryGetValue(verbosity, out var value) ? value : null;
+ }
+
+ public static GitHubClient CreateGitHubClient()
+ {
+ EnvVar.GitHubToken.AssertHasValue();
+
+ var client = new GitHubClient(new ProductHeaderValue("BenchmarkDotNet"));
+ var tokenAuth = new Credentials(EnvVar.GitHubToken.GetValue());
+ client.Credentials = tokenAuth;
+ return client;
+ }
+
+ public static string ApplyRegex(string content, string pattern, string newValue)
+ {
+ var regex = new Regex(pattern);
+ var match = regex.Match(content);
+ if (!match.Success)
+ throw new Exception("Failed to apply regex");
+
+ var oldValue = match.Groups[1].Value;
+ return content.Replace(oldValue, newValue);
+ }
+}
\ No newline at end of file
diff --git a/build/BenchmarkDotNet.Build/IHelpProvider.cs b/build/BenchmarkDotNet.Build/IHelpProvider.cs
new file mode 100644
index 0000000000..6fff1c061f
--- /dev/null
+++ b/build/BenchmarkDotNet.Build/IHelpProvider.cs
@@ -0,0 +1,6 @@
+namespace BenchmarkDotNet.Build;
+
+public interface IHelpProvider
+{
+ HelpInfo GetHelp();
+}
\ No newline at end of file
diff --git a/build/BenchmarkDotNet.Build/Meta/Repo.cs b/build/BenchmarkDotNet.Build/Meta/Repo.cs
new file mode 100644
index 0000000000..38215fcce8
--- /dev/null
+++ b/build/BenchmarkDotNet.Build/Meta/Repo.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Net.Http;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+
+namespace BenchmarkDotNet.Build.Meta;
+
+public static class Repo
+{
+ public const string Owner = "dotnet";
+ public const string Name = "BenchmarkDotNet";
+ public const string HttpsUrlBase = $"https://github.com/{Owner}/{Name}";
+ public const string HttpsGitUrl = $"{HttpsUrlBase}.git";
+
+ public const string ChangelogDetailsBranch = "docs-changelog-details";
+ public const string DocsStableBranch = "docs-stable";
+ public const string MasterBranch = "master";
+
+ public static async Task GetDependentProjectsNumber()
+ {
+ using var httpClient = new HttpClient();
+ const string url = $"{HttpsUrlBase}/network/dependents";
+ var response = await httpClient.GetAsync(new Uri(url));
+ var dependentsPage = await response.Content.ReadAsStringAsync();
+ var match = new Regex(@"([0-9\,]+)[\n\r\s]+Repositories").Match(dependentsPage);
+ var number = int.Parse(match.Groups[1].Value.Replace(",", ""));
+ number = number / 100 * 100;
+ return number;
+ }
+
+}
\ No newline at end of file
diff --git a/build/BenchmarkDotNet.Build/Meta/VersionHistory.cs b/build/BenchmarkDotNet.Build/Meta/VersionHistory.cs
new file mode 100644
index 0000000000..f7637e7439
--- /dev/null
+++ b/build/BenchmarkDotNet.Build/Meta/VersionHistory.cs
@@ -0,0 +1,20 @@
+using System.Linq;
+using Cake.Core.IO;
+using Cake.FileHelpers;
+
+namespace BenchmarkDotNet.Build.Meta;
+
+public class VersionHistory
+{
+ public string FirstCommit { get; }
+ public string[] StableVersions { get; }
+ public string CurrentVersion { get; }
+
+ public VersionHistory(BuildContext context, FilePath versionFilePath)
+ {
+ var lines = context.FileReadLines(versionFilePath).Where(line => !string.IsNullOrWhiteSpace(line)).ToArray();
+ FirstCommit = lines.First();
+ CurrentVersion = lines.Last();
+ StableVersions = lines.Skip(1).SkipLast(1).ToArray();
+ }
+}
\ No newline at end of file
diff --git a/build/BenchmarkDotNet.Build/Options/BoolOption.cs b/build/BenchmarkDotNet.Build/Options/BoolOption.cs
new file mode 100644
index 0000000000..3213ee8d54
--- /dev/null
+++ b/build/BenchmarkDotNet.Build/Options/BoolOption.cs
@@ -0,0 +1,27 @@
+using System;
+
+namespace BenchmarkDotNet.Build.Options;
+
+public class BoolOption : Option
+{
+ public BoolOption(string commandLineName) : base(commandLineName)
+ {
+ }
+
+ public override bool Resolve(BuildContext context)
+ {
+ if (!HasArgument(context))
+ return false;
+ var value = GetArgument(context);
+ if (value == null)
+ return true;
+ return !value.Equals(false.ToString(), StringComparison.OrdinalIgnoreCase);
+ }
+
+ public void AssertTrue(BuildContext context)
+ {
+ var value = Resolve(context);
+ if (!value)
+ throw new Exception($"{CommandLineName} is not specified");
+ }
+}
\ No newline at end of file
diff --git a/build/BenchmarkDotNet.Build/Options/IOption.cs b/build/BenchmarkDotNet.Build/Options/IOption.cs
new file mode 100644
index 0000000000..0a2046816e
--- /dev/null
+++ b/build/BenchmarkDotNet.Build/Options/IOption.cs
@@ -0,0 +1,8 @@
+namespace BenchmarkDotNet.Build.Options;
+
+public interface IOption
+{
+ string CommandLineName { get; }
+ string Description { get; }
+ string[] Aliases { get; }
+}
\ No newline at end of file
diff --git a/build/BenchmarkDotNet.Build/Options/KnownOptions.cs b/build/BenchmarkDotNet.Build/Options/KnownOptions.cs
new file mode 100644
index 0000000000..c5101e1d52
--- /dev/null
+++ b/build/BenchmarkDotNet.Build/Options/KnownOptions.cs
@@ -0,0 +1,54 @@
+namespace BenchmarkDotNet.Build.Options;
+
+public static class KnownOptions
+{
+ public static readonly StringOption Verbosity = new("--verbosity"
+ )
+ {
+ Description = "Specifies the amount of information to be displayed\n" +
+ "(Quiet, Minimal, Normal, Verbose, Diagnostic)",
+ Aliases = new[] { "-v" }
+ };
+
+ public static readonly BoolOption Exclusive = new("--exclusive")
+ {
+ Description = "Executes the target task without any dependencies",
+ Aliases = new[] { "-e" }
+ };
+
+ public static readonly BoolOption DocsPreview = new("--preview")
+ {
+ Description = "When specified, documentation changelog includes the upcoming version",
+ Aliases = new[] { "-p" }
+ };
+
+ public static readonly StringOption DocsDepth = new("--depth")
+ {
+ Description = "The number of last stable versions that requires changelog regenerations\n" +
+ "Use 'all' for all values. The default is zero.",
+ Aliases = new[] { "-d" }
+ };
+
+ public static readonly BoolOption Help = new("--help")
+ {
+ Description = "Prints help information",
+ Aliases = new[] { "-h" }
+ };
+
+ public static readonly BoolOption Stable = new("--stable")
+ {
+ Description = "Removes VersionSuffix in MSBuild settings",
+ Aliases = new[] { "-s" }
+ };
+
+ public static readonly StringOption NextVersion = new("--next-version")
+ {
+ Description = "Specifies next version number",
+ Aliases = new[] { "-n" }
+ };
+
+ public static readonly BoolOption Push = new("--push")
+ {
+ Description = "When specified, the task actually perform push to GitHub and nuget.org"
+ };
+}
\ No newline at end of file
diff --git a/build/BenchmarkDotNet.Build/Options/Option.cs b/build/BenchmarkDotNet.Build/Options/Option.cs
new file mode 100644
index 0000000000..4840af7ad2
--- /dev/null
+++ b/build/BenchmarkDotNet.Build/Options/Option.cs
@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Cake.Common;
+using Cake.Core;
+
+namespace BenchmarkDotNet.Build.Options;
+
+public abstract class Option : IOption
+{
+ public string CommandLineName { get; }
+ public string Description { get; init; } = "";
+ public string[] Aliases { get; init; } = Array.Empty();
+
+ private IEnumerable AllNames
+ {
+ get
+ {
+ yield return CommandLineName;
+ foreach (var alias in Aliases)
+ yield return alias;
+ }
+ }
+
+ private IEnumerable AllStrippedNames => AllNames.Select(name => name.TrimStart('-'));
+
+ protected Option(string commandLineName)
+ {
+ CommandLineName = commandLineName;
+ }
+
+ public abstract T Resolve(BuildContext context);
+
+ protected bool HasArgument(BuildContext context) => AllStrippedNames.Any(context.HasArgument);
+
+ protected string? GetArgument(BuildContext context) => AllStrippedNames
+ .Where(context.HasArgument)
+ .Select(name => context.Arguments.GetArgument(name))
+ .FirstOrDefault();
+}
\ No newline at end of file
diff --git a/build/BenchmarkDotNet.Build/Options/StringOption.cs b/build/BenchmarkDotNet.Build/Options/StringOption.cs
new file mode 100644
index 0000000000..657017dbe2
--- /dev/null
+++ b/build/BenchmarkDotNet.Build/Options/StringOption.cs
@@ -0,0 +1,29 @@
+using System;
+
+namespace BenchmarkDotNet.Build.Options;
+
+public class StringOption : Option
+{
+ public StringOption(string commandLineName) : base(commandLineName)
+ {
+ }
+
+
+ public override string Resolve(BuildContext context)
+ {
+ if (!HasArgument(context))
+ return "";
+ var value = GetArgument(context);
+ if (value == null || string.IsNullOrWhiteSpace(value))
+ return "";
+ return value.Trim();
+ }
+
+ public string AssertHasValue(BuildContext context)
+ {
+ var value = Resolve(context);
+ if (string.IsNullOrWhiteSpace(value))
+ throw new Exception($"{CommandLineName} is not specified");
+ return value;
+ }
+}
\ No newline at end of file
diff --git a/build/BenchmarkDotNet.Build/Program.cs b/build/BenchmarkDotNet.Build/Program.cs
new file mode 100644
index 0000000000..1ff1a26a7b
--- /dev/null
+++ b/build/BenchmarkDotNet.Build/Program.cs
@@ -0,0 +1,229 @@
+using BenchmarkDotNet.Build.Meta;
+using BenchmarkDotNet.Build.Options;
+using Cake.Common;
+using Cake.Frosting;
+
+namespace BenchmarkDotNet.Build;
+
+public static class Program
+{
+ public static int Main(string[] args)
+ {
+ var cakeArgs = CommandLineParser.Instance.Parse(args);
+ return cakeArgs == null
+ ? 0
+ : new CakeHost().UseContext().Run(cakeArgs);
+ }
+}
+
+[TaskName(Name)]
+[TaskDescription("Restore NuGet packages")]
+public class RestoreTask : FrostingTask, IHelpProvider
+{
+ private const string Name = "restore";
+
+ public override void Run(BuildContext context) => context.BuildRunner.Restore();
+
+ public HelpInfo GetHelp()
+ {
+ return new HelpInfo
+ {
+ Examples = new[]
+ {
+ new Example(Name)
+ }
+ };
+ }
+}
+
+[TaskName(Name)]
+[TaskDescription("Build BenchmarkDotNet.sln solution")]
+[IsDependentOn(typeof(RestoreTask))]
+public class BuildTask : FrostingTask, IHelpProvider
+{
+ private const string Name = "build";
+ public override void Run(BuildContext context) => context.BuildRunner.Build();
+
+ public HelpInfo GetHelp()
+ {
+ return new HelpInfo
+ {
+ Examples = new[]
+ {
+ new Example(Name).WithMsBuildArgument("Configuration", "Debug")
+ }
+ };
+ }
+}
+
+[TaskName(Name)]
+[TaskDescription("Run unit tests (fast)")]
+[IsDependentOn(typeof(BuildTask))]
+public class UnitTestsTask : FrostingTask, IHelpProvider
+{
+ private const string Name = "unit-tests";
+ public override void Run(BuildContext context) => context.UnitTestRunner.RunUnitTests();
+
+ public HelpInfo GetHelp()
+ {
+ return new HelpInfo
+ {
+ Examples = new[]
+ {
+ new Example(Name)
+ .WithArgument(KnownOptions.Exclusive)
+ .WithArgument(KnownOptions.Verbosity, "Diagnostic")
+ }
+ };
+ }
+}
+
+[TaskName(Name)]
+[TaskDescription("Run integration tests using .NET Framework 4.6.2+ (slow)")]
+[IsDependentOn(typeof(BuildTask))]
+public class InTestsFullTask : FrostingTask, IHelpProvider
+{
+ private const string Name = "in-tests-full";
+
+ public override bool ShouldRun(BuildContext context) => context.IsRunningOnWindows();
+
+ public override void Run(BuildContext context) => context.UnitTestRunner.RunInTests("net462");
+
+ public HelpInfo GetHelp() => new();
+}
+
+[TaskName(Name)]
+[TaskDescription("Run integration tests using .NET 7 (slow)")]
+[IsDependentOn(typeof(BuildTask))]
+public class InTestsCoreTask : FrostingTask, IHelpProvider
+{
+ private const string Name = "in-tests-core";
+ public override void Run(BuildContext context) => context.UnitTestRunner.RunInTests("net7.0");
+ public HelpInfo GetHelp() => new();
+}
+
+[TaskName(Name)]
+[TaskDescription("Run all unit and integration tests (slow)")]
+[IsDependentOn(typeof(UnitTestsTask))]
+[IsDependentOn(typeof(InTestsFullTask))]
+[IsDependentOn(typeof(InTestsCoreTask))]
+public class AllTestsTask : FrostingTask, IHelpProvider
+{
+ private const string Name = "all-tests";
+ public HelpInfo GetHelp() => new();
+}
+
+[TaskName(Name)]
+[TaskDescription("Pack Nupkg packages")]
+[IsDependentOn(typeof(BuildTask))]
+public class PackTask : FrostingTask, IHelpProvider
+{
+ private const string Name = "pack";
+ public override void Run(BuildContext context) => context.BuildRunner.Pack();
+
+ public HelpInfo GetHelp()
+ {
+ return new HelpInfo
+ {
+ Examples = new[]
+ {
+ new Example(Name)
+ .WithMsBuildArgument("VersionPrefix", "0.1.1729")
+ .WithMsBuildArgument("VersionSuffix", "preview"),
+ new Example(Name).WithArgument(KnownOptions.Stable)
+ }
+ };
+ }
+}
+
+[TaskName(Name)]
+[TaskDescription("Update generated documentation files")]
+public class DocsUpdateTask : FrostingTask, IHelpProvider
+{
+ private const string Name = "docs-update";
+ public override void Run(BuildContext context) => context.DocumentationRunner.Update();
+
+ public HelpInfo GetHelp()
+ {
+ return new HelpInfo
+ {
+ Description = $"This task updates the following files:\n" +
+ $"* README.md (the number of dependent projects number)\n" +
+ $"* Last changelog footer (if {KnownOptions.Stable.CommandLineName} is specified)\n" +
+ $"* All changelog details in docs/_changelog\n" +
+ $" (This dir is a cloned version of this repo from branch {Repo.ChangelogDetailsBranch})",
+ Options = new IOption[] { KnownOptions.DocsPreview, KnownOptions.DocsDepth },
+ EnvironmentVariables = new[] { EnvVar.GitHubToken },
+ Examples = new[]
+ {
+ new Example(Name)
+ .WithArgument(KnownOptions.DocsDepth, "3")
+ .WithArgument(KnownOptions.DocsPreview)
+ }
+ };
+ }
+}
+
+[TaskName(Name)]
+[TaskDescription("Prepare auxiliary documentation files")]
+public class DocsPrepareTask : FrostingTask, IHelpProvider
+{
+ private const string Name = "docs-prepare";
+ public override void Run(BuildContext context) => context.DocumentationRunner.Prepare();
+
+ public HelpInfo GetHelp()
+ {
+ return new HelpInfo
+ {
+ Options = new IOption[] { KnownOptions.DocsPreview },
+ Examples = new[]
+ {
+ new Example(Name).WithArgument(KnownOptions.DocsPreview)
+ }
+ };
+ }
+}
+
+[TaskName(Name)]
+[TaskDescription("Build final documentation")]
+[IsDependentOn(typeof(DocsPrepareTask))]
+public class DocsBuildTask : FrostingTask, IHelpProvider
+{
+ private const string Name = "docs-build";
+ public override void Run(BuildContext context) => context.DocumentationRunner.Build();
+
+ public HelpInfo GetHelp() => new()
+ {
+ Description = "The 'build' task should be run manually to build api docs",
+ Options = new IOption[] { KnownOptions.DocsPreview },
+ Examples = new[]
+ {
+ new Example(Name).WithArgument(KnownOptions.DocsPreview)
+ }
+ };
+}
+
+[TaskName(Name)]
+[TaskDescription("Release new version")]
+[IsDependentOn(typeof(BuildTask))]
+[IsDependentOn(typeof(PackTask))]
+[IsDependentOn(typeof(DocsUpdateTask))]
+[IsDependentOn(typeof(DocsBuildTask))]
+public class ReleaseTask : FrostingTask, IHelpProvider
+{
+ private const string Name = "release";
+ public override void Run(BuildContext context) => context.ReleaseRunner.Run();
+
+ public HelpInfo GetHelp() => new()
+ {
+ Options = new IOption[] { KnownOptions.NextVersion, KnownOptions.Push },
+ EnvironmentVariables = new[] { EnvVar.GitHubToken, EnvVar.NuGetToken },
+ Examples = new[]
+ {
+ new Example(Name)
+ .WithArgument(KnownOptions.Stable)
+ .WithArgument(KnownOptions.NextVersion, "v0.1.1729")
+ .WithArgument(KnownOptions.Push)
+ }
+ };
+}
\ No newline at end of file
diff --git a/build/BenchmarkDotNet.Build/Runners/BuildRunner.cs b/build/BenchmarkDotNet.Build/Runners/BuildRunner.cs
new file mode 100644
index 0000000000..01c490fce3
--- /dev/null
+++ b/build/BenchmarkDotNet.Build/Runners/BuildRunner.cs
@@ -0,0 +1,79 @@
+using Cake.Common.Build;
+using Cake.Common.Diagnostics;
+using Cake.Common.IO;
+using Cake.Common.Tools.DotNet;
+using Cake.Common.Tools.DotNet.Build;
+using Cake.Common.Tools.DotNet.Pack;
+using Cake.Common.Tools.DotNet.Restore;
+using Cake.Core;
+using Cake.Core.IO;
+
+namespace BenchmarkDotNet.Build.Runners;
+
+public class BuildRunner
+{
+ private readonly BuildContext context;
+
+ public BuildRunner(BuildContext context)
+ {
+ this.context = context;
+ }
+
+ public void Restore()
+ {
+ context.DotNetRestore(context.SolutionFile.FullPath,
+ new DotNetRestoreSettings
+ {
+ MSBuildSettings = context.MsBuildSettingsRestore
+ });
+ }
+
+ public void Build()
+ {
+ context.Information("BuildSystemProvider: " + context.BuildSystem().Provider);
+ context.DotNetBuild(context.SolutionFile.FullPath, new DotNetBuildSettings
+ {
+ NoRestore = true,
+ DiagnosticOutput = true,
+ MSBuildSettings = context.MsBuildSettingsBuild,
+ Configuration = context.BuildConfiguration,
+ Verbosity = context.BuildVerbosity
+ });
+ }
+
+ public void BuildProjectSilent(FilePath projectFile)
+ {
+ context.DotNetBuild(projectFile.FullPath, new DotNetBuildSettings
+ {
+ NoRestore = false,
+ DiagnosticOutput = false,
+ MSBuildSettings = context.MsBuildSettingsBuild,
+ Configuration = context.BuildConfiguration,
+ Verbosity = DotNetVerbosity.Quiet
+ });
+ }
+
+ public void Pack()
+ {
+ context.CleanDirectory(context.ArtifactsDirectory);
+
+ var settingsSrc = new DotNetPackSettings
+ {
+ OutputDirectory = context.ArtifactsDirectory,
+ ArgumentCustomization = args => args.Append("--include-symbols").Append("-p:SymbolPackageFormat=snupkg"),
+ MSBuildSettings = context.MsBuildSettingsPack,
+ Configuration = context.BuildConfiguration
+ };
+
+ foreach (var project in context.AllPackableSrcProjects)
+ context.DotNetPack(project.FullPath, settingsSrc);
+
+ var settingsTemplate = new DotNetPackSettings
+ {
+ OutputDirectory = context.ArtifactsDirectory,
+ MSBuildSettings = context.MsBuildSettingsPack,
+ Configuration = context.BuildConfiguration
+ };
+ context.DotNetPack(context.TemplatesTestsProjectFile.FullPath, settingsTemplate);
+ }
+}
\ No newline at end of file
diff --git a/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs b/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs
new file mode 100644
index 0000000000..6883abe79a
--- /dev/null
+++ b/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs
@@ -0,0 +1,326 @@
+using System;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Text;
+using BenchmarkDotNet.Build.Helpers;
+using BenchmarkDotNet.Build.Meta;
+using BenchmarkDotNet.Build.Options;
+using Cake.Common.Diagnostics;
+using Cake.Common.IO;
+using Cake.Core.IO;
+using Cake.FileHelpers;
+
+namespace BenchmarkDotNet.Build.Runners;
+
+public class DocumentationRunner
+{
+ private readonly BuildContext context;
+ private readonly bool preview;
+ private readonly string depth;
+
+ public DirectoryPath ChangelogDirectory { get; }
+ public DirectoryPath ChangelogSrcDirectory { get; }
+ private readonly DirectoryPath changelogDetailsDirectory;
+ private readonly DirectoryPath docsGeneratedDirectory;
+
+ private readonly FilePath docfxJsonFile;
+ private readonly FilePath redirectFile;
+ private readonly FilePath readmeFile;
+ private readonly FilePath rootIndexFile;
+ private readonly FilePath changelogIndexFile;
+ private readonly FilePath changelogFullFile;
+ private readonly FilePath changelogTocFile;
+ private readonly FilePath lastFooterFile;
+
+ public DocumentationRunner(BuildContext context)
+ {
+ this.context = context;
+ preview = KnownOptions.DocsPreview.Resolve(context);
+ depth = KnownOptions.DocsDepth.Resolve(context);
+
+ var docsDirectory = context.RootDirectory.Combine("docs");
+ ChangelogDirectory = docsDirectory.Combine("changelog");
+ ChangelogSrcDirectory = docsDirectory.Combine("_changelog");
+ changelogDetailsDirectory = ChangelogSrcDirectory.Combine("details");
+ docsGeneratedDirectory = docsDirectory.Combine("_site");
+
+ redirectFile = docsDirectory.Combine("_redirects").CombineWithFilePath("_redirects");
+ docfxJsonFile = docsDirectory.CombineWithFilePath("docfx.json");
+ readmeFile = context.RootDirectory.CombineWithFilePath("README.md");
+ rootIndexFile = docsDirectory.CombineWithFilePath("index.md");
+ changelogIndexFile = ChangelogDirectory.CombineWithFilePath("index.md");
+ changelogFullFile = ChangelogDirectory.CombineWithFilePath("full.md");
+ changelogTocFile = ChangelogDirectory.CombineWithFilePath("toc.yml");
+ lastFooterFile = ChangelogSrcDirectory.Combine("footer")
+ .CombineWithFilePath("v" + context.VersionHistory.CurrentVersion + ".md");
+ }
+
+ public void Update()
+ {
+ EnvVar.GitHubToken.AssertHasValue();
+
+ UpdateReadme();
+ UpdateLastFooter();
+
+ EnsureChangelogDetailsExist();
+
+ var history = context.VersionHistory;
+ var stableVersionCount = history.StableVersions.Length;
+
+ if (depth.Equals("all", StringComparison.OrdinalIgnoreCase))
+ {
+ DocfxChangelogDownload(
+ history.StableVersions.First(),
+ history.FirstCommit);
+
+ for (var i = 1; i < stableVersionCount; i++)
+ DocfxChangelogDownload(
+ history.StableVersions[i],
+ history.StableVersions[i - 1]);
+ }
+ else if (depth != "")
+ {
+ if (!int.TryParse(depth, CultureInfo.InvariantCulture, out var depthValue))
+ throw new InvalidDataException($"Failed to parse the depth value: '{depth}'");
+
+ for (var i = Math.Max(stableVersionCount - depthValue, 1); i < stableVersionCount; i++)
+ DocfxChangelogDownload(
+ history.StableVersions[i],
+ history.StableVersions[i - 1]);
+ }
+
+ if (preview)
+ DocfxChangelogDownload(
+ history.CurrentVersion,
+ history.StableVersions.Last(),
+ "HEAD");
+ }
+
+ private void UpdateReadme()
+ {
+ var content = Utils.ApplyRegex(
+ context.FileReadText(context.ReadmeFile),
+ @"\[(\d+)\+ GitHub projects\]",
+ Repo.GetDependentProjectsNumber().Result.ToString()
+ );
+
+ context.GenerateFile(context.ReadmeFile, content, true);
+ }
+
+ public void Prepare()
+ {
+ foreach (var version in context.VersionHistory.StableVersions)
+ DocfxChangelogGenerate(version);
+ if (preview)
+ DocfxChangelogGenerate(context.VersionHistory.CurrentVersion);
+
+ GenerateIndexMd();
+ GenerateChangelogIndex();
+ GenerateChangelogFull();
+ GenerateChangelogToc();
+ }
+
+ public void Build()
+ {
+ RunDocfx();
+ GenerateRedirects();
+ }
+
+ private void RunDocfx()
+ {
+ context.Information($"Running docfx for '{docfxJsonFile}'");
+
+ var currentDirectory = Directory.GetCurrentDirectory();
+ Directory.SetCurrentDirectory(docfxJsonFile.GetDirectory().FullPath);
+ Microsoft.DocAsCode.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(docfxJsonFile.FullPath).Wait();
+ Microsoft.DocAsCode.Docset.Build(docfxJsonFile.FullPath).Wait();
+ Directory.SetCurrentDirectory(currentDirectory);
+ }
+
+ private void GenerateIndexMd()
+ {
+ var content = new StringBuilder();
+ content.AppendLine("---");
+ content.AppendLine("title: Home");
+ content.AppendLine("---");
+ content.Append(context.FileReadText(readmeFile));
+
+ context.GenerateFile(rootIndexFile, content);
+ }
+
+ private void GenerateChangelogToc()
+ {
+ var content = new StringBuilder();
+
+ if (preview)
+ {
+ content.AppendLine($"- name: v{context.VersionHistory.CurrentVersion}");
+ content.AppendLine($" href: v{context.VersionHistory.CurrentVersion}.md");
+ }
+
+ foreach (var version in context.VersionHistory.StableVersions.Reverse())
+ {
+ content.AppendLine($"- name: v{version}");
+ content.AppendLine($" href: v{version}.md");
+ }
+
+ content.AppendLine("- name: Full ChangeLog");
+ content.AppendLine(" href: full.md");
+
+ context.GenerateFile(changelogTocFile, content);
+ }
+
+ private void GenerateChangelogFull()
+ {
+ var content = new StringBuilder();
+ content.AppendLine("---");
+ content.AppendLine("uid: changelog.full");
+ content.AppendLine("---");
+ content.AppendLine("");
+ content.AppendLine("# Full ChangeLog");
+ content.AppendLine("");
+ if (preview)
+ content.AppendLine(
+ $"[!include[v{context.VersionHistory.CurrentVersion}](v{context.VersionHistory.CurrentVersion}.md)]");
+ foreach (var version in context.VersionHistory.StableVersions.Reverse())
+ content.AppendLine($"[!include[v{version}](v{version}.md)]");
+
+ context.GenerateFile(changelogFullFile, content);
+ }
+
+ private void GenerateChangelogIndex()
+ {
+ var content = new StringBuilder();
+ content.AppendLine("---");
+ content.AppendLine("uid: changelog");
+ content.AppendLine("---");
+ content.AppendLine("");
+ content.AppendLine("# ChangeLog");
+ content.AppendLine("");
+ if (preview)
+ content.AppendLine($"* @changelog.v{context.VersionHistory.CurrentVersion}");
+ foreach (var version in context.VersionHistory.StableVersions.Reverse())
+ content.AppendLine($"* @changelog.v{version}");
+ content.AppendLine("* @changelog.full");
+
+ context.GenerateFile(changelogIndexFile, content);
+ }
+
+ private void DocfxChangelogGenerate(string version)
+ {
+ EnsureChangelogDetailsExist();
+ var md = $"v{version}.md";
+ var header = ChangelogSrcDirectory.Combine("header").CombineWithFilePath(md);
+ var footer = ChangelogSrcDirectory.Combine("footer").CombineWithFilePath(md);
+ var details = ChangelogSrcDirectory.Combine("details").CombineWithFilePath(md);
+ var release = ChangelogDirectory.CombineWithFilePath(md);
+
+ var content = new StringBuilder();
+ content.AppendLine("---");
+ content.AppendLine("uid: changelog.v" + version);
+ content.AppendLine("---");
+ content.AppendLine("");
+ content.AppendLine("# BenchmarkDotNet v" + version);
+ content.AppendLine("");
+ content.AppendLine("");
+
+ if (context.FileExists(header))
+ {
+ content.AppendLine(context.FileReadText(header));
+ content.AppendLine("");
+ content.AppendLine("");
+ }
+
+ if (context.FileExists(details))
+ {
+ content.AppendLine(context.FileReadText(details));
+ content.AppendLine("");
+ content.AppendLine("");
+ }
+
+ if (context.FileExists(footer))
+ {
+ content.AppendLine("## Additional details");
+ content.AppendLine("");
+ content.AppendLine(context.FileReadText(footer));
+ }
+
+ context.GenerateFile(release, content.ToString());
+ }
+
+ private void EnsureChangelogDetailsExist(bool forceClean = false)
+ {
+ if (context.DirectoryExists(changelogDetailsDirectory) && forceClean)
+ context.DeleteDirectory(
+ changelogDetailsDirectory,
+ new DeleteDirectorySettings { Force = true, Recursive = true });
+
+ if (!context.DirectoryExists(changelogDetailsDirectory))
+ context.GitRunner.Clone(changelogDetailsDirectory, Repo.HttpsGitUrl, Repo.ChangelogDetailsBranch);
+ }
+
+ private void DocfxChangelogDownload(string version, string versionPrevious, string lastCommit = "")
+ {
+ EnsureChangelogDetailsExist();
+ context.Information($"Downloading changelog details for v{version}");
+ ChangeLogBuilder.Run(context, changelogDetailsDirectory, version, versionPrevious, lastCommit);
+ }
+
+ private void GenerateRedirects()
+ {
+ if (!context.FileExists(redirectFile))
+ {
+ context.Error($"Redirect file '{redirectFile}' does not exist");
+ return;
+ }
+
+ context.EnsureDirectoryExists(docsGeneratedDirectory);
+
+ var redirects = context.FileReadLines(redirectFile)
+ .Select(line => line.Split(' '))
+ .Select(parts => (source: parts[0], target: parts[1]))
+ .ToList();
+
+ foreach (var (source, target) in redirects)
+ {
+ var fileName = source.StartsWith("/") || source.StartsWith("\\") ? source[1..] : source;
+ var fullFilePath = docsGeneratedDirectory.CombineWithFilePath(fileName);
+ var content =
+ $"" +
+ $"" +
+ $"" +
+ $"{target}" +
+ $"" +
+ $"" +
+ $"" +
+ $"" +
+ $"";
+ context.EnsureDirectoryExists(fullFilePath.GetDirectory());
+ context.GenerateFile(fullFilePath, content);
+ }
+ }
+
+ private void UpdateLastFooter()
+ {
+ var version = context.VersionHistory.CurrentVersion;
+ var previousVersion = context.VersionHistory.StableVersions.Last();
+ var date = KnownOptions.Stable.Resolve(context)
+ ? DateTime.Now.ToString("MMMM dd, yyyy", CultureInfo.InvariantCulture)
+ : "TBA";
+
+ var content = new StringBuilder();
+ content.AppendLine($"_Date: {date}_");
+ content.AppendLine("");
+ content.AppendLine(
+ $"_Milestone: [v{version}](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone%3Av{version})_");
+ content.AppendLine(
+ $"([List of commits](https://github.com/dotnet/BenchmarkDotNet/compare/v{previousVersion}...v{version}))");
+ content.AppendLine("");
+ content.AppendLine("_NuGet Packages:_");
+ foreach (var packageName in context.NuGetPackageNames)
+ content.AppendLine($"* https://www.nuget.org/packages/{packageName}/{version}");
+
+ context.GenerateFile(lastFooterFile, content);
+ }
+}
\ No newline at end of file
diff --git a/build/BenchmarkDotNet.Build/Runners/GitRunner.cs b/build/BenchmarkDotNet.Build/Runners/GitRunner.cs
new file mode 100644
index 0000000000..37ab8d5c0b
--- /dev/null
+++ b/build/BenchmarkDotNet.Build/Runners/GitRunner.cs
@@ -0,0 +1,104 @@
+using System;
+using Cake.Common;
+using Cake.Common.Diagnostics;
+using Cake.Core.IO;
+using Cake.Git;
+
+namespace BenchmarkDotNet.Build.Runners;
+
+// Cake.Git 3.0.0 may experience the following issues on macOS:
+// > Error: System.TypeInitializationException: The type initializer for 'LibGit2Sharp.Core.NativeMethods' threw an exception.
+// > ---> System.DllNotFoundException: Unable to load shared library 'git2-6777db8' or one of its dependencies. In order to help diagnose loading problems, consider setting the DYLD_PRINT_LIBRARIES environment variable
+// In order to workaround this problem, we provide command-line fallbacks for all the used commands.
+public class GitRunner
+{
+ private BuildContext context;
+
+ public GitRunner(BuildContext context)
+ {
+ this.context = context;
+ }
+
+ public void Clone(DirectoryPath workDirectoryPath, string sourceUrl, string branchName)
+ {
+ context.Information($"[GitClone]");
+ context.Information($" Repo: {sourceUrl}");
+ context.Information($" Branch: {branchName}");
+ context.Information($" Path: {workDirectoryPath}");
+
+ var settings = new GitCloneSettings { Checkout = true, BranchName = branchName };
+ RunCommand(
+ () => context.GitClone(sourceUrl, workDirectoryPath, settings),
+ $"clone -b {branchName} {sourceUrl} {workDirectoryPath}");
+ }
+
+ public void Tag(string tagName)
+ {
+ context.Information("[GitTag]");
+ context.Information($" Path: {context.RootDirectory}");
+ context.Information($" TagName: {tagName}");
+
+ RunCommand(
+ () => context.GitTag(context.RootDirectory, tagName),
+ $"tag {tagName}");
+ }
+
+ public void BranchMove(string branchName, string target)
+ {
+ context.Information("[GitBranchMove]");
+ context.Information($" Branch: {branchName}");
+ context.Information($" Target: {target}");
+ RunCommand($"branch -f {branchName} {target}");
+ }
+
+ public void Commit(string message)
+ {
+ context.Information("[GitCommit]");
+ context.Information($" Message: {message}");
+ RunCommand($"commit --all --message \"{message}\"");
+ }
+
+ public void Push(string target, bool force = false)
+ {
+ context.Information("[GitPush]");
+ context.Information($" Target: {target}");
+ context.Information($" Force: {force}");
+ context.RunOnlyInPushMode(() =>
+ {
+ var forceFlag = force ? " --force" : "";
+ RunCommand($"push origin {target}{forceFlag}");
+ });
+ }
+
+ private void RunCommand(string commandLineArgs) => RunCommand(null, commandLineArgs);
+
+ private void RunCommand(Action? call, string commandLineArgs)
+ {
+ try
+ {
+ if (call == null)
+ throw new NotImplementedException();
+ call();
+ context.Information(" Success");
+ }
+ catch (Exception e)
+ {
+ if (e is not NotImplementedException)
+ context.Information($" Failed to perform operation via API ({e.Message})");
+ try
+ {
+ context.Information($" Run command in terminal: 'git {commandLineArgs}'");
+ context.StartProcess("git", new ProcessSettings
+ {
+ Arguments = commandLineArgs,
+ WorkingDirectory = context.RootDirectory
+ });
+ context.Information(" Success");
+ }
+ catch (Exception e2)
+ {
+ throw new Exception($"Failed to run 'git ${commandLineArgs}'", e2);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/build/BenchmarkDotNet.Build/Runners/ReleaseRunner.cs b/build/BenchmarkDotNet.Build/Runners/ReleaseRunner.cs
new file mode 100644
index 0000000000..b1d2e191e4
--- /dev/null
+++ b/build/BenchmarkDotNet.Build/Runners/ReleaseRunner.cs
@@ -0,0 +1,163 @@
+using System;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using BenchmarkDotNet.Build.Helpers;
+using BenchmarkDotNet.Build.Meta;
+using BenchmarkDotNet.Build.Options;
+using Cake.Common.Diagnostics;
+using Cake.Common.IO;
+using Cake.Common.Tools.DotNet;
+using Cake.Common.Tools.DotNet.NuGet.Push;
+using Cake.FileHelpers;
+using Octokit;
+
+namespace BenchmarkDotNet.Build.Runners;
+
+public class ReleaseRunner
+{
+ private readonly BuildContext context;
+
+ public ReleaseRunner(BuildContext context)
+ {
+ this.context = context;
+ }
+
+ public void Run()
+ {
+ KnownOptions.Stable.AssertTrue(context);
+
+ EnvVar.GitHubToken.AssertHasValue();
+ if (KnownOptions.Push.Resolve(context))
+ EnvVar.NuGetToken.AssertHasValue();
+ else
+ EnvVar.NuGetToken.SetEmpty();
+
+ var nextVersion = KnownOptions.NextVersion.AssertHasValue(context);
+ var currentVersion = context.VersionHistory.CurrentVersion;
+ var tag = "v" + currentVersion;
+
+ context.GitRunner.Tag(tag);
+
+ // Upgrade current version and commit changes
+ UpdateVersionsTxt(nextVersion);
+ UpdateCommonProps(nextVersion);
+ context.Information($"Building {context.TemplatesTestsProjectFile}");
+ context.BuildRunner.BuildProjectSilent(context.TemplatesTestsProjectFile);
+ context.GitRunner.Commit($"Set next BenchmarkDotNet version: {nextVersion}");
+
+ UpdateMilestones(nextVersion).Wait();
+
+ context.GitRunner.BranchMove(Repo.DocsStableBranch, "HEAD");
+ context.GitRunner.Push(Repo.MasterBranch);
+ context.GitRunner.Push(Repo.DocsStableBranch, true);
+ context.GitRunner.Push(tag);
+
+ PushNupkg();
+
+ PublishGitHubRelease();
+ }
+
+ private void UpdateVersionsTxt(string versionToAppend)
+ {
+ var content = context.FileReadText(context.VersionsFile).Trim();
+ context.GenerateFile(context.VersionsFile, $"{content}\n{versionToAppend}");
+ }
+
+ private void UpdateCommonProps(string newCurrentVersion)
+ {
+ var content = Utils.ApplyRegex(
+ context.FileReadText(context.CommonPropsFile),
+ @"([\d\.]+)",
+ newCurrentVersion);
+ context.GenerateFile(context.CommonPropsFile, content);
+ }
+
+ private async Task UpdateMilestones(string nextVersion)
+ {
+ var currentVersion = context.VersionHistory.CurrentVersion;
+
+ var client = Utils.CreateGitHubClient();
+ var allMilestones = await client.Issue.Milestone.GetAllForRepository(Repo.Owner, Repo.Name);
+ var currentMilestone = allMilestones.First(milestone => milestone.Title == $"v{currentVersion}");
+
+ context.Information($"[GitHub] Close milestone v{currentVersion}");
+ context.RunOnlyInPushMode(() =>
+ {
+ var milestoneUpdate = new MilestoneUpdate { State = ItemState.Closed, DueOn = DateTimeOffset.Now };
+ client.Issue.Milestone.Update(Repo.Owner, Repo.Name, currentMilestone.Number, milestoneUpdate).Wait();
+ });
+
+ context.Information($"[GitHub] Create milestone v{nextVersion}");
+ context.RunOnlyInPushMode(() =>
+ {
+ client.Issue.Milestone.Create(Repo.Owner, Repo.Name, new NewMilestone($"v{nextVersion}")).Wait();
+ });
+ }
+
+ private void PushNupkg()
+ {
+ var nuGetToken = EnvVar.NuGetToken.GetValue();
+
+ var files = context
+ .GetFiles(context.ArtifactsDirectory.CombineWithFilePath("*").FullPath)
+ .OrderBy(file => file.FullPath);
+ var settings = new DotNetNuGetPushSettings
+ {
+ ApiKey = nuGetToken,
+ SymbolApiKey = nuGetToken,
+ Source = "https://api.nuget.org/v3/index.json"
+ };
+
+ foreach (var file in files)
+ {
+ context.Information($"Push: {file}");
+ context.RunOnlyInPushMode(() => context.DotNetNuGetPush(file, settings));
+ }
+ }
+
+ private void PublishGitHubRelease()
+ {
+ var version = context.VersionHistory.CurrentVersion;
+ var tag = $"v{version}";
+ var notesFile = context.DocumentationRunner
+ .ChangelogSrcDirectory
+ .Combine("header")
+ .CombineWithFilePath($"{tag}.md");
+ var notes = $"Full changelog: https://benchmarkdotnet.org/changelog/{tag}.html\n\n" +
+ PreprocessMarkdown(context.FileReadText(notesFile));
+
+ context.Information($"[GitHub] Creating release '{version}'");
+ var client = Utils.CreateGitHubClient();
+ context.RunOnlyInPushMode(() =>
+ {
+ client.Repository.Release.Create(Repo.Owner, Repo.Name, new NewRelease(tag)
+ {
+ Name = version,
+ Draft = false,
+ Prerelease = false,
+ GenerateReleaseNotes = false,
+ Body = notes
+ }).Wait();
+ context.Information(" Success");
+ });
+ }
+
+ private static string PreprocessMarkdown(string content)
+ {
+ var lines = content.Split("\n");
+ var newContent = new StringBuilder();
+ for (var i = 0; i < lines.Length; i++)
+ {
+ newContent.Append(lines[i]);
+ if (i == lines.Length - 1)
+ continue;
+ if (!lines[i].EndsWith(" ") && lines[i + 1].StartsWith(" "))
+ continue;
+ newContent.Append("\n");
+ }
+
+ return newContent.ToString();
+ }
+}
\ No newline at end of file
diff --git a/build/BenchmarkDotNet.Build/Runners/UnitTestRunner.cs b/build/BenchmarkDotNet.Build/Runners/UnitTestRunner.cs
new file mode 100644
index 0000000000..48d5183e14
--- /dev/null
+++ b/build/BenchmarkDotNet.Build/Runners/UnitTestRunner.cs
@@ -0,0 +1,74 @@
+using BenchmarkDotNet.Build.Helpers;
+using Cake.Common;
+using Cake.Common.Diagnostics;
+using Cake.Common.Tools.DotNet;
+using Cake.Common.Tools.DotNet.Test;
+using Cake.Core.IO;
+
+namespace BenchmarkDotNet.Build.Runners;
+
+public class UnitTestRunner
+{
+ private readonly BuildContext context;
+
+ private FilePath UnitTestsProjectFile { get; }
+ private FilePath IntegrationTestsProjectFile { get; }
+ private DirectoryPath TestOutputDirectory { get; }
+
+ public UnitTestRunner(BuildContext context)
+ {
+ this.context = context;
+ UnitTestsProjectFile = context.RootDirectory
+ .Combine("tests")
+ .Combine("BenchmarkDotNet.Tests")
+ .CombineWithFilePath("BenchmarkDotNet.Tests.csproj");
+ IntegrationTestsProjectFile = context.RootDirectory
+ .Combine("tests")
+ .Combine("BenchmarkDotNet.IntegrationTests")
+ .CombineWithFilePath("BenchmarkDotNet.IntegrationTests.csproj");
+ TestOutputDirectory = context.RootDirectory
+ .Combine("TestResults");
+ }
+
+ private DotNetTestSettings GetTestSettingsParameters(FilePath logFile, string tfm)
+ {
+ var settings = new DotNetTestSettings
+ {
+ Configuration = context.BuildConfiguration,
+ Framework = tfm,
+ NoBuild = true,
+ NoRestore = true,
+ Loggers = new[] { "trx", $"trx;LogFileName={logFile.FullPath}", "console;verbosity=detailed" },
+ EnvironmentVariables =
+ {
+ ["Platform"] = "" // force the tool to not look for the .dll in platform-specific directory
+ }
+ };
+ return settings;
+ }
+
+ private void RunTests(FilePath projectFile, string alias, string tfm)
+ {
+ var os = Utils.GetOs();
+ var trxFileName = $"{os}-{alias}-{tfm}.trx";
+ var trxFile = TestOutputDirectory.CombineWithFilePath(trxFileName);
+ var settings = GetTestSettingsParameters(trxFile, tfm);
+
+ context.Information($"Run tests for {projectFile} ({tfm}), result file: '{trxFile}'");
+ context.DotNetTest(projectFile.FullPath, settings);
+ }
+
+ private void RunUnitTests(string tfm) => RunTests(UnitTestsProjectFile, "unit", tfm);
+
+ public void RunUnitTests()
+ {
+ var targetFrameworks = context.IsRunningOnWindows()
+ ? new[] { "net462", "net7.0" }
+ : new[] { "net7.0" };
+
+ foreach (var targetFramework in targetFrameworks)
+ RunUnitTests(targetFramework);
+ }
+
+ public void RunInTests(string tfm) => RunTests(IntegrationTestsProjectFile, "integration", tfm);
+}
\ No newline at end of file
diff --git a/build/Program.cs b/build/Program.cs
deleted file mode 100644
index c99c1a5a5e..0000000000
--- a/build/Program.cs
+++ /dev/null
@@ -1,556 +0,0 @@
-using System.IO;
-using System.Linq;
-using System.Text;
-using Build;
-using Cake.Common;
-using Cake.Common.Build;
-using Cake.Common.Build.AppVeyor;
-using Cake.Common.Diagnostics;
-using Cake.Common.IO;
-using Cake.Common.Tools.DotNet;
-using Cake.Common.Tools.DotNet.Build;
-using Cake.Common.Tools.DotNet.MSBuild;
-using Cake.Common.Tools.DotNet.Pack;
-using Cake.Common.Tools.DotNet.Restore;
-using Cake.Common.Tools.DotNet.Test;
-using Cake.Core;
-using Cake.Core.IO;
-using Cake.FileHelpers;
-using Cake.Frosting;
-
-public static class Program
-{
- public static int Main(string[] args)
- {
- return new CakeHost()
- .UseContext()
- .Run(args);
- }
-}
-
-public class BuildContext : FrostingContext
-{
- public string BuildConfiguration { get; set; }
- public bool SkipTests { get; set; }
- public bool SkipSlowTests { get; set; }
- public string TargetVersion { get; set; }
-
- public DirectoryPath RootDirectory { get; }
- public DirectoryPath ArtifactsDirectory { get; }
- public DirectoryPath ToolsDirectory { get; }
- public DirectoryPath DocsDirectory { get; }
- public FilePath DocfxJsonFile { get; }
- public DirectoryPath TestOutputDirectory { get; }
-
- public DirectoryPath ChangeLogDirectory { get; }
- public DirectoryPath ChangeLogGenDirectory { get; }
-
- public DirectoryPath RedirectRootDirectory { get; }
- public DirectoryPath RedirectTargetDirectory { get; }
-
- public FilePath SolutionFile { get; }
- public FilePath UnitTestsProjectFile { get; }
- public FilePath IntegrationTestsProjectFile { get; }
- public FilePath TemplatesTestsProjectFile { get; }
- public FilePathCollection AllPackableSrcProjects { get; }
-
- public DotNetMSBuildSettings MsBuildSettingsRestore { get; }
- public DotNetMSBuildSettings MsBuildSettingsBuild { get; }
- public DotNetMSBuildSettings MsBuildSettingsPack { get; }
-
- private IAppVeyorProvider AppVeyor => this.BuildSystem().AppVeyor;
- public bool IsRunningOnAppVeyor => AppVeyor.IsRunningOnAppVeyor;
- public bool IsOnAppVeyorAndNotPr => IsRunningOnAppVeyor && !AppVeyor.Environment.PullRequest.IsPullRequest;
-
- public bool IsOnAppVeyorAndBdnNightlyCiCd => IsOnAppVeyorAndNotPr &&
- AppVeyor.Environment.Repository.Branch == "master" &&
- this.IsRunningOnWindows();
-
- public bool IsLocalBuild => this.BuildSystem().IsLocalBuild;
- public bool IsCiBuild => !this.BuildSystem().IsLocalBuild;
-
- public BuildContext(ICakeContext context)
- : base(context)
- {
- BuildConfiguration = context.Argument("Configuration", "Release");
- SkipTests = context.Argument("SkipTests", false);
- SkipSlowTests = context.Argument("SkipSlowTests", false);
- TargetVersion = context.Argument("Version", "");
-
- RootDirectory = new DirectoryPath(new DirectoryInfo(Directory.GetCurrentDirectory()).Parent.FullName);
- ArtifactsDirectory = RootDirectory.Combine("artifacts");
- ToolsDirectory = RootDirectory.Combine("tools");
- DocsDirectory = RootDirectory.Combine("docs");
- DocfxJsonFile = DocsDirectory.CombineWithFilePath("docfx.json");
- TestOutputDirectory = RootDirectory.Combine("TestResults");
-
- ChangeLogDirectory = RootDirectory.Combine("docs").Combine("changelog");
- ChangeLogGenDirectory = RootDirectory.Combine("docs").Combine("_changelog");
-
- RedirectRootDirectory = RootDirectory.Combine("docs").Combine("_redirects");
- RedirectTargetDirectory = RootDirectory.Combine("docs").Combine("_site");
-
- SolutionFile = RootDirectory.CombineWithFilePath("BenchmarkDotNet.sln");
- UnitTestsProjectFile = RootDirectory.Combine("tests").Combine("BenchmarkDotNet.Tests")
- .CombineWithFilePath("BenchmarkDotNet.Tests.csproj");
- IntegrationTestsProjectFile = RootDirectory.Combine("tests").Combine("BenchmarkDotNet.IntegrationTests")
- .CombineWithFilePath("BenchmarkDotNet.IntegrationTests.csproj");
- TemplatesTestsProjectFile = RootDirectory.Combine("templates")
- .CombineWithFilePath("BenchmarkDotNet.Templates.csproj");
- AllPackableSrcProjects = new FilePathCollection(context.GetFiles(RootDirectory.FullPath + "/src/**/*.csproj")
- .Where(p => !p.FullPath.Contains("Disassembler")));
-
- MsBuildSettingsRestore = new DotNetMSBuildSettings();
- MsBuildSettingsBuild = new DotNetMSBuildSettings();
- MsBuildSettingsPack = new DotNetMSBuildSettings();
-
- if (IsCiBuild)
- {
- System.Environment.SetEnvironmentVariable("BDN_CI_BUILD", "true");
-
- MsBuildSettingsBuild.MaxCpuCount = 1;
- MsBuildSettingsBuild.WithProperty("UseSharedCompilation", "false");
- }
-
- if (!string.IsNullOrEmpty(TargetVersion))
- {
- MsBuildSettingsRestore.WithProperty("Version", TargetVersion);
- MsBuildSettingsBuild.WithProperty("Version", TargetVersion);
- MsBuildSettingsPack.WithProperty("Version", TargetVersion);
- }
-
- // NativeAOT build requires VS C++ tools to be added to $path via vcvars64.bat
- // but once we do that, dotnet restore fails with:
- // "Please specify a valid solution configuration using the Configuration and Platform properties"
- if (context.IsRunningOnWindows())
- {
- MsBuildSettingsRestore.WithProperty("Platform", "Any CPU");
- }
- }
-
- private DotNetTestSettings GetTestSettingsParameters(FilePath logFile, string tfm)
- {
- var settings = new DotNetTestSettings
- {
- Configuration = BuildConfiguration,
- Framework = tfm,
- NoBuild = true,
- NoRestore = true,
- Loggers = new[] { "trx", $"trx;LogFileName={logFile.FullPath}", "console;verbosity=detailed" }
- };
- // force the tool to not look for the .dll in platform-specific directory
- settings.EnvironmentVariables["Platform"] = "";
- return settings;
- }
-
- public void RunTests(FilePath projectFile, string alias, string tfm)
- {
- var xUnitXmlFile = TestOutputDirectory.CombineWithFilePath(alias + "-" + tfm + ".trx");
- this.Information($"Run tests for {projectFile} ({tfm}), result file: '{xUnitXmlFile}'");
- var settings = GetTestSettingsParameters(xUnitXmlFile, tfm);
- this.DotNetTest(projectFile.FullPath, settings);
- }
-
- public void DocfxChangelogDownload(string version, string versionPrevious, string lastCommit = "")
- {
- this.Information("DocfxChangelogDownload: " + version);
- // Required environment variables: GITHUB_PRODUCT, GITHUB_TOKEN
- var path = ChangeLogGenDirectory.Combine("details");
- ChangeLogBuilder.Run(path, version, versionPrevious, lastCommit).Wait();
- }
-
- public void DocfxChangelogGenerate(string version)
- {
- this.Information("DocfxChangelogGenerate: " + version);
- var header = ChangeLogGenDirectory.Combine("header").CombineWithFilePath(version + ".md");
- var footer = ChangeLogGenDirectory.Combine("footer").CombineWithFilePath(version + ".md");
- var details = ChangeLogGenDirectory.Combine("details").CombineWithFilePath(version + ".md");
- var release = ChangeLogDirectory.CombineWithFilePath(version + ".md");
-
- var content = new StringBuilder();
- content.AppendLine("---");
- content.AppendLine("uid: changelog." + version);
- content.AppendLine("---");
- content.AppendLine("");
- content.AppendLine("# BenchmarkDotNet " + version);
- content.AppendLine("");
- content.AppendLine("");
-
- if (this.FileExists(header))
- {
- content.AppendLine(this.FileReadText(header));
- content.AppendLine("");
- content.AppendLine("");
- }
-
- if (this.FileExists(details))
- {
- content.AppendLine(this.FileReadText(details));
- content.AppendLine("");
- content.AppendLine("");
- }
-
- if (this.FileExists(footer))
- {
- content.AppendLine("## Additional details");
- content.AppendLine("");
- content.AppendLine(this.FileReadText(footer));
- }
-
- this.FileWriteText(release, content.ToString());
- }
-
- public void RunDocfx(FilePath docfxJson)
- {
- this.Information($"Running docfx for '{docfxJson}'");
-
- var currentDirectory = Directory.GetCurrentDirectory();
- Directory.SetCurrentDirectory(docfxJson.GetDirectory().FullPath);
- Microsoft.DocAsCode.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(docfxJson.FullPath).Wait();
- Microsoft.DocAsCode.Docset.Build(docfxJson.FullPath).Wait();
- Directory.SetCurrentDirectory(currentDirectory);
- }
-
- public void GenerateRedirects()
- {
- var redirectFile = RedirectRootDirectory.CombineWithFilePath("_redirects");
- if (!this.FileExists(redirectFile))
- {
- this.Error($"Redirect file '{redirectFile}' does not exist");
- return;
- }
-
- this.EnsureDirectoryExists(RedirectTargetDirectory);
-
- var redirects = this.FileReadLines(redirectFile)
- .Select(line => line.Split(' '))
- .Select(parts => (source: parts[0], target: parts[1]))
- .ToList();
-
- foreach (var (source, target) in redirects)
- {
- var fileName = source.StartsWith("/") || source.StartsWith("\\") ? source[1..] : source;
- var fullFileName = RedirectTargetDirectory.CombineWithFilePath(fileName);
- var content =
- $"" +
- $"" +
- $"" +
- $"{target}" +
- $"" +
- $"" +
- $"" +
- $"" +
- $"";
- this.EnsureDirectoryExists(fullFileName.GetDirectory());
- this.FileWriteText(fullFileName, content);
- }
- }
-}
-
-public static class DocumentationHelper
-{
- public static readonly string[] BdnAllVersions =
- {
- "v0.7.0",
- "v0.7.1",
- "v0.7.2",
- "v0.7.3",
- "v0.7.4",
- "v0.7.5",
- "v0.7.6",
- "v0.7.7",
- "v0.7.8",
- "v0.8.0",
- "v0.8.1",
- "v0.8.2",
- "v0.9.0",
- "v0.9.1",
- "v0.9.2",
- "v0.9.3",
- "v0.9.4",
- "v0.9.5",
- "v0.9.6",
- "v0.9.7",
- "v0.9.8",
- "v0.9.9",
- "v0.10.0",
- "v0.10.1",
- "v0.10.2",
- "v0.10.3",
- "v0.10.4",
- "v0.10.5",
- "v0.10.6",
- "v0.10.7",
- "v0.10.8",
- "v0.10.9",
- "v0.10.10",
- "v0.10.11",
- "v0.10.12",
- "v0.10.13",
- "v0.10.14",
- "v0.11.0",
- "v0.11.1",
- "v0.11.2",
- "v0.11.3",
- "v0.11.4",
- "v0.11.5",
- "v0.12.0",
- "v0.12.1",
- "v0.13.0",
- "v0.13.1",
- "v0.13.2",
- "v0.13.3",
- "v0.13.4",
- "v0.13.5"
- };
-
- public const string BdnNextVersion = "v0.13.6";
- public const string BdnFirstCommit = "6eda98ab1e83a0d185d09ff8b24c795711af8db1";
-}
-
-[TaskName("Clean")]
-public class CleanTask : FrostingTask
-{
- public override void Run(BuildContext context)
- {
- context.CleanDirectory(context.ArtifactsDirectory);
- }
-}
-
-[TaskName("Restore")]
-[IsDependentOn(typeof(CleanTask))]
-public class RestoreTask : FrostingTask
-{
- public override void Run(BuildContext context)
- {
- context.DotNetRestore(context.SolutionFile.FullPath,
- new DotNetRestoreSettings
- {
- MSBuildSettings = context.MsBuildSettingsRestore
- });
- }
-}
-
-[TaskName("Build")]
-[IsDependentOn(typeof(RestoreTask))]
-public class BuildTask : FrostingTask
-{
- public override void Run(BuildContext context)
- {
- context.Information("BuildSystemProvider: " + context.BuildSystem().Provider);
- context.DotNetBuild(context.SolutionFile.FullPath, new DotNetBuildSettings
- {
- Configuration = context.BuildConfiguration,
- NoRestore = true,
- DiagnosticOutput = true,
- MSBuildSettings = context.MsBuildSettingsBuild,
- Verbosity = DotNetVerbosity.Minimal
- });
- }
-}
-
-[TaskName("FastTests")]
-[IsDependentOn(typeof(BuildTask))]
-public class FastTestsTask : FrostingTask
-{
- public override bool ShouldRun(BuildContext context)
- {
- return !context.SkipTests;
- }
-
- public override void Run(BuildContext context)
- {
- var targetFrameworks = context.IsRunningOnWindows()
- ? new[] { "net462", "net7.0" }
- : new[] { "net7.0" };
-
- foreach (var targetFramework in targetFrameworks)
- context.RunTests(context.UnitTestsProjectFile, "UnitTests", targetFramework);
- }
-}
-
-[TaskName("SlowFullFrameworkTests")]
-[IsDependentOn(typeof(BuildTask))]
-public class SlowFullFrameworkTestsTask : FrostingTask
-{
- public override bool ShouldRun(BuildContext context)
- {
- return !context.SkipTests && !context.SkipSlowTests && context.IsRunningOnWindows() &&
- !context.IsRunningOnAppVeyor;
- }
-
- public override void Run(BuildContext context)
- {
- context.RunTests(context.IntegrationTestsProjectFile, "IntegrationTests", "net462");
- }
-}
-
-[TaskName("SlowTestsNetCore")]
-[IsDependentOn(typeof(BuildTask))]
-public class SlowTestsNetCoreTask : FrostingTask
-{
- public override bool ShouldRun(BuildContext context)
- {
- return !context.SkipTests && !context.SkipSlowTests;
- }
-
- public override void Run(BuildContext context)
- {
- context.RunTests(context.IntegrationTestsProjectFile, "IntegrationTests", "net7.0");
- }
-}
-
-[TaskName("AllTests")]
-[IsDependentOn(typeof(FastTestsTask))]
-[IsDependentOn(typeof(SlowFullFrameworkTestsTask))]
-[IsDependentOn(typeof(SlowTestsNetCoreTask))]
-public class AllTestsTask : FrostingTask
-{
-}
-
-[TaskName("Pack")]
-[IsDependentOn(typeof(BuildTask))]
-public class PackTask : FrostingTask
-{
- public override bool ShouldRun(BuildContext context)
- {
- return context.IsOnAppVeyorAndBdnNightlyCiCd || context.IsLocalBuild;
- }
-
- public override void Run(BuildContext context)
- {
- var settingsSrc = new DotNetPackSettings
- {
- Configuration = context.BuildConfiguration,
- OutputDirectory = context.ArtifactsDirectory.FullPath,
- ArgumentCustomization = args => args.Append("--include-symbols").Append("-p:SymbolPackageFormat=snupkg"),
- MSBuildSettings = context.MsBuildSettingsPack,
- NoBuild = true,
- NoRestore = true
- };
-
- foreach (var project in context.AllPackableSrcProjects)
- context.DotNetPack(project.FullPath, settingsSrc);
-
- var settingsTemplate = new DotNetPackSettings
- {
- Configuration = context.BuildConfiguration,
- OutputDirectory = context.ArtifactsDirectory.FullPath,
- MSBuildSettings = context.MsBuildSettingsPack
- };
- context.DotNetPack(context.TemplatesTestsProjectFile.FullPath, settingsTemplate);
- }
-}
-
-[TaskName("Default")]
-[IsDependentOn(typeof(AllTestsTask))]
-[IsDependentOn(typeof(PackTask))]
-public class DefaultTask : FrostingTask
-{
-}
-
-
-[TaskName("DocFX_Changelog_Download")]
-public class DocFxChangelogDownloadTask : FrostingTask
-{
- public override void Run(BuildContext context)
- {
- if (context.Argument("AllVersions", false))
- {
- context.DocfxChangelogDownload(
- DocumentationHelper.BdnAllVersions.First(),
- DocumentationHelper.BdnFirstCommit);
-
- for (int i = 1; i < DocumentationHelper.BdnAllVersions.Length; i++)
- context.DocfxChangelogDownload(
- DocumentationHelper.BdnAllVersions[i],
- DocumentationHelper.BdnAllVersions[i - 1]);
- }
- else if (context.Argument("LatestVersions", false))
- {
- for (int i = DocumentationHelper.BdnAllVersions.Length - 3;
- i < DocumentationHelper.BdnAllVersions.Length;
- i++)
- context.DocfxChangelogDownload(
- DocumentationHelper.BdnAllVersions[i],
- DocumentationHelper.BdnAllVersions[i - 1]);
- }
-
- context.DocfxChangelogDownload(
- DocumentationHelper.BdnNextVersion,
- DocumentationHelper.BdnAllVersions.Last(),
- "HEAD");
- }
-}
-
-[TaskName("DocFX_Changelog_Generate")]
-public class DocfxChangelogGenerateTask : FrostingTask
-{
- public override void Run(BuildContext context)
- {
- foreach (var version in DocumentationHelper.BdnAllVersions)
- context.DocfxChangelogGenerate(version);
- context.DocfxChangelogGenerate(DocumentationHelper.BdnNextVersion);
-
- context.Information("DocfxChangelogGenerate: index.md");
- var indexContent = new StringBuilder();
- indexContent.AppendLine("---");
- indexContent.AppendLine("uid: changelog");
- indexContent.AppendLine("---");
- indexContent.AppendLine("");
- indexContent.AppendLine("# ChangeLog");
- indexContent.AppendLine("");
- foreach (var version in DocumentationHelper.BdnAllVersions.Reverse())
- indexContent.AppendLine($"* @changelog.{version}");
- indexContent.AppendLine("* @changelog.full");
- context.FileWriteText(context.ChangeLogDirectory.CombineWithFilePath("index.md"), indexContent.ToString());
-
- context.Information("DocfxChangelogGenerate: full.md");
- var fullContent = new StringBuilder();
- fullContent.AppendLine("---");
- fullContent.AppendLine("uid: changelog.full");
- fullContent.AppendLine("---");
- fullContent.AppendLine("");
- fullContent.AppendLine("# Full ChangeLog");
- fullContent.AppendLine("");
- foreach (var version in DocumentationHelper.BdnAllVersions.Reverse())
- fullContent.AppendLine($"[!include[{version}]({version}.md)]");
- context.FileWriteText(context.ChangeLogDirectory.CombineWithFilePath("full.md"), fullContent.ToString());
-
- context.Information("DocfxChangelogGenerate: toc.yml");
- var tocContent = new StringBuilder();
- foreach (var version in DocumentationHelper.BdnAllVersions.Reverse())
- {
- tocContent.AppendLine($"- name: {version}");
- tocContent.AppendLine($" href: {version}.md");
- }
-
- tocContent.AppendLine("- name: Full ChangeLog");
- tocContent.AppendLine(" href: full.md");
- context.FileWriteText(context.ChangeLogDirectory.CombineWithFilePath("toc.yml"), tocContent.ToString());
- }
-}
-
-[TaskName("DocFX_Generate_Redirects")]
-public class DocfxGenerateRedirectsTask : FrostingTask
-{
- public override void Run(BuildContext context)
- {
- context.GenerateRedirects();
- }
-}
-
-// In order to work around xref issues in DocFx, BenchmarkDotNet and BenchmarkDotNet.Annotations must be build
-// before running the DocFX_Build target. However, including a dependency on BuildTask here may have unwanted
-// side effects (CleanTask).
-// TODO: Define dependencies when a CI workflow scenario for using the "DocFX_Build" target exists.
-[TaskName("DocFX_Build")]
-[IsDependentOn(typeof(DocfxChangelogGenerateTask))]
-public class DocfxBuildTask : FrostingTask
-{
- public override void Run(BuildContext context)
- {
- context.RunDocfx(context.DocfxJsonFile);
- context.GenerateRedirects();
- }
-}
\ No newline at end of file
diff --git a/build/azure-pipelines.job.template.yml b/build/azure-pipelines.job.template.yml
deleted file mode 100755
index d2f11f46f2..0000000000
--- a/build/azure-pipelines.job.template.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-parameters:
- name: ''
- vmImage: ''
- scriptFileName: ''
- timeoutInMinutes: 120
- initialization: []
-
-jobs:
-- job: ${{ parameters.name }}
- timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
- pool:
- vmImage: ${{ parameters.vmImage }}
- steps:
- - ${{ parameters.initialization }}
- # Linux or macOS
- - bash: ${{ parameters.scriptFileName }}
- continueOnError: true
- condition: in( variables['Agent.OS'], 'Linux', 'Darwin' )
- # Windows
- - powershell: ${{ parameters.scriptFileName }}
- continueOnError: true
- condition: eq( variables['Agent.OS'], 'Windows_NT' )
- - task: PublishTestResults@2
- inputs:
- testRunner: VSTest
- testResultsFiles: '**/*.trx'
- testRunTitle: ${{ parameters.name }}
- mergeTestResults: true
- - script: 'echo 1>&2'
- failOnStderr: true
- displayName: 'If above is partially succeeded, then fail'
- condition: eq(variables['Agent.JobStatus'], 'SucceededWithIssues')
\ No newline at end of file
diff --git a/build.bat b/build/build.bat
similarity index 100%
rename from build.bat
rename to build/build.bat
diff --git a/build.ps1 b/build/build.ps1
similarity index 76%
rename from build.ps1
rename to build/build.ps1
index d33f302d65..2f6d5a5d11 100755
--- a/build.ps1
+++ b/build/build.ps1
@@ -1,16 +1,8 @@
#!/usr/bin/env pwsh
-$DotNetInstallerUri = 'https://dot.net/v1/dotnet-install.ps1';
-$DotNetUnixInstallerUri = 'https://dot.net/v1/dotnet-install.sh'
-$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
-$BuildPath = Join-Path $PSScriptRoot "build"
-
-# Make sure tools folder exists
-$ToolPath = Join-Path $PSScriptRoot "tools"
-if (!(Test-Path $ToolPath)) {
- Write-Verbose "Creating tools directory..."
- New-Item -Path $ToolPath -Type Directory -Force | out-null
-}
+$DotNetInstallerUri = 'https://dot.net/v1/dotnet-install.ps1';
+$BuildPath = Split-Path $MyInvocation.MyCommand.Path -Parent
+$PSScriptRoot = Split-Path $PSScriptRoot -Parent
if ($PSVersionTable.PSEdition -ne 'Core') {
# Attempt to set highest encryption available for SecurityProtocol.
@@ -36,7 +28,6 @@ $env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
$env:DOTNET_CLI_TELEMETRY_OPTOUT=1
$env:DOTNET_ROLL_FORWARD_ON_NO_CANDIDATE_FX=2
-
Function Remove-PathVariable([string]$VariableToRemove)
{
$SplitChar = ';'
@@ -60,20 +51,10 @@ Function Remove-PathVariable([string]$VariableToRemove)
}
$InstallPath = Join-Path $PSScriptRoot ".dotnet"
-$GlobalJsonPath = Join-Path $BuildPath "global.json"
+$SdkPath = Join-Path $BuildPath "sdk"
+$GlobalJsonPath = Join-Path $SdkPath "global.json"
if (!(Test-Path $InstallPath)) {
New-Item -Path $InstallPath -ItemType Directory -Force | Out-Null;
-}
-
-if ($IsMacOS -or $IsLinux) {
- $ScriptPath = Join-Path $InstallPath 'dotnet-install.sh'
- (New-Object System.Net.WebClient).DownloadFile($DotNetUnixInstallerUri, $ScriptPath);
- & bash $ScriptPath --jsonfile "$GlobalJsonPath" --install-dir "$InstallPath" --no-path
-
- Remove-PathVariable "$InstallPath"
- $env:PATH = "$($InstallPath):$env:PATH"
-}
-else {
$ScriptPath = Join-Path $InstallPath 'dotnet-install.ps1'
(New-Object System.Net.WebClient).DownloadFile($DotNetInstallerUri, $ScriptPath);
& $ScriptPath -JSonFile $GlobalJsonPath -InstallDir $InstallPath;
@@ -81,11 +62,12 @@ else {
Remove-PathVariable "$InstallPath"
$env:PATH = "$InstallPath;$env:PATH"
}
+
$env:DOTNET_ROOT=$InstallPath
###########################################################################
# RUN BUILD SCRIPT
###########################################################################
-& dotnet run --project build/Build.csproj -- $args
+& dotnet run --configuration Release --project build/BenchmarkDotNet.Build/BenchmarkDotNet.Build.csproj -- $args
exit $LASTEXITCODE;
\ No newline at end of file
diff --git a/build.sh b/build/build.sh
similarity index 61%
rename from build.sh
rename to build/build.sh
index cf86d75757..ebf8ef04bd 100755
--- a/build.sh
+++ b/build/build.sh
@@ -1,13 +1,7 @@
#!/usr/bin/env bash
-# Define varibles
-SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
-TOOLS_DIR=$SCRIPT_DIR/tools
-
-# Make sure the tools folder exist.
-if [ ! -d "$TOOLS_DIR" ]; then
- mkdir "$TOOLS_DIR"
-fi
+# Define variables
+SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && cd .. && pwd )
###########################################################################
# INSTALL .NET CORE CLI
@@ -20,9 +14,10 @@ export DOTNET_ROLL_FORWARD_ON_NO_CANDIDATE_FX=2
if [ ! -d "$SCRIPT_DIR/.dotnet" ]; then
mkdir "$SCRIPT_DIR/.dotnet"
+ curl -Lsfo "$SCRIPT_DIR/.dotnet/dotnet-install.sh" https://dot.net/v1/dotnet-install.sh
+ bash "$SCRIPT_DIR/.dotnet/dotnet-install.sh" --jsonfile ./build/sdk/global.json --install-dir .dotnet --no-path
fi
-curl -Lsfo "$SCRIPT_DIR/.dotnet/dotnet-install.sh" https://dot.net/v1/dotnet-install.sh
-bash "$SCRIPT_DIR/.dotnet/dotnet-install.sh" --jsonfile ./build/global.json --install-dir .dotnet --no-path
+
export PATH="$SCRIPT_DIR/.dotnet":$PATH
export DOTNET_ROOT="$SCRIPT_DIR/.dotnet"
@@ -30,4 +25,4 @@ export DOTNET_ROOT="$SCRIPT_DIR/.dotnet"
# RUN BUILD SCRIPT
###########################################################################
-dotnet run --project ./build/Build.csproj -- "$@"
+dotnet run --configuration Release --project ./build/BenchmarkDotNet.Build/BenchmarkDotNet.Build.csproj -- "$@"
diff --git a/build/common.props b/build/common.props
index c2844cce61..8254859142 100644
--- a/build/common.props
+++ b/build/common.props
@@ -33,17 +33,16 @@
- 9.0
+ 11.0
- 0.13.5
- $(VersionPrefix).$(APPVEYOR_BUILD_NUMBER)
+ 0.13.7
-
+
develop
- ci
+ ci
@@ -62,4 +61,28 @@
all
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/global.json b/build/sdk/global.json
similarity index 64%
rename from build/global.json
rename to build/sdk/global.json
index b44053f07a..5e4624ef91 100644
--- a/build/global.json
+++ b/build/sdk/global.json
@@ -1,6 +1,6 @@
{
"sdk": {
- "version": "7.0.304",
+ "version": "7.0.305",
"rollForward": "disable"
}
}
diff --git a/build/uploadtests.ps1 b/build/uploadtests.ps1
deleted file mode 100644
index 0955ca7593..0000000000
--- a/build/uploadtests.ps1
+++ /dev/null
@@ -1,37 +0,0 @@
-param(
- [string]
- $ResultsFile,
-
- [string]
- $ResultsType = "xunit"
-)
-
-$ResultsFile = Resolve-Path $ResultsFile
-$Url = "https://ci.appveyor.com/api/testresults/$ResultsType/$($env:APPVEYOR_JOB_ID)"
-
-if(-Not (Test-Path $ResultsFile))
-{
- Write-Host "File '$ResultsFile' not found"
- exit(1)
-}
-
-# upload results to AppVeyor
-try
-{
- $wc = New-Object 'System.Net.WebClient'
- $wc.UploadFile($Url, $ResultsFile)
- Write-Host "Tests result uploaded correctly"
-}
-catch
-{
- Write-Host "Error uploading tests results to $Url"
- $Exception = $_.Exception
-
- while($null -ne $Exception)
- {
- Write-Host "Error: $($Exception.Message)"
- $Exception = $Exception.InnerException
- }
-
- exit(2)
-}
diff --git a/build/versions.txt b/build/versions.txt
new file mode 100644
index 0000000000..12a1f57f12
--- /dev/null
+++ b/build/versions.txt
@@ -0,0 +1,54 @@
+6eda98ab1e83a0d185d09ff8b24c795711af8db1
+0.7.0
+0.7.1
+0.7.2
+0.7.3
+0.7.4
+0.7.5
+0.7.6
+0.7.7
+0.7.8
+0.8.0
+0.8.1
+0.8.2
+0.9.0
+0.9.1
+0.9.2
+0.9.3
+0.9.4
+0.9.5
+0.9.6
+0.9.7
+0.9.8
+0.9.9
+0.10.0
+0.10.1
+0.10.2
+0.10.3
+0.10.4
+0.10.5
+0.10.6
+0.10.7
+0.10.8
+0.10.9
+0.10.10
+0.10.11
+0.10.12
+0.10.13
+0.10.14
+0.11.0
+0.11.1
+0.11.2
+0.11.3
+0.11.4
+0.11.5
+0.12.0
+0.12.1
+0.13.0
+0.13.1
+0.13.2
+0.13.3
+0.13.4
+0.13.5
+0.13.6
+0.13.7
\ No newline at end of file
diff --git a/docs/.gitignore b/docs/.gitignore
index 709388d794..aad3551319 100644
--- a/docs/.gitignore
+++ b/docs/.gitignore
@@ -10,4 +10,5 @@ _site
_exported_templates
docfx-bin
api/*
-!api/index.md
\ No newline at end of file
+!api/index.md
+/index.md
\ No newline at end of file
diff --git a/docs/_changelog/.gitignore b/docs/_changelog/.gitignore
new file mode 100644
index 0000000000..3bc49a8a60
--- /dev/null
+++ b/docs/_changelog/.gitignore
@@ -0,0 +1 @@
+details
diff --git a/docs/_changelog/details/v0.10.0.md b/docs/_changelog/details/v0.10.0.md
deleted file mode 100644
index 247421cb0f..0000000000
--- a/docs/_changelog/details/v0.10.0.md
+++ /dev/null
@@ -1,138 +0,0 @@
-## Milestone details
-
-In the [v0.10.0](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.10.0) scope,
-19 issues were resolved and 7 pull requests were merged.
-This release includes 85 commits by 7 contributors.
-
-## Resolved issues (19)
-
-* [#30](https://github.com/dotnet/BenchmarkDotNet/issues/30) Better information when we haven't got a valid measurement
-* [#121](https://github.com/dotnet/BenchmarkDotNet/issues/121) Strange # of "Launches" chosen with Count.Auto
-* [#154](https://github.com/dotnet/BenchmarkDotNet/issues/154) PathTooLong exception on custom config
-* [#185](https://github.com/dotnet/BenchmarkDotNet/issues/185) Report if difference between 2 benchmarks is statistically significance
-* [#241](https://github.com/dotnet/BenchmarkDotNet/issues/241) .csv results output does not play well with Excel or Google Sheets
-* [#244](https://github.com/dotnet/BenchmarkDotNet/issues/244) DefaultConfig StatisticColumn values
-* [#246](https://github.com/dotnet/BenchmarkDotNet/issues/246) No namespace information?
-* [#265](https://github.com/dotnet/BenchmarkDotNet/issues/265) Add ability to specify that benchmark requires STAThread
-* [#266](https://github.com/dotnet/BenchmarkDotNet/issues/266) Don't assume that TargetType has reference to BenchmarkDotNet (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#268](https://github.com/dotnet/BenchmarkDotNet/issues/268) Print runtime of child processes in summary
-* [#271](https://github.com/dotnet/BenchmarkDotNet/issues/271) Params attribute does not handle nullable types
-* [#272](https://github.com/dotnet/BenchmarkDotNet/issues/272) [Setup] error when doing inheritance
-* [#276](https://github.com/dotnet/BenchmarkDotNet/issues/276) System.EntryPointNotFoundException
-* [#280](https://github.com/dotnet/BenchmarkDotNet/issues/280) Cannot run on OSX / Mono (System.Xml.XmlException: Root element is missing)
-* [#281](https://github.com/dotnet/BenchmarkDotNet/issues/281) Results are exported twice for single run
-* [#288](https://github.com/dotnet/BenchmarkDotNet/issues/288) IdleWarmup running off forever
-* [#291](https://github.com/dotnet/BenchmarkDotNet/issues/291) [Bug] Incorrect results for targetCount:Auto
-* [#292](https://github.com/dotnet/BenchmarkDotNet/issues/292) Support for Beta versions
-* [#296](https://github.com/dotnet/BenchmarkDotNet/issues/296) [BUG] NRE in OutliersAnalyser
-
-## Merged pull requests (7)
-
-* [#253](https://github.com/dotnet/BenchmarkDotNet/pull/253) Mark [Benchmark] as implying implicit use (by [@roji](https://github.com/roji))
-* [#267](https://github.com/dotnet/BenchmarkDotNet/pull/267) Make shipped assemblies have CLSCompliant(true) applied (by [@lahma](https://github.com/lahma))
-* [#277](https://github.com/dotnet/BenchmarkDotNet/pull/277) Changed diagnosers flow, reduced heap allocations in Engine to 0 (by [@adamsitnik](https://github.com/adamsitnik))
-* [#278](https://github.com/dotnet/BenchmarkDotNet/pull/278) Support Atlassian flavored wiki markup (by [@lahma](https://github.com/lahma))
-* [#286](https://github.com/dotnet/BenchmarkDotNet/pull/286) Mutable Job implementation (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [#287](https://github.com/dotnet/BenchmarkDotNet/pull/287) Fix docs: job API changed (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [#293](https://github.com/dotnet/BenchmarkDotNet/pull/293) Presenters: IFormattable support (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-
-## Commits (85)
-
-* [a8b4e7](https://github.com/dotnet/BenchmarkDotNet/commit/a8b4e7bdd4618c93827ea6be139f5bf290a80da3) JsonExporters refactoring (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [e6a4ae](https://github.com/dotnet/BenchmarkDotNet/commit/e6a4aec0ca8fa683ad36f3c229b305ac25e5f39d) JsonExporters: add information about namespaces, resolves #246 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [29ee0a](https://github.com/dotnet/BenchmarkDotNet/commit/29ee0ace847828eebf16532137bde7ba7eead9d0) Add Namespace column (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [26c333](https://github.com/dotnet/BenchmarkDotNet/commit/26c33328975a61a1e4a3b07076aaba8fe29e76b3) Better error message (by [@arthrp](https://github.com/arthrp))
-* [12b313](https://github.com/dotnet/BenchmarkDotNet/commit/12b313ae9cddfcb244650f86ccb608da18990292) Merge pull request #251 from arthrp/master (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [03d00c](https://github.com/dotnet/BenchmarkDotNet/commit/03d00c2ee19c1a95d99403325ac9c40e1991fcf1) Mark [Benchmark] as implying implicit use (by [@roji](https://github.com/roji))
-* [394a93](https://github.com/dotnet/BenchmarkDotNet/commit/394a9329f2f1b78cc7b76ed42e5f0a6f67bf6325) Merge pull request #253 from roji/resharper-annotations (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [4912ea](https://github.com/dotnet/BenchmarkDotNet/commit/4912ea5c79ebc15dd7cdca9089357be961cdcdd4) Remove unnecessary specific shell reference (by [@factormystic](https://github.com/factormystic))
-* [023115](https://github.com/dotnet/BenchmarkDotNet/commit/0231157fb11d054fcb99474fbba999be22aa7fc2) Merge pull request #254 from factormystic/patch-1 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [972fee](https://github.com/dotnet/BenchmarkDotNet/commit/972fee7401c1d460342f5afed07b802513d47445) Big refactoring (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [cf839a](https://github.com/dotnet/BenchmarkDotNet/commit/cf839a0d7ecfdf93da709b63fe324fd2157aabc3) Improved ranks (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [ef3ecf](https://github.com/dotnet/BenchmarkDotNet/commit/ef3ecfad7ba8fa3dd346cdf7165a5b767591007f) Extended TimeInterval and Frequency API (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [dfcc98](https://github.com/dotnet/BenchmarkDotNet/commit/dfcc984e12007d2234f6fffebcfcc6357bac1a2b) Minor fixes (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [fb3757](https://github.com/dotnet/BenchmarkDotNet/commit/fb375756622856ce55d0e2760663e0a08f35a32b) Improved CSV export, fixes #241 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [f490d1](https://github.com/dotnet/BenchmarkDotNet/commit/f490d17a809e5eba3062fa15d6e28dd66496f712) further root folder cleanup #228 (by [@adamsitnik](https://github.com/adamsitnik))
-* [f7a6a0](https://github.com/dotnet/BenchmarkDotNet/commit/f7a6a0cc27a1b3eb2a485049d9145ace9e629e50) Added [MeansImplicitUse] and explanation to summary for SetupAttribute and Cl... (by [@adamsitnik](https://github.com/adamsitnik))
-* [56b1f2](https://github.com/dotnet/BenchmarkDotNet/commit/56b1f264c8fb2e7e0b8f9d3df8f9e733728c38c4) Configuration fix in JitOptimizationsTests (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [faac58](https://github.com/dotnet/BenchmarkDotNet/commit/faac586153a24aab50cee5fb29644dc41f321129) Introduce AnaylyzeLaunchVariance (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [9953a9](https://github.com/dotnet/BenchmarkDotNet/commit/9953a950451600724e4585c37ae4bb840baa59fa) Smart statistics in StatisticsColumnProvider (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [2a6578](https://github.com/dotnet/BenchmarkDotNet/commit/2a6578034b637c19e7c0d054424e9f3381d0b97c) Minor fixes in docs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [03fb04](https://github.com/dotnet/BenchmarkDotNet/commit/03fb04c7a0804f20581dea4c71ac1c6a8838d670) Introduce UnrollFactor (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [137636](https://github.com/dotnet/BenchmarkDotNet/commit/137636389c3dc561b75f56eac56a9215e02bf10e) NewLine fix in OutputLogger (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [b35d52](https://github.com/dotnet/BenchmarkDotNet/commit/b35d523dfc859cc0f94897be124e675b79f74845) Unique column support (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [24e944](https://github.com/dotnet/BenchmarkDotNet/commit/24e944ae06101a8051955fcfb0ae6c4413950fdc) Don't assume that TargetType has reference to BenchmarkDotNet, fixes #266 (by [@adamsitnik](https://github.com/adamsitnik))
-* [69330a](https://github.com/dotnet/BenchmarkDotNet/commit/69330a3eb56756c0773e7f8063d4dadf9b2277bd) Make shipped assemblies have CLSCompliant(true) applied (by [@lahma](https://github.com/lahma))
-* [fb8402](https://github.com/dotnet/BenchmarkDotNet/commit/fb84024c4027b0980e53cc44aa1f0219ffab606e) Merge pull request #267 from lahma/features/cls-compliancy (by [@adamsitnik](https://github.com/adamsitnik))
-* [0944b5](https://github.com/dotnet/BenchmarkDotNet/commit/0944b514275f3c871c3fd9a6ed1c4d0c5acc170e) Make exported HTML valid, add alternating color to result table (by [@lahma](https://github.com/lahma))
-* [748a2c](https://github.com/dotnet/BenchmarkDotNet/commit/748a2c2947f782a9aa78e5022e3cc7878281b839) Merge pull request #269 from lahma/features/html-export-enhancements (by [@adamsitnik](https://github.com/adamsitnik))
-* [afff51](https://github.com/dotnet/BenchmarkDotNet/commit/afff5181ce14c1ab71e84d185ed0ae19178c6695) ExecutionValidator should not throw on overridden [Setup] methods, fixes #272 (by [@adamsitnik](https://github.com/adamsitnik))
-* [ab9db4](https://github.com/dotnet/BenchmarkDotNet/commit/ab9db44643c8410813e42751e3d583a4cacfbfdb) Support nullable types as [Params], fixes #271 (by [@adamsitnik](https://github.com/adamsitnik))
-* [ce4994](https://github.com/dotnet/BenchmarkDotNet/commit/ce4994f13a63ed87c7c7207ca9dc07b43fb33401) support for [STAThread], fixes #265 (by [@adamsitnik](https://github.com/adamsitnik))
-* [13fa5c](https://github.com/dotnet/BenchmarkDotNet/commit/13fa5c5b8eaf1b8b647584aa50c21cb3fa290ef3) move ConsoleHandler to separate file for better readability (by [@adamsitnik](https://github.com/adamsitnik))
-* [0e8e82](https://github.com/dotnet/BenchmarkDotNet/commit/0e8e8228f8cf658ca2aca637a3c3d771fa469750) Print runtime of child processes in summary, fixes #268 (by [@adamsitnik](https://github.com/adamsitnik))
-* [491a28](https://github.com/dotnet/BenchmarkDotNet/commit/491a28a19ab926f2838c290154e47322099a9652) Print more info about runtime of child processes in summary (and in a nicer w... (by [@adamsitnik](https://github.com/adamsitnik))
-* [0580a5](https://github.com/dotnet/BenchmarkDotNet/commit/0580a5705359273a59a69d7f5a35f40f606597af) updated docs for #265 (by [@adamsitnik](https://github.com/adamsitnik))
-* [f9baa6](https://github.com/dotnet/BenchmarkDotNet/commit/f9baa6e90e75d838a970a35d17033b40043e1889) catch native exceptions when determining clock type, #276 (by [@adamsitnik](https://github.com/adamsitnik))
-* [93a23d](https://github.com/dotnet/BenchmarkDotNet/commit/93a23d0933972f950c0abf6b80a45c5a5d38424e) Check OS version in WindowsClock, fixed #276 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [8d65fe](https://github.com/dotnet/BenchmarkDotNet/commit/8d65fe285afe8ebb5e3845b04701b82bbde747eb) changed diagnosers flow, possibility to hook up before jitting, after setup a... (by [@adamsitnik](https://github.com/adamsitnik))
-* [f346ff](https://github.com/dotnet/BenchmarkDotNet/commit/f346ffa5f74b587c4e6acea19ff331c8abd16633) added predefined attributes for diagnosers (by [@adamsitnik](https://github.com/adamsitnik))
-* [e7cc6b](https://github.com/dotnet/BenchmarkDotNet/commit/e7cc6ba4da5e468fb8caaf14c570ae9e68bb94c2) Support Atlassian flavored wiki markup (by [@lahma](https://github.com/lahma))
-* [376bd8](https://github.com/dotnet/BenchmarkDotNet/commit/376bd86bf2a06b77b4ba4150cd8720d530ecbba0) reduce memory allocated by Engine during run to increase MemoryDiagnoser accu... (by [@adamsitnik](https://github.com/adamsitnik))
-* [b5ab55](https://github.com/dotnet/BenchmarkDotNet/commit/b5ab5561a75817b35845f10ce1f70bd3d19abc13) display results when runing when no diagnoser is attached (by [@adamsitnik](https://github.com/adamsitnik))
-* [7ae2b5](https://github.com/dotnet/BenchmarkDotNet/commit/7ae2b52ce4bab3747442d0bb89ebcaa5f80fbe28) Improved idle method for primitive types (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [e1213a](https://github.com/dotnet/BenchmarkDotNet/commit/e1213a59822a53955733e38894eb88d23de787df) Fix NRE in BuildJobRuntimes (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [572fa4](https://github.com/dotnet/BenchmarkDotNet/commit/572fa42d52c8543cea1e83037df3b9b4e9626c0e) Make code CLS-Compliant, fix CS3015 warning (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [4070a1](https://github.com/dotnet/BenchmarkDotNet/commit/4070a1cd84b07390ab0776a66599047408d791ba) preload all settings in ctors, introduced IEngineFactory (by [@adamsitnik](https://github.com/adamsitnik))
-* [2f0df7](https://github.com/dotnet/BenchmarkDotNet/commit/2f0df729998788051cfc00475f479ab0d3f7b7ad) make Engine use InvocationCount (by [@adamsitnik](https://github.com/adamsitnik))
-* [8a7a12](https://github.com/dotnet/BenchmarkDotNet/commit/8a7a12de50390a5eb992cfc454807b1cb2a298a6) calculate Statistics without allocations! makes the code look bad, but saves ... (by [@adamsitnik](https://github.com/adamsitnik))
-* [d8fa70](https://github.com/dotnet/BenchmarkDotNet/commit/d8fa70adf5233ae610fafa44f13ec3832ed6be29) remove last allocations from Engine.Run (by [@adamsitnik](https://github.com/adamsitnik))
-* [f2a106](https://github.com/dotnet/BenchmarkDotNet/commit/f2a10637c2c88dd75908d0e6864743cb7408976c) perform Jitting after first Setup call, better naming, test fix (by [@adamsitnik](https://github.com/adamsitnik))
-* [be3ce3](https://github.com/dotnet/BenchmarkDotNet/commit/be3ce3a3ebfa5abe135c2f1c0e459e3cc6a86d4f) introduce general catch with hopes to help with #280 (by [@adamsitnik](https://github.com/adamsitnik))
-* [3c5e70](https://github.com/dotnet/BenchmarkDotNet/commit/3c5e70a2db490d2900da1eea35d05a027cc318d8) post code review changes (by [@adamsitnik](https://github.com/adamsitnik))
-* [16e258](https://github.com/dotnet/BenchmarkDotNet/commit/16e258e3078b65a3fb43cb388ed57b1fec063970) possibility to define custom Engine (by [@adamsitnik](https://github.com/adamsitnik))
-* [afa586](https://github.com/dotnet/BenchmarkDotNet/commit/afa58658ade67296380d07be0516029dea98e89b) Merge pull request #277 from PerfDotNet/diagnosersFlow (by [@adamsitnik](https://github.com/adamsitnik))
-* [534189](https://github.com/dotnet/BenchmarkDotNet/commit/5341897d81d372a3f4f70c7fcf875374a0e6a603) export files only once, not twice, fixes #281 (by [@adamsitnik](https://github.com/adamsitnik))
-* [a733b5](https://github.com/dotnet/BenchmarkDotNet/commit/a733b5fa26009bc8a215448caa12d2ed34844412) Mutable Job implementation (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [259647](https://github.com/dotnet/BenchmarkDotNet/commit/2596471b01083580889b2e8b2de3d8644fb75d55) Merge pull request #286 from ig-sinicyn/feature-mutable-characteristics (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [c184b8](https://github.com/dotnet/BenchmarkDotNet/commit/c184b822a9472cab862892e99070dc8b10c89453) Fix docs: job API changed (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [47b152](https://github.com/dotnet/BenchmarkDotNet/commit/47b15277f62bf50ad45e83237106384598f4eece) Merge pull request #287 from ig-sinicyn/fix-docs-jobs-updated (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [868ffc](https://github.com/dotnet/BenchmarkDotNet/commit/868ffc93e27c0893e4d417e8a9803459f86ac260) Jobs: WithXxx() extension methods added back, docs updated (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [eede54](https://github.com/dotnet/BenchmarkDotNet/commit/eede5457017b3b7ccef3e7e987330737fbe01f69) Jobs: .With() methods now create new instances of the Job. (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [40f160](https://github.com/dotnet/BenchmarkDotNet/commit/40f160a0ac72479437a201a37d885506c88f6ae2) Test fixed (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [fd92f7](https://github.com/dotnet/BenchmarkDotNet/commit/fd92f7e39480a726769d664b4b6d3335fe5ec0b2) Jobs: helper for .With() methods (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [307b72](https://github.com/dotnet/BenchmarkDotNet/commit/307b7250210fc3a7b7ff2c454bb79f793aae57ea) Merge pull request #289 from ig-sinicyn/features-jobs-with (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [d576f5](https://github.com/dotnet/BenchmarkDotNet/commit/d576f57db70fc604a692fa375f986e769643d040) Presenters: IFormattable support (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [8647e7](https://github.com/dotnet/BenchmarkDotNet/commit/8647e737b3473528e96a22f83691d72023bf9daf) Fix #291 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [49c000](https://github.com/dotnet/BenchmarkDotNet/commit/49c000162f39b78ef760ea57416f92675a19c844) Merge pull request #293 from ig-sinicyn/fix-presenter-culture (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [684334](https://github.com/dotnet/BenchmarkDotNet/commit/684334a2e85f2c30d150c40209d0d75679b9effe) Merge pull request #278 from lahma/features/atlassian-wiki-markup (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [7f3ca5](https://github.com/dotnet/BenchmarkDotNet/commit/7f3ca5f80cff764f3dbf1191495ded5a73b0a60f) Make BenchmarkRunnerCore.Run public (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [10a91e](https://github.com/dotnet/BenchmarkDotNet/commit/10a91ebaacad20ccf2be45b4e8c9db786482aa10) Allow using newer versions of Microsoft.NETCore.App, fixes #292 (by [@adamsitnik](https://github.com/adamsitnik))
-* [134d74](https://github.com/dotnet/BenchmarkDotNet/commit/134d7446cbc07224466b9d3d2ae74d18c613078c) Misc improvements in Exporters (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [33c63f](https://github.com/dotnet/BenchmarkDotNet/commit/33c63f1e8fbeece6da6ef25875dc722dd67cebfc) Respect RemoveOutliers in the RunResults (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5e022b](https://github.com/dotnet/BenchmarkDotNet/commit/5e022b267fa5629614e9cf9b8ef30ab9cbbfbf84) Fix #291, part 2 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [4b6ea9](https://github.com/dotnet/BenchmarkDotNet/commit/4b6ea91b95f79dd0214839e495a351222da92e46) Improved name for the Id CharacteristicColumn (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [af6f8a](https://github.com/dotnet/BenchmarkDotNet/commit/af6f8ab92e5388afc5e138ac123eebfaf3b5caf6) Fix some compilation warnings (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [2f8584](https://github.com/dotnet/BenchmarkDotNet/commit/2f85847cdf077e695f0e65b71ed9f1b5faac7d5c) Analysers refactoring + OutliersAnalyser (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [b11935](https://github.com/dotnet/BenchmarkDotNet/commit/b11935a7da9253f4b3d35705a59f3275e59dd9ae) Make BenchmarkRunnerCore public (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [781740](https://github.com/dotnet/BenchmarkDotNet/commit/7817407c0c998e588cd8d1a792b226b27725df5f) Specify generated id for the default job (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [846255](https://github.com/dotnet/BenchmarkDotNet/commit/846255b30113992ccacdc20190fe558da5bea755) JobTests.Test01Create fix (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [9f9544](https://github.com/dotnet/BenchmarkDotNet/commit/9f95445bb841091bc976059cdb7116c0d370a146) Check if there is no MainTarget measurements in OutliersAnalyser, fixes #296 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [503b04](https://github.com/dotnet/BenchmarkDotNet/commit/503b0486b6143afca4213dda27094eb54a39cd14) Proper exception in GetStatistics for empty input, see #296 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [c667aa](https://github.com/dotnet/BenchmarkDotNet/commit/c667aaef5f12c8a7aecfeb29ea2ac519681118f7) Fix path to logo (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [0b91c3](https://github.com/dotnet/BenchmarkDotNet/commit/0b91c32f65f104036ec8e820541be997fd40e5c3) Fix null check in JobMode.ApplyCore (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [2edb56](https://github.com/dotnet/BenchmarkDotNet/commit/2edb56955da5429dbc8ebe8c44382295bf180b8a) Copyrights and links update (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [2edb9a](https://github.com/dotnet/BenchmarkDotNet/commit/2edb9adf2e1b0aa7545097bb92bde55830ec4dde) Set library version: 0.10.0 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Contributors (7)
-
-* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik))
-* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* Arthur ([@arthrp](https://github.com/arthrp))
-* factormystic ([@factormystic](https://github.com/factormystic))
-* ig-sinicyn ([@ig-sinicyn](https://github.com/ig-sinicyn))
-* Marko Lahma ([@lahma](https://github.com/lahma))
-* Shay Rojansky ([@roji](https://github.com/roji))
-
-Thank you very much!
-
diff --git a/docs/_changelog/details/v0.10.1.md b/docs/_changelog/details/v0.10.1.md
deleted file mode 100644
index d33192ab5b..0000000000
--- a/docs/_changelog/details/v0.10.1.md
+++ /dev/null
@@ -1,71 +0,0 @@
-## Milestone details
-
-In the [v0.10.1](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.10.1) scope,
-9 issues were resolved and 2 pull requests were merged.
-This release includes 38 commits by 2 contributors.
-
-## Resolved issues (9)
-
-* [#133](https://github.com/dotnet/BenchmarkDotNet/issues/133) High differences between run for GC Diagnoser (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#186](https://github.com/dotnet/BenchmarkDotNet/issues/186) GC Diagnoser should not include allocations done by Setup method (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#200](https://github.com/dotnet/BenchmarkDotNet/issues/200) be accurate about allocated bytes/op (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#208](https://github.com/dotnet/BenchmarkDotNet/issues/208) Troubles with MemoryDiagnoserTests (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#298](https://github.com/dotnet/BenchmarkDotNet/issues/298) PlatformNotSupportedException when reading ProcessorAffinity on MacOS (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#301](https://github.com/dotnet/BenchmarkDotNet/issues/301) netcoreapp1.1 support (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#309](https://github.com/dotnet/BenchmarkDotNet/issues/309) Diagnosers don't export data to the measurements.csv files (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#312](https://github.com/dotnet/BenchmarkDotNet/issues/312) RuntimeInformation can be made static and internal (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#313](https://github.com/dotnet/BenchmarkDotNet/issues/313) Bug in Generator (interface as a return type) (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Merged pull requests (2)
-
-* [#284](https://github.com/dotnet/BenchmarkDotNet/pull/284) built-in accurate and cross platform Memory Diagnoser (by [@adamsitnik](https://github.com/adamsitnik))
-* [#314](https://github.com/dotnet/BenchmarkDotNet/pull/314) Improved information about job environments in summary (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Commits (38)
-
-* [23f3b2](https://github.com/dotnet/BenchmarkDotNet/commit/23f3b29b4cf0c13f49f47609b26b32a30d10289e) built-in accurate and cross platform Memory Diagnoser, fixes #186, fixes #200 (by [@adamsitnik](https://github.com/adamsitnik))
-* [4cabc2](https://github.com/dotnet/BenchmarkDotNet/commit/4cabc202bcb5f76a2e417d6b20aedf5c23e12e3a) don't try to use AppDomain's Monitoring in Mono since it's not implemented there (by [@adamsitnik](https://github.com/adamsitnik))
-* [99c21e](https://github.com/dotnet/BenchmarkDotNet/commit/99c21e842ec925a51f98844959b9a49b2493e971) scale GC collections count / op, makes MemoryDiagnoser output stable for benc... (by [@adamsitnik](https://github.com/adamsitnik))
-* [e91255](https://github.com/dotnet/BenchmarkDotNet/commit/e91255e2a6e5b3d0e683ee5cf1773cdbbbe3649f) use per mille to make the Memory Diagnoser output more human-friendly + reduc... (by [@adamsitnik](https://github.com/adamsitnik))
-* [a0536d](https://github.com/dotnet/BenchmarkDotNet/commit/a0536d1b1345ae2768c0e7bc489cb3e03f72d0b9) Merge branch 'master' into universalMemoryDiagnoser (by [@adamsitnik](https://github.com/adamsitnik))
-* [ade1be](https://github.com/dotnet/BenchmarkDotNet/commit/ade1bea023aab7822373d158a8617131e371a117) preallocate results list in more safe, but still ugly way (by [@adamsitnik](https://github.com/adamsitnik))
-* [102282](https://github.com/dotnet/BenchmarkDotNet/commit/1022827bbba62e855a90c9c16e6af01830c380ea) closed the ugly code in separate class (by [@adamsitnik](https://github.com/adamsitnik))
-* [7825b7](https://github.com/dotnet/BenchmarkDotNet/commit/7825b719577836245af262c250fcf2104f9c644d) Update links in docs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [aaf720](https://github.com/dotnet/BenchmarkDotNet/commit/aaf7202e8f329cd29a0dcd188a08b4d758ddd8fb) Fix typo (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [1e2d38](https://github.com/dotnet/BenchmarkDotNet/commit/1e2d381b6a7ba34d53140f28f4481d3d829b6260) update to netcoreapp1.1 in order to get universal cross platform memory diagn... (by [@adamsitnik](https://github.com/adamsitnik))
-* [e69e80](https://github.com/dotnet/BenchmarkDotNet/commit/e69e80b46b612918a156362d88843a37f123564d) don't show Gen 1 and Gen 2 columns if empty for all benchmarks (by [@adamsitnik](https://github.com/adamsitnik))
-* [b10a84](https://github.com/dotnet/BenchmarkDotNet/commit/b10a84cf157ef075838e303b313673ffd2bfd073) PlatformNotSupportedException when reading ProcessorAffinity on MacOS, fixes ... (by [@adamsitnik](https://github.com/adamsitnik))
-* [2a529a](https://github.com/dotnet/BenchmarkDotNet/commit/2a529abfff9d72bdd4b11d82d1c918beaffaf0ff) update to .NET Core 1.1, fixes #301 (by [@adamsitnik](https://github.com/adamsitnik))
-* [e6ccee](https://github.com/dotnet/BenchmarkDotNet/commit/e6ccee61de69c83c9ce5716819c48b9d844dc05e) always show Gen 0 column, display Gen 0/1/2 per 1k op (by [@adamsitnik](https://github.com/adamsitnik))
-* [3bcc59](https://github.com/dotnet/BenchmarkDotNet/commit/3bcc59812a83e7f3983ed1708377e2984e8d7914) Merge branch 'master' into universalMemoryDiagnoser (by [@adamsitnik](https://github.com/adamsitnik))
-* [a09810](https://github.com/dotnet/BenchmarkDotNet/commit/a098106e3e8a406908478bbce8d5a6abf5734b5f) make public things readonly, expensive things lazy and extend's validators in... (by [@adamsitnik](https://github.com/adamsitnik))
-* [eae2cd](https://github.com/dotnet/BenchmarkDotNet/commit/eae2cd5c24fcb7388df4b3fe69b32ba9c40d8c22) added documentation and smarter bytes formatting (by [@adamsitnik](https://github.com/adamsitnik))
-* [1208c3](https://github.com/dotnet/BenchmarkDotNet/commit/1208c33828a067b74cdf87da96d4b048bd99e0bc) Merge branch 'master' into universalMemoryDiagnoser (by [@adamsitnik](https://github.com/adamsitnik))
-* [f1f231](https://github.com/dotnet/BenchmarkDotNet/commit/f1f2317dafc663a2fa854ea566ede8befc68ea6d) Merge pull request #284 from dotnet/universalMemoryDiagnoser (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [6300a2](https://github.com/dotnet/BenchmarkDotNet/commit/6300a29a1146d6c0ab7514c785702f97e3ee5b97) include MemoryDiagnoser's results in CsvMeasurementsExporter, fixes #309 (by [@adamsitnik](https://github.com/adamsitnik))
-* [ddb37e](https://github.com/dotnet/BenchmarkDotNet/commit/ddb37ed47921f990273881b8024380195ebdf1d2) don't use spaces in columns names in CSV, #309 (by [@adamsitnik](https://github.com/adamsitnik))
-* [112f62](https://github.com/dotnet/BenchmarkDotNet/commit/112f62218ba5e044b15a1f58bfa9f9c644e21853) Fix stupid bug with condition for optional MedianColumn (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [60127c](https://github.com/dotnet/BenchmarkDotNet/commit/60127c9e0300b3e3ea29bb5248f6753d04ef80b5) Remove Cpu_Ilp_RyuJit.cs because it's obsolete (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [401456](https://github.com/dotnet/BenchmarkDotNet/commit/401456b92a85342bbf4cfcc3d0b1acd926163d1a) Print full information about a GenerateException (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [0b9177](https://github.com/dotnet/BenchmarkDotNet/commit/0b917763b49481738742952fd3f0c03103f5d48d) Support of benchmark methods with an interface as a return type, fixed #313 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [b42b9e](https://github.com/dotnet/BenchmarkDotNet/commit/b42b9e8f1aa1455c54173b9fe549ed5518869e71) Improved information about job environments in summary (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [92f1db](https://github.com/dotnet/BenchmarkDotNet/commit/92f1db1a83ac040630d3508f13d2af850b1b5809) Improved information about job environments in summary, part 2 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5d8dd7](https://github.com/dotnet/BenchmarkDotNet/commit/5d8dd74e33650da881d1ced32b35d9e807fc1238) Merge pull request #314 from dotnet/summary (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [d279f6](https://github.com/dotnet/BenchmarkDotNet/commit/d279f675f966642283fa15726d342db5568e86c8) Make RuntimeInformation static internal, fix #312 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [1df6ca](https://github.com/dotnet/BenchmarkDotNet/commit/1df6ca56277e842553a81e90da2430f60812a785) Minor API improvements in BenchmarkSwitcher (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [c12daf](https://github.com/dotnet/BenchmarkDotNet/commit/c12dafb041d1ef15c6a6d34f3fbc469690b98bb8) Dot't show the median column for the N=1 case (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [19caa2](https://github.com/dotnet/BenchmarkDotNet/commit/19caa2cfec0847038ef6afe6d7a4cbc6aa89df59) RyuJit is always avaiable for .NET Core (by [@adamsitnik](https://github.com/adamsitnik))
-* [13e12c](https://github.com/dotnet/BenchmarkDotNet/commit/13e12c761f3325bcdb03c77df0969cc0e4e226e3) make JitOptimizationsValidator work for .NET Core (needed properties are avai... (by [@adamsitnik](https://github.com/adamsitnik))
-* [c17b43](https://github.com/dotnet/BenchmarkDotNet/commit/c17b43cf935f3252a68471eea97b2429c60752bd) hide the AllocatedBytes column for Mono, show Gen 0 only if any of the benchm... (by [@adamsitnik](https://github.com/adamsitnik))
-* [29ac91](https://github.com/dotnet/BenchmarkDotNet/commit/29ac9117ba573cbfd7f105b209ca50d6094e4396) updated docs about Diagnosers in the Overview ;) (by [@adamsitnik](https://github.com/adamsitnik))
-* [cc974e](https://github.com/dotnet/BenchmarkDotNet/commit/cc974e915b87536fd67b7fd24058c06d1221dc61) Improved information about job environments in summary, part 3 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [8846af](https://github.com/dotnet/BenchmarkDotNet/commit/8846af5897d31f60a9aab94e0fbf888754a93486) Update docs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [37b126](https://github.com/dotnet/BenchmarkDotNet/commit/37b126a4f053ed8f87cf775538bd3ac764eae0ea) Set library version: 0.10.1 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Contributors (2)
-
-* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik))
-* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-Thank you very much!
-
diff --git a/docs/_changelog/details/v0.10.10.md b/docs/_changelog/details/v0.10.10.md
deleted file mode 100644
index 793f1a6b4c..0000000000
--- a/docs/_changelog/details/v0.10.10.md
+++ /dev/null
@@ -1,179 +0,0 @@
-## Milestone details
-
-In the [v0.10.10](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.10.10) scope,
-34 issues were resolved and 18 pull requests were merged.
-This release includes 95 commits by 12 contributors.
-
-## Resolved issues (34)
-
-* [#160](https://github.com/dotnet/BenchmarkDotNet/issues/160) Make ClrMd Source diagnoser working with new ClrMD api (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#167](https://github.com/dotnet/BenchmarkDotNet/issues/167) Detect virtual machine environment (assignee: [@lukasz-pyrzyk](https://github.com/lukasz-pyrzyk))
-* [#262](https://github.com/dotnet/BenchmarkDotNet/issues/262) Runtime knobs (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#310](https://github.com/dotnet/BenchmarkDotNet/issues/310) Support 32bit benchmarks for .NET Core (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#350](https://github.com/dotnet/BenchmarkDotNet/issues/350) ParamsSource (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#437](https://github.com/dotnet/BenchmarkDotNet/issues/437) Add `DisassemblyDiagnoser` for outputting disassembled JITed code. (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#466](https://github.com/dotnet/BenchmarkDotNet/issues/466) MSBuild parameters are not passed to generated benchmark project (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#495](https://github.com/dotnet/BenchmarkDotNet/issues/495) Attributes put on base methods are not considered in derived class (assignee: [@lukasz-pyrzyk](https://github.com/lukasz-pyrzyk))
-* [#500](https://github.com/dotnet/BenchmarkDotNet/issues/500) Borken compilation for net46 projects when .NET Framework 4.7 is installed (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#505](https://github.com/dotnet/BenchmarkDotNet/issues/505) JsonExporterBase doesn't include MemoryDiagnoser stats in output
-* [#511](https://github.com/dotnet/BenchmarkDotNet/issues/511) [bug] Bug in GetTargetedMatchingMethod() logic
-* [#513](https://github.com/dotnet/BenchmarkDotNet/issues/513) IterationSetup not run in Job.InProcess
-* [#516](https://github.com/dotnet/BenchmarkDotNet/issues/516) Get a compilation error "CS1009: Unrecognized escape sequence" when using verbatim strings
-* [#519](https://github.com/dotnet/BenchmarkDotNet/issues/519) BenchmarkSwitcher.RunAllJoined throws InvalidOperationException (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#526](https://github.com/dotnet/BenchmarkDotNet/issues/526) Remove project.json support (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#529](https://github.com/dotnet/BenchmarkDotNet/issues/529) No namespace in export filenames can lead to data loss
-* [#530](https://github.com/dotnet/BenchmarkDotNet/issues/530) Build error on Appveyor with recent changes.
-* [#533](https://github.com/dotnet/BenchmarkDotNet/issues/533) When I clone, build, and run BenchmarkDotNet.Samples I get an error
-* [#534](https://github.com/dotnet/BenchmarkDotNet/issues/534) Allow the users to compare 32 vs 64 RyuJit for .NET Core (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#535](https://github.com/dotnet/BenchmarkDotNet/issues/535) No way to set RuntimeFrameworkVersion in multiple-version config (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#536](https://github.com/dotnet/BenchmarkDotNet/issues/536) Strange disassembly ordering/truncation (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#537](https://github.com/dotnet/BenchmarkDotNet/issues/537) Can't benchmark a netstandard2.0 project (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#538](https://github.com/dotnet/BenchmarkDotNet/issues/538) Duplicate using causing benchmark not to work (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#539](https://github.com/dotnet/BenchmarkDotNet/issues/539) Target .NET Core 2.0 to take advantage of the new APIs (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#540](https://github.com/dotnet/BenchmarkDotNet/issues/540) Artifacts for disassembler projects (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#542](https://github.com/dotnet/BenchmarkDotNet/issues/542) Problems with Disassembler + Job.Dry (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#555](https://github.com/dotnet/BenchmarkDotNet/issues/555) Test "CanDisassembleAllMethodCalls" fails on Ubuntu (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#556](https://github.com/dotnet/BenchmarkDotNet/issues/556) Table in report is broken in VSCode markdown viewer (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#558](https://github.com/dotnet/BenchmarkDotNet/issues/558) Warn the users when running Benchmarks from xUnit with shadow copy enabled (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#559](https://github.com/dotnet/BenchmarkDotNet/issues/559) DissassemblyDiagnoser jit/arch info seems to be wrong (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#561](https://github.com/dotnet/BenchmarkDotNet/issues/561) Strange behaviour when benchmark project is build in debug mode (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#562](https://github.com/dotnet/BenchmarkDotNet/issues/562) DisassemblyDiagnoser crashes on overloaded benchmark (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#564](https://github.com/dotnet/BenchmarkDotNet/issues/564) [Bug] Benchmarking a method doesn't run global setup when filter is applied (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#571](https://github.com/dotnet/BenchmarkDotNet/issues/571) Allow users to use non compile-time constants as Parameters (assignee: [@adamsitnik](https://github.com/adamsitnik))
-
-## Merged pull requests (18)
-
-* [#507](https://github.com/dotnet/BenchmarkDotNet/pull/507) Fix a typo in Jobs.md (by [@aidmsu](https://github.com/aidmsu))
-* [#508](https://github.com/dotnet/BenchmarkDotNet/pull/508) Fixed some typos and grammar (by [@lukasz-pyrzyk](https://github.com/lukasz-pyrzyk))
-* [#512](https://github.com/dotnet/BenchmarkDotNet/pull/512) Warning about antivirus software after benchmark failure (by [@lukasz-pyrzyk](https://github.com/lukasz-pyrzyk))
-* [#514](https://github.com/dotnet/BenchmarkDotNet/pull/514) #495 - Unit test for reading attributes from the base class (by [@lukasz-pyrzyk](https://github.com/lukasz-pyrzyk))
-* [#515](https://github.com/dotnet/BenchmarkDotNet/pull/515) Fix #513 - IterationSetup not run in Job.InProcess (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [#518](https://github.com/dotnet/BenchmarkDotNet/pull/518) Fixed information about MemoryDiagnoser. (by [@cincuranet](https://github.com/cincuranet))
-* [#520](https://github.com/dotnet/BenchmarkDotNet/pull/520) XML Exporter documentation and samples (by [@Teknikaali](https://github.com/Teknikaali))
-* [#525](https://github.com/dotnet/BenchmarkDotNet/pull/525) adding validator for setup cleanup attributes (by [@ipjohnson](https://github.com/ipjohnson))
-* [#527](https://github.com/dotnet/BenchmarkDotNet/pull/527) Detecting virtual machine hypervisor, #167 (by [@lukasz-pyrzyk](https://github.com/lukasz-pyrzyk))
-* [#531](https://github.com/dotnet/BenchmarkDotNet/pull/531) Remove --no-build argument for dotnet test & pack commands. (by [@Ky7m](https://github.com/Ky7m))
-* [#532](https://github.com/dotnet/BenchmarkDotNet/pull/532) Fix type of local in EmitInvokeMultipleBody (by [@pentp](https://github.com/pentp))
-* [#547](https://github.com/dotnet/BenchmarkDotNet/pull/547) Fix markdown headers (by [@jawn](https://github.com/jawn))
-* [#548](https://github.com/dotnet/BenchmarkDotNet/pull/548) Fix condition in package reference list and update dotnet cli version from 1.0.4 to 2.0.0 for non-Windows system (by [@Ky7m](https://github.com/Ky7m))
-* [#549](https://github.com/dotnet/BenchmarkDotNet/pull/549) Project files cleanup (by [@Ky7m](https://github.com/Ky7m))
-* [#552](https://github.com/dotnet/BenchmarkDotNet/pull/552) Fix exporters to use fully qualified filenames (by [@Teknikaali](https://github.com/Teknikaali))
-* [#563](https://github.com/dotnet/BenchmarkDotNet/pull/563) Remove leading space character in a MD table row, #556 (by [@rolshevsky](https://github.com/rolshevsky))
-* [#565](https://github.com/dotnet/BenchmarkDotNet/pull/565) Single point of full config creation (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [#569](https://github.com/dotnet/BenchmarkDotNet/pull/569) Update cakebuild scripts (by [@Ky7m](https://github.com/Ky7m))
-
-## Commits (95)
-
-* [682820](https://github.com/dotnet/BenchmarkDotNet/commit/6828207bf14255e7055318e3e74656cfa04a969e) Fix typo in Jobs.md (by [@aidmsu](https://github.com/aidmsu))
-* [e82a8b](https://github.com/dotnet/BenchmarkDotNet/commit/e82a8b4a1b5e8898d5bd7a87cb2cac446123a5bf) Fixed some typos and grammar (by [@lukasz-pyrzyk](https://github.com/lukasz-pyrzyk))
-* [a0e9b9](https://github.com/dotnet/BenchmarkDotNet/commit/a0e9b9813fc8b19531963414a0e8e365f81ba850) Disassembly Diagnoser: displaying ASM, IL and C# for any JIT (by [@adamsitnik](https://github.com/adamsitnik))
-* [57e0f0](https://github.com/dotnet/BenchmarkDotNet/commit/57e0f095ee466f53b3a23b10f32cf7bdbc6b8bb7) recursive disassembling (by [@adamsitnik](https://github.com/adamsitnik))
-* [1975ae](https://github.com/dotnet/BenchmarkDotNet/commit/1975aedca7570dc380f84c59a1e26813241ff6ff) return structured results from Disassembler (by [@adamsitnik](https://github.com/adamsitnik))
-* [9ae365](https://github.com/dotnet/BenchmarkDotNet/commit/9ae365a070c019fc8c4c4a22a65e23b32e862262) Warning about antivirus software after benchmark failure (#512) (by [@lukasz-pyrzyk](https://github.com/lukasz-pyrzyk))
-* [74b41e](https://github.com/dotnet/BenchmarkDotNet/commit/74b41efd2fd820f09cb01cb6dc0c9c5542d004c1) Unit test for reading attributes from the base class, fixes #495 (by [@lukasz-pyrzyk](https://github.com/lukasz-pyrzyk))
-* [3bab2d](https://github.com/dotnet/BenchmarkDotNet/commit/3bab2d669e0d79ae2279cede5894005500fa9dc1) Fix #513 - IterationSetup not run in Job.InProcess (#515) (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [769a39](https://github.com/dotnet/BenchmarkDotNet/commit/769a3991504b58a5886e52f8376200677c9fc38c) use the IL instructions to detect more calls (by [@adamsitnik](https://github.com/adamsitnik))
-* [b69537](https://github.com/dotnet/BenchmarkDotNet/commit/b695370eb1f02476a2fe986eee9623c56ec94879) use InstructionPointer to combine asm with hardware counters (by [@adamsitnik](https://github.com/adamsitnik))
-* [200244](https://github.com/dotnet/BenchmarkDotNet/commit/200244844e456bb26e7d8a225d52e28c5ef7dcf7) Fixed information about MemoryDiagnoser. (by Jiri Cincura)
-* [848a1a](https://github.com/dotnet/BenchmarkDotNet/commit/848a1aa032e0a8da2936f44b1653a214144d358b) handling the lovely edge cases (Cecil vs ClrMD differences in naming types an... (by [@adamsitnik](https://github.com/adamsitnik))
-* [40049b](https://github.com/dotnet/BenchmarkDotNet/commit/40049b4565336b7387841ba12af37142e0538039) single text representation of asm is a range of IPs! (by [@adamsitnik](https://github.com/adamsitnik))
-* [56e252](https://github.com/dotnet/BenchmarkDotNet/commit/56e2525a44dbac262f467190e23feda7af6ad659) XML Exporter documentation and samples (#520) (by [@Teknikaali](https://github.com/Teknikaali))
-* [c18597](https://github.com/dotnet/BenchmarkDotNet/commit/c1859736ac16fc37041d4a25b9ce1c72a9bec71c) eliminate duplicates (ClrMD fault), be more defensive for edge cases (by [@adamsitnik](https://github.com/adamsitnik))
-* [a9262f](https://github.com/dotnet/BenchmarkDotNet/commit/a9262f4284c5edc5ff1ba9f3147300914de81041) allow the users to specify recursive depth limit (50MB output for simple lock... (by [@adamsitnik](https://github.com/adamsitnik))
-* [fbe329](https://github.com/dotnet/BenchmarkDotNet/commit/fbe329b71624fc97e949f08672358080eafa2a0c) Support params which include slashes, fixes #516 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [f2b9c0](https://github.com/dotnet/BenchmarkDotNet/commit/f2b9c0750fe236d9f4dc80571a58392d0ec7660d) Fix RunAllJoined, fixes #519 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [983764](https://github.com/dotnet/BenchmarkDotNet/commit/9837640686ae95795fdb971a948ac6d612bca9b5) UX ;) (by [@adamsitnik](https://github.com/adamsitnik))
-* [c010de](https://github.com/dotnet/BenchmarkDotNet/commit/c010de2007956ba54c78ec461fc57a9008f991ff) adding validator for setup cleanup attributes (by [@ipjohnson](https://github.com/ipjohnson))
-* [424723](https://github.com/dotnet/BenchmarkDotNet/commit/424723f01fed549c536cf777cd4317e38aa3a6c1) Merge pull request #525 from ipjohnson/master (by [@adamsitnik](https://github.com/adamsitnik))
-* [7b680a](https://github.com/dotnet/BenchmarkDotNet/commit/7b680a0a602ea423682ba194ca42387673ab7c7a) prefer unit tests over integration tests if possible (by [@adamsitnik](https://github.com/adamsitnik))
-* [93dc6e](https://github.com/dotnet/BenchmarkDotNet/commit/93dc6e638aab62dddd6bba50aa13b04645663cfd) Remove project.json support, fixes #526 (by [@adamsitnik](https://github.com/adamsitnik))
-* [19f22b](https://github.com/dotnet/BenchmarkDotNet/commit/19f22b74e1217dc16137831c05d2edaef67eac84) Merge pull request #518 from cincuranet/docs (by [@adamsitnik](https://github.com/adamsitnik))
-* [fe2db1](https://github.com/dotnet/BenchmarkDotNet/commit/fe2db1823dd5d8a39c33f00d46607b89362c8eef) configurable, runtime specific diagnosers, hard part transparent to end users (by [@adamsitnik](https://github.com/adamsitnik))
-* [fb60e5](https://github.com/dotnet/BenchmarkDotNet/commit/fb60e5ee5ae47f7ae80e4aaca81f605f832c01a7) disassembly diagnoser for Mono (by [@adamsitnik](https://github.com/adamsitnik))
-* [55ce0d](https://github.com/dotnet/BenchmarkDotNet/commit/55ce0de6ef197e5289a663ab68f0684e0fe2b380) smart diagnoser can choose the right disassembler (by [@adamsitnik](https://github.com/adamsitnik))
-* [46c911](https://github.com/dotnet/BenchmarkDotNet/commit/46c911a886811a6482e7c10dfb8021b6dd1cb1d4) one test to verify all scenarios (by [@adamsitnik](https://github.com/adamsitnik))
-* [d06086](https://github.com/dotnet/BenchmarkDotNet/commit/d06086dc6635cf8876dc6c2613ffe04c02775015) minor improvements (by [@adamsitnik](https://github.com/adamsitnik))
-* [116119](https://github.com/dotnet/BenchmarkDotNet/commit/11611970e6d15cc4a7f5aa8880a28541fbaa1f43) group instructions into maps for better visualization (by [@adamsitnik](https://github.com/adamsitnik))
-* [d19b1e](https://github.com/dotnet/BenchmarkDotNet/commit/d19b1e4d3e4803482258961937c6452362812e40) test fix: split on any new line ;) (by [@adamsitnik](https://github.com/adamsitnik))
-* [647a67](https://github.com/dotnet/BenchmarkDotNet/commit/647a6745da75bf3893f2e9b7ec35b3ff20a14caa) Merge branch 'asm' (by [@adamsitnik](https://github.com/adamsitnik))
-* [91c8e4](https://github.com/dotnet/BenchmarkDotNet/commit/91c8e4a1279cda032051287dc6f2eee17570dcbd) move disassembler stuff to resources of Core project to make it super easy to... (by [@adamsitnik](https://github.com/adamsitnik))
-* [363900](https://github.com/dotnet/BenchmarkDotNet/commit/36390021da10c52e3a43cbde30903f12aa1235eb) Remove --no-build argument for dotnet test & pack commands. (by [@Ky7m](https://github.com/Ky7m))
-* [22e993](https://github.com/dotnet/BenchmarkDotNet/commit/22e993c1c4957ed1c7c6cb94f05b99354ae4de1f) Disable parallel build option (by [@Ky7m](https://github.com/Ky7m))
-* [9c327c](https://github.com/dotnet/BenchmarkDotNet/commit/9c327cb0d2f506cb23c60f7124f3f9559b5ae37b) Merge pull request #531 from Ky7m/removes-no-build-argument (by [@adamsitnik](https://github.com/adamsitnik))
-* [20db28](https://github.com/dotnet/BenchmarkDotNet/commit/20db288382f2f05bb803d0a2ba491bea0979109c) the docs for Disassembly Diagnoser, #437 (by [@adamsitnik](https://github.com/adamsitnik))
-* [13732b](https://github.com/dotnet/BenchmarkDotNet/commit/13732bf1b92008f0f0292bc4c6cd744b119e1fbe) added asm report with navigation (by [@adamsitnik](https://github.com/adamsitnik))
-* [33ee03](https://github.com/dotnet/BenchmarkDotNet/commit/33ee030859637029c30209579135307fd6fad522) fix type of local in EmitInvokeMultipleBody (by [@pentp](https://github.com/pentp))
-* [7d943f](https://github.com/dotnet/BenchmarkDotNet/commit/7d943f24c43314f38efc3ea0ea20cdcca11803cf) Merge pull request #532 from pentp/master (by [@adamsitnik](https://github.com/adamsitnik))
-* [4d173d](https://github.com/dotnet/BenchmarkDotNet/commit/4d173d728cae184e464a347d4128d6e427e05f22) RyuJit 32bit support for .NET Core, fixes #310, fixes #533 (by [@adamsitnik](https://github.com/adamsitnik))
-* [5f5237](https://github.com/dotnet/BenchmarkDotNet/commit/5f52378d3a936cfc2c38b39c25df5804e9340135) test fix (set platform in explicit way to avoid lack of 32-bit .NET Core sdk ... (by [@adamsitnik](https://github.com/adamsitnik))
-* [f359c9](https://github.com/dotnet/BenchmarkDotNet/commit/f359c960c3659d361926843353acc97eb29220ac) allow the users to set custom RuntimeFrameworkVersion, fixes #535 (by [@adamsitnik](https://github.com/adamsitnik))
-* [264150](https://github.com/dotnet/BenchmarkDotNet/commit/264150a8860e88fbedaece09395e5a0c5ac2987a) disassembler: print the results in machine code order, not il, part of #536 (by [@adamsitnik](https://github.com/adamsitnik))
-* [0088bd](https://github.com/dotnet/BenchmarkDotNet/commit/0088bd8d8b8af06e709471eb5c1d4485d222e470) Detecting virtual machine hypervisor, #167 (#527) (by [@lukasz-pyrzyk](https://github.com/lukasz-pyrzyk))
-* [007444](https://github.com/dotnet/BenchmarkDotNet/commit/00744465d79c7592cd9827de2c443c2f648855f7) print all returns (maps with negative ILOffset are not always prolog or epilo... (by [@adamsitnik](https://github.com/adamsitnik))
-* [aebc32](https://github.com/dotnet/BenchmarkDotNet/commit/aebc32a33717ba1b9f872ddf8dc112d8954ff3ec) empty methods for LegacyJit64 have only maps with negative ILOffset, #536 (by [@adamsitnik](https://github.com/adamsitnik))
-* [ba7489](https://github.com/dotnet/BenchmarkDotNet/commit/ba7489f696d1cf099808e3169f4808a02abf4eca) docs for Toolchains, closes #537 (by [@adamsitnik](https://github.com/adamsitnik))
-* [8c4f53](https://github.com/dotnet/BenchmarkDotNet/commit/8c4f531c32ad73bfae2fe6043be68147b16895e2) allow the users to specify custom build configuration, #466, close #528 (by [@adamsitnik](https://github.com/adamsitnik))
-* [eb80b2](https://github.com/dotnet/BenchmarkDotNet/commit/eb80b2d9d04970a939b5713613df3e456ca9592c) Environment Variables support, #262 (by [@adamsitnik](https://github.com/adamsitnik))
-* [ab7045](https://github.com/dotnet/BenchmarkDotNet/commit/ab704540f000958b6aaa19ff629dffeb709f5b9f) test fixes ;) (by [@adamsitnik](https://github.com/adamsitnik))
-* [455c60](https://github.com/dotnet/BenchmarkDotNet/commit/455c60c378336456b206060d40d27f7caf830bb8) allow the users to specify custom arguments (Mono, MsBuild), #466, #262 (by [@adamsitnik](https://github.com/adamsitnik))
-* [e03384](https://github.com/dotnet/BenchmarkDotNet/commit/e033842007741eee512c40af779df477071ec381) make sure that all new custom settings are presented in human friendly way, #262 (by [@adamsitnik](https://github.com/adamsitnik))
-* [cc8d07](https://github.com/dotnet/BenchmarkDotNet/commit/cc8d074586d67dc49b9d18309fbd2fb95e5f3199) enforce TreatWarningsAsErrors=False in auto-generated csproj to override glob... (by [@adamsitnik](https://github.com/adamsitnik))
-* [97ab49](https://github.com/dotnet/BenchmarkDotNet/commit/97ab49cf527d4e5c606c32c08da18ee3745b9c2a) target .NET Core 2.0 to take full advantage of the new API, fixes #539 (by [@adamsitnik](https://github.com/adamsitnik))
-* [8b2c7e](https://github.com/dotnet/BenchmarkDotNet/commit/8b2c7e990bbf9add0394fa79ad3f42f6817d7715) check if reference assemblies are installed when choosing the default .NET fr... (by [@adamsitnik](https://github.com/adamsitnik))
-* [feabd1](https://github.com/dotnet/BenchmarkDotNet/commit/feabd17a535493cdf108dcab772f98f36f5da653) bump the .NET Core version, #539 (by [@adamsitnik](https://github.com/adamsitnik))
-* [a21f86](https://github.com/dotnet/BenchmarkDotNet/commit/a21f86f7b425318b3d13f79bf37d5dc13eed94c1) for .NET Core 1.1 we should run only the Backward Compatibility tests. #539 (by [@adamsitnik](https://github.com/adamsitnik))
-* [b7a966](https://github.com/dotnet/BenchmarkDotNet/commit/b7a96614bb42158d11454860dbe3b52691aa9e7c) typo fix (by [@adamsitnik](https://github.com/adamsitnik))
-* [73a30a](https://github.com/dotnet/BenchmarkDotNet/commit/73a30a291cbb752337a886b88dbb93a3837aa5f7) docs: Customizing Mono, Env Variables & minor updates, fixes #262 (by [@adamsitnik](https://github.com/adamsitnik))
-* [612b41](https://github.com/dotnet/BenchmarkDotNet/commit/612b414ac65bc4b953b85fa42b6931efa8ee718f) exclude Artifacts for disassembler projects, fixes #540 (by [@adamsitnik](https://github.com/adamsitnik))
-* [360326](https://github.com/dotnet/BenchmarkDotNet/commit/360326314862b8042dc523d5a43b15be93a5aeee) typo, #540 (by [@adamsitnik](https://github.com/adamsitnik))
-* [f3e4ae](https://github.com/dotnet/BenchmarkDotNet/commit/f3e4aea534602384d49d7ecb49f0ac6fb21ec7fa) show nice error when Job.Dry is used for Disassembler, fixes #542 (by [@adamsitnik](https://github.com/adamsitnik))
-* [c6bbda](https://github.com/dotnet/BenchmarkDotNet/commit/c6bbda4e1eb69218e7981d8aa2b0d59344c5ebaf) allow to specify custom dotnet cli path to compare RyuJit 32 vs 64 for .NET C... (by [@adamsitnik](https://github.com/adamsitnik))
-* [a0c7e5](https://github.com/dotnet/BenchmarkDotNet/commit/a0c7e5e90091b3193c1cdb7c46680678ad1b7a16) Add info about Redstone 3,4 in WindowsBrandVersions (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [d42262](https://github.com/dotnet/BenchmarkDotNet/commit/d42262cf517aaa00d0a885d3f9bb0c78bbfb9949) Additional info about WindowsBrandVersions (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [cd0a1f](https://github.com/dotnet/BenchmarkDotNet/commit/cd0a1fd417756339c7a4fe6d827c21af65f5d3c6) Improve formatting in WindowsBrandVersions (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [1cd844](https://github.com/dotnet/BenchmarkDotNet/commit/1cd8443e9fe7fdf34ee88140771aa8d7a63783c1) Fix OsBrandStringTests.WindowsIsPrettified (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [f00787](https://github.com/dotnet/BenchmarkDotNet/commit/f00787c974a33915732a4915c452f3e3ece857e6) Fix markdown headers (by [@jawn](https://github.com/jawn))
-* [363814](https://github.com/dotnet/BenchmarkDotNet/commit/36381449199cd08ba7f52a37eea5d29bacf2f288) Merge pull request #547 from jawn/patch-1 (by [@adamsitnik](https://github.com/adamsitnik))
-* [405c4c](https://github.com/dotnet/BenchmarkDotNet/commit/405c4c43ba1a0c548f11b45a9463aa6ecfc84819) Update dotnet cli version from 1.0.4 to 2.0.0 for non-Windows system. (#548) (by [@Ky7m](https://github.com/Ky7m))
-* [97a9b2](https://github.com/dotnet/BenchmarkDotNet/commit/97a9b2b6bffe76956ca20061ff3a1b8e6e40a944) Fix compiler warning connected to problem with the XML tag. (by [@Ky7m](https://github.com/Ky7m))
-* [24585d](https://github.com/dotnet/BenchmarkDotNet/commit/24585d72ad714c7ae6f90cbd82813ca851fea423) Remove PackageTargetFallback element. (by [@Ky7m](https://github.com/Ky7m))
-* [174c19](https://github.com/dotnet/BenchmarkDotNet/commit/174c19dced6883c9f5d810303b7e969739e1cc2b) Merge pull request #549 from Ky7m/csproj-files-cleanup (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [84a4e2](https://github.com/dotnet/BenchmarkDotNet/commit/84a4e242dc1dcc2fb4eb14280a44ce9fac1155d8) Fix exporters to use fully qualified filenames (#552), fixes #529 (by [@Teknikaali](https://github.com/Teknikaali))
-* [a7578a](https://github.com/dotnet/BenchmarkDotNet/commit/a7578addd708367adbdecffff460420aa51192eb) disable Disassembler tests for non-Windows OS, fixes #555 (by [@adamsitnik](https://github.com/adamsitnik))
-* [a147dd](https://github.com/dotnet/BenchmarkDotNet/commit/a147dd184accbc7c773bfedf9bd954b73432e7ac) Remove leading space character in a MD table row, fixes #556 (by [@rolshevsky](https://github.com/rolshevsky))
-* [9c194c](https://github.com/dotnet/BenchmarkDotNet/commit/9c194c663a2c8971763d0f81a7d5361c00f07792) DisassemblyDiagnoser crashes on overloaded benchmark, fixes #562 (by [@adamsitnik](https://github.com/adamsitnik))
-* [9076a6](https://github.com/dotnet/BenchmarkDotNet/commit/9076a69f4e4e471d7820e12aef9b736c6d64a60f) give users nice warning when they run into shadow copy issues, fixes #558 (by [@adamsitnik](https://github.com/adamsitnik))
-* [1670ca](https://github.com/dotnet/BenchmarkDotNet/commit/1670ca349c303b83c373855705ea4f4679f99ad0) the build fix ;) (by [@adamsitnik](https://github.com/adamsitnik))
-* [d5854d](https://github.com/dotnet/BenchmarkDotNet/commit/d5854df76721cc5b93172c308de08e07b5a38ded) Include UBR in Windows versions (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [1fcfee](https://github.com/dotnet/BenchmarkDotNet/commit/1fcfeea3965735232fcaec05503d31708eb4f35a) display correct runtime info in exported disassembly result, fixes #559 (by [@adamsitnik](https://github.com/adamsitnik))
-* [de45ad](https://github.com/dotnet/BenchmarkDotNet/commit/de45ad9d67a1b90ccfb65491b25654d771becd4c) Single point of full config creation (#565) (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [395a52](https://github.com/dotnet/BenchmarkDotNet/commit/395a52cf30491e292b313abddb316ce4de1b24b0) make sure filters don't exclude Setup/Cleanup methods, fixes #564 (by [@adamsitnik](https://github.com/adamsitnik))
-* [4276ac](https://github.com/dotnet/BenchmarkDotNet/commit/4276acbe2416733cde5c0a87fd54886f5e96465d) fail when running benchmarks in Debug with DefaultConfig, fixes #561 (by [@adamsitnik](https://github.com/adamsitnik))
-* [0145f8](https://github.com/dotnet/BenchmarkDotNet/commit/0145f8a2b7cb7f1f9b25edcc2511d712646f4bd4) Fix build number for Windows 10 Fall Creators Update (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [7f7a7c](https://github.com/dotnet/BenchmarkDotNet/commit/7f7a7c5fe58271444eef85a12d07c168e8a3cafc) Update cakebuild scripts (#569) (by [@Ky7m](https://github.com/Ky7m))
-* [cff577](https://github.com/dotnet/BenchmarkDotNet/commit/cff577fd2531d19660837c2fe389014059bf20e4) introduce ParamsSource attribute, fixes #350, part of #256 (by [@adamsitnik](https://github.com/adamsitnik))
-* [3af915](https://github.com/dotnet/BenchmarkDotNet/commit/3af9154ef11c43a504d6abf5c3cd620ea49c0616) introduce IParam to support complex, not-compile time constants as parameters... (by [@adamsitnik](https://github.com/adamsitnik))
-* [4a877f](https://github.com/dotnet/BenchmarkDotNet/commit/4a877f078ef429c08aadef3d12e8fa3ba58529e7) build the disassemblers before .Core, but don't add the dependency to them to... (by [@adamsitnik](https://github.com/adamsitnik))
-* [188850](https://github.com/dotnet/BenchmarkDotNet/commit/1888504c3e74b716a22973ab2fc06b6da9f515f9) specify all the embedded resources in explicit way to avoid some crazy MSBuil... (by [@adamsitnik](https://github.com/adamsitnik))
-* [b5fbbf](https://github.com/dotnet/BenchmarkDotNet/commit/b5fbbfd55d1983ef88a8e7264f126ca729d8333e) Typo fix (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [eb90ce](https://github.com/dotnet/BenchmarkDotNet/commit/eb90ce6d4108980b46ffd2cd19392e191dbc4e14) Update message in JitOptimizationsValidator (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [6c1137](https://github.com/dotnet/BenchmarkDotNet/commit/6c113716e3b31e967342afb1ea4076626b007a39) Updated DotSettings (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [3d0dfe](https://github.com/dotnet/BenchmarkDotNet/commit/3d0dfe4ae68b1dd9146870382ed359293389522f) Set library version: 0.10.10 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Contributors (12)
-
-* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik))
-* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* Andrey Dorokhov ([@aidmsu](https://github.com/aidmsu))
-* Anssi Kettunen ([@Teknikaali](https://github.com/Teknikaali))
-* Bernard Vander Beken ([@jawn](https://github.com/jawn))
-* Ian Johnson ([@ipjohnson](https://github.com/ipjohnson))
-* ig-sinicyn ([@ig-sinicyn](https://github.com/ig-sinicyn))
-* Igor Fesenko ([@Ky7m](https://github.com/Ky7m))
-* Jiri Cincura
-* Łukasz Pyrzyk ([@lukasz-pyrzyk](https://github.com/lukasz-pyrzyk))
-* Pent Ploompuu ([@pentp](https://github.com/pentp))
-* Rostislav Olshevsky ([@rolshevsky](https://github.com/rolshevsky))
-
-Thank you very much!
-
diff --git a/docs/_changelog/details/v0.10.11.md b/docs/_changelog/details/v0.10.11.md
deleted file mode 100644
index 01b9499293..0000000000
--- a/docs/_changelog/details/v0.10.11.md
+++ /dev/null
@@ -1,60 +0,0 @@
-## Milestone details
-
-In the [v0.10.11](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.10.11) scope,
-6 issues were resolved and 8 pull requests were merged.
-This release includes 18 commits by 8 contributors.
-
-## Resolved issues (6)
-
-* [#509](https://github.com/dotnet/BenchmarkDotNet/issues/509) Better formatting for the Scaled column
-* [#579](https://github.com/dotnet/BenchmarkDotNet/issues/579) Improve error message about non-optimized dependencies (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#580](https://github.com/dotnet/BenchmarkDotNet/issues/580) How to get benchmarks running from LINQPad? (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#587](https://github.com/dotnet/BenchmarkDotNet/issues/587) Support netcoreapp2.1 (assignee: [@eerhardt](https://github.com/eerhardt))
-* [#588](https://github.com/dotnet/BenchmarkDotNet/issues/588) Broken appveyor build
-* [#593](https://github.com/dotnet/BenchmarkDotNet/issues/593) BenchmarkDotNet is not working with LinqPad (assignee: [@adamsitnik](https://github.com/adamsitnik))
-
-## Merged pull requests (8)
-
-* [#492](https://github.com/dotnet/BenchmarkDotNet/pull/492) ByRef and Stack-only support (by [@adamsitnik](https://github.com/adamsitnik))
-* [#575](https://github.com/dotnet/BenchmarkDotNet/pull/575) xUnit runner upgrade and small tests refactoring (by [@Ky7m](https://github.com/Ky7m))
-* [#584](https://github.com/dotnet/BenchmarkDotNet/pull/584) Fixed typo. (by [@cincuranet](https://github.com/cincuranet))
-* [#589](https://github.com/dotnet/BenchmarkDotNet/pull/589) Add support for netcoreapp2.1 (by [@eerhardt](https://github.com/eerhardt))
-* [#590](https://github.com/dotnet/BenchmarkDotNet/pull/590) Add precision to Scaled Column (by [@Chrisgozd](https://github.com/Chrisgozd))
-* [#591](https://github.com/dotnet/BenchmarkDotNet/pull/591) Fix CI build (by [@Ky7m](https://github.com/Ky7m))
-* [#592](https://github.com/dotnet/BenchmarkDotNet/pull/592) Removed a xunit workaround because an issue has been fixed (by [@AlekseiKudelia](https://github.com/AlekseiKudelia))
-* [#597](https://github.com/dotnet/BenchmarkDotNet/pull/597) Fix typo in WithCustomBuildConfiguration API (by [@benjamin-hodgson](https://github.com/benjamin-hodgson))
-
-## Commits (18)
-
-* [2a2e6c](https://github.com/dotnet/BenchmarkDotNet/commit/2a2e6caf7a0bc2cc58508c528c603a2d72c77b59) ByRef and Stack-only support (#492) (by [@adamsitnik](https://github.com/adamsitnik))
-* [676c77](https://github.com/dotnet/BenchmarkDotNet/commit/676c777a05c6f2a9be9b297df8003689af659a7d) xUnit runner upgrade and small tests refactoring (#575) (by [@Ky7m](https://github.com/Ky7m))
-* [7a89cd](https://github.com/dotnet/BenchmarkDotNet/commit/7a89cd2593618fe05dac68498a701a509bd6a4f8) Fixed typo. (by [@cincuranet](https://github.com/cincuranet))
-* [dd28b2](https://github.com/dotnet/BenchmarkDotNet/commit/dd28b2afb89b9111cc7c9bf85b055f5b3cc7cbe7) add better error text for non-optimized dlls + add it to FAQ, fixes #579 (by [@adamsitnik](https://github.com/adamsitnik))
-* [67e659](https://github.com/dotnet/BenchmarkDotNet/commit/67e659b580b881de842f9c76dd56d0f21c447db3) detect LINQPad problems and tell the user how to change them, fixes #580 (by [@adamsitnik](https://github.com/adamsitnik))
-* [543bd6](https://github.com/dotnet/BenchmarkDotNet/commit/543bd6f0dff04239669ff5a190a8176844a9dcea) don't warn about non-optimized LINQPad dependency (it's OK), #580 (by [@adamsitnik](https://github.com/adamsitnik))
-* [8a94f2](https://github.com/dotnet/BenchmarkDotNet/commit/8a94f271d4478226af0d2003a6d0932cd42ecd1d) Add support for netcoreapp2.1 (by [@eerhardt](https://github.com/eerhardt))
-* [fb39db](https://github.com/dotnet/BenchmarkDotNet/commit/fb39db6e0f9bcfbf9396ad7d564ec220b8834b80) Merge pull request #589 from eerhardt/SupportNetCoreApp21 (by [@adamsitnik](https://github.com/adamsitnik))
-* [ef11f0](https://github.com/dotnet/BenchmarkDotNet/commit/ef11f065bceff6a2020bc09dd0ca535f29e5afb8) Add CoverageFilterXml in DotSettings (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [962b6a](https://github.com/dotnet/BenchmarkDotNet/commit/962b6a708420c535ba0a8819af04b457ee2ff25a) Update DotSetttings (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [717b62](https://github.com/dotnet/BenchmarkDotNet/commit/717b62b70a48ef20fdafb8792fe01cea63de1f78) BenchmarkDotNet.Horology cleanup (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [d1720b](https://github.com/dotnet/BenchmarkDotNet/commit/d1720b77eccb0b9a686bdfdae166edc855711572) Upgrade version to 2.0.3 and explicitly specify fx version for .netcoreapp2.0 (by [@Ky7m](https://github.com/Ky7m))
-* [94d47a](https://github.com/dotnet/BenchmarkDotNet/commit/94d47a39f154368519523fe99f39c640ed654baa) Removed a xunit workaround because an issue has been fixed (by Aleksei Kudelia)
-* [15d723](https://github.com/dotnet/BenchmarkDotNet/commit/15d72388436c1060e87662b5f4519b9e7e071627) More details in GetOsVersion on macOS (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [696f89](https://github.com/dotnet/BenchmarkDotNet/commit/696f89908e82118ecf9989c2484c23a6f52ba6b2) Add precision to Scaled Column (#590) (by [@Chrisgozd](https://github.com/Chrisgozd))
-* [e54924](https://github.com/dotnet/BenchmarkDotNet/commit/e54924b5a2c5080c3e5e0b528d0d46dd9ffef889) Fix typo in WithCustomBuildConfiguration API (by Benjamin Hodgson)
-* [8de978](https://github.com/dotnet/BenchmarkDotNet/commit/8de978e67772ff3f1f4e47cabaa2c94ce198234c) Merge pull request #597 from benjamin-hodgson/patch-1 (by [@adamsitnik](https://github.com/adamsitnik))
-* [af1510](https://github.com/dotnet/BenchmarkDotNet/commit/af15109226821ffcd0774df364f6d7695c4a2fdb) Set library version: 0.10.11 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Contributors (8)
-
-* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik))
-* Aleksei Kudelia
-* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* Benjamin Hodgson
-* Christopher Gozdziewski ([@Chrisgozd](https://github.com/Chrisgozd))
-* Eric Erhardt ([@eerhardt](https://github.com/eerhardt))
-* Igor Fesenko ([@Ky7m](https://github.com/Ky7m))
-* Jiri Cincura ↹ ([@cincuranet](https://github.com/cincuranet))
-
-Thank you very much!
-
diff --git a/docs/_changelog/details/v0.10.12.md b/docs/_changelog/details/v0.10.12.md
deleted file mode 100644
index 437e956a77..0000000000
--- a/docs/_changelog/details/v0.10.12.md
+++ /dev/null
@@ -1,96 +0,0 @@
-## Milestone details
-
-In the [v0.10.12](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.10.12) scope,
-15 issues were resolved and 10 pull requests were merged.
-This release includes 42 commits by 9 contributors.
-
-## Resolved issues (15)
-
-* [#273](https://github.com/dotnet/BenchmarkDotNet/issues/273) Create a tail call diagnoser
-* [#442](https://github.com/dotnet/BenchmarkDotNet/issues/442) Is it possible to configure benchmark to assign rank for runtime? (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#543](https://github.com/dotnet/BenchmarkDotNet/issues/543) Run Disassembly Diagnoser without extra run (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#546](https://github.com/dotnet/BenchmarkDotNet/issues/546) Synthesizing labels for jump targets (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#574](https://github.com/dotnet/BenchmarkDotNet/issues/574) Display VM hypervisor in summary section (assignee: [@lukasz-pyrzyk](https://github.com/lukasz-pyrzyk))
-* [#582](https://github.com/dotnet/BenchmarkDotNet/issues/582) Print amount of logical and physical core (assignee: [@morgan-kn](https://github.com/morgan-kn))
-* [#599](https://github.com/dotnet/BenchmarkDotNet/issues/599) Proper HTML escaping of BenchmarkAttribute Description
-* [#606](https://github.com/dotnet/BenchmarkDotNet/issues/606) Improve Memory Diagnoser (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#608](https://github.com/dotnet/BenchmarkDotNet/issues/608) Properly escaping generated markdown (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#612](https://github.com/dotnet/BenchmarkDotNet/issues/612) Disassembler DisassembleMethod fails with "Object reference not set to an instance of an object.", (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#617](https://github.com/dotnet/BenchmarkDotNet/issues/617) Allow baseline per category (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#618](https://github.com/dotnet/BenchmarkDotNet/issues/618) Enable ApprovalTests in .NET Core 2.0 tests (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#621](https://github.com/dotnet/BenchmarkDotNet/issues/621) Try to search for missing references if build fails (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#622](https://github.com/dotnet/BenchmarkDotNet/issues/622) Support of new GC settings (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#623](https://github.com/dotnet/BenchmarkDotNet/issues/623) RPlotExporter uses wrong path to csv measurements (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Merged pull requests (10)
-
-* [#573](https://github.com/dotnet/BenchmarkDotNet/pull/573) Сreate a tail call diagnoser (by [@GeorgePlotnikov](https://github.com/GeorgePlotnikov))
-* [#576](https://github.com/dotnet/BenchmarkDotNet/pull/576) Display VM name in summary section, fixes #574 (by [@lukasz-pyrzyk](https://github.com/lukasz-pyrzyk))
-* [#595](https://github.com/dotnet/BenchmarkDotNet/pull/595) Migrate all project to new project system. (by [@mfilippov](https://github.com/mfilippov))
-* [#598](https://github.com/dotnet/BenchmarkDotNet/pull/598) Added info about the new TailCallDiagnoser (by [@GeorgePlotnikov](https://github.com/GeorgePlotnikov))
-* [#603](https://github.com/dotnet/BenchmarkDotNet/pull/603) Fix HTML Encoding for Html Exporter (by [@Chrisgozd](https://github.com/Chrisgozd))
-* [#605](https://github.com/dotnet/BenchmarkDotNet/pull/605) Grammar (by [@onionhammer](https://github.com/onionhammer))
-* [#607](https://github.com/dotnet/BenchmarkDotNet/pull/607) Print amount of logical and physical core #582 (by [@morgan-kn](https://github.com/morgan-kn))
-* [#615](https://github.com/dotnet/BenchmarkDotNet/pull/615) Quick fix Disassembler.Program.GetMethod when more than one method found just return null (by [@nietras](https://github.com/nietras))
-* [#619](https://github.com/dotnet/BenchmarkDotNet/pull/619) Logical group support, fixes #617 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#620](https://github.com/dotnet/BenchmarkDotNet/pull/620) New README.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Commits (42)
-
-* [6f587d](https://github.com/dotnet/BenchmarkDotNet/commit/6f587d99897ed67c94277c4c0d34f838e586ff92) Migrate all project to new project system. (by [@mfilippov](https://github.com/mfilippov))
-* [47ba57](https://github.com/dotnet/BenchmarkDotNet/commit/47ba57d9e196a81710eb002eb3af4fb6401b7e78) added info about the new TailCallDiagnoser (by [@GeorgePlotnikov](https://github.com/GeorgePlotnikov))
-* [c1a4b2](https://github.com/dotnet/BenchmarkDotNet/commit/c1a4b20b11165e696f198e0e68a0a5c2b991b65e) Сreate a tail call diagnoser (#573) (by [@GeorgePlotnikov](https://github.com/GeorgePlotnikov))
-* [ebe3e2](https://github.com/dotnet/BenchmarkDotNet/commit/ebe3e2f90f2a974fdf1ec3524f8aa79674beccc5) Merge pull request #598 from GeorgePlotnikov/patch-1 (by [@adamsitnik](https://github.com/adamsitnik))
-* [6249f0](https://github.com/dotnet/BenchmarkDotNet/commit/6249f0a4ee37904fac418cd8715af9d8f667c01d) some polishing of the JIT diagnosers (by [@adamsitnik](https://github.com/adamsitnik))
-* [119231](https://github.com/dotnet/BenchmarkDotNet/commit/119231c8ebf94673dcfdbd5bacc1cdfde4a294c4) Fix HTML Encoding for Html Exporter (#603), fixes #599 (by [@Chrisgozd](https://github.com/Chrisgozd))
-* [fe3f30](https://github.com/dotnet/BenchmarkDotNet/commit/fe3f3046c26ef0a63e55c7f97651b5ee815e22ee) Disassembly Prettifier, fixes #546 (by [@adamsitnik](https://github.com/adamsitnik))
-* [3eb63f](https://github.com/dotnet/BenchmarkDotNet/commit/3eb63ff8c6b4a571423bc2b2d2cf086e1c2f993f) Merge pull request #595 from mfilippov/new-fs-vb-proj (by [@adamsitnik](https://github.com/adamsitnik))
-* [16d03f](https://github.com/dotnet/BenchmarkDotNet/commit/16d03f65cd6198fd0003c7608a986b823c638538) make our F# samples work for .NET Core 2.0 (by [@adamsitnik](https://github.com/adamsitnik))
-* [d06de7](https://github.com/dotnet/BenchmarkDotNet/commit/d06de7af52d60a5d92b3665e9d20b0be3dfc29e7) bring back our old Visual Basic and F# integration tests (by [@adamsitnik](https://github.com/adamsitnik))
-* [63249b](https://github.com/dotnet/BenchmarkDotNet/commit/63249b50ec6dfeb6719ba9edb911404e16bf7f02) "Kaby Lake R" and "Coffee Lake" support in ProcessorBrandStringHelper (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [a8a09e](https://github.com/dotnet/BenchmarkDotNet/commit/a8a09ebbc86c51167cf90f18c1658d52afcf1b70) disassembly prettifier: highlighting references to labels, jumping to next on... (by [@adamsitnik](https://github.com/adamsitnik))
-* [e6d747](https://github.com/dotnet/BenchmarkDotNet/commit/e6d747efd2d19380d8da388cceb3471b5e894dbd) Grammar (by [@onionhammer](https://github.com/onionhammer))
-* [fef4aa](https://github.com/dotnet/BenchmarkDotNet/commit/fef4aa67b3c3bf6aac8f2281ee8fbd763660cba4) Merge pull request #605 from onionhammer/patch-1 (by [@adamsitnik](https://github.com/adamsitnik))
-* [ffacd7](https://github.com/dotnet/BenchmarkDotNet/commit/ffacd74b63f364e88aa8afa597fbbc84d6a564c2) don't require extra run for DisassemblyDiagnoser, fixes #543, #542 (by [@adamsitnik](https://github.com/adamsitnik))
-* [bcac26](https://github.com/dotnet/BenchmarkDotNet/commit/bcac26452dbed7ba310ecef8a4ec0814cd22591d) revert last commit change (run global setup regardless of Jitting) (by [@adamsitnik](https://github.com/adamsitnik))
-* [3e87d8](https://github.com/dotnet/BenchmarkDotNet/commit/3e87d8699b27751ef05e8303f6ccb1f6d9c74b44) don't perform an extra run to get GC stats for .NET Core, part of #550 (by [@adamsitnik](https://github.com/adamsitnik))
-* [f87dbc](https://github.com/dotnet/BenchmarkDotNet/commit/f87dbc5357e7f15d7913e2136ac73c8d1af8cfd1) obtain GC stats in separate iteration run, no overhead, support for iteration... (by [@adamsitnik](https://github.com/adamsitnik))
-* [e5fe0f](https://github.com/dotnet/BenchmarkDotNet/commit/e5fe0f87dc0043a10648faf01fc29805624c5c3a) update to C# 7.1 so we can use all the latest features (by [@adamsitnik](https://github.com/adamsitnik))
-* [bc50b2](https://github.com/dotnet/BenchmarkDotNet/commit/bc50b2e851aabe15c47656897ef5024279e4e31c) build benchmarks in Parallel, part of #550 (by [@adamsitnik](https://github.com/adamsitnik))
-* [e59590](https://github.com/dotnet/BenchmarkDotNet/commit/e595902a377085cb2f44fca6fcab3efae82cda06) Display VM name in summary section, fixes #574 (#576) (by [@lukasz-pyrzyk](https://github.com/lukasz-pyrzyk))
-* [8908f8](https://github.com/dotnet/BenchmarkDotNet/commit/8908f8798f0914ce6abe925a0c14e063ace6964d) fix GetMethod (by [@nietras](https://github.com/nietras))
-* [4ca82d](https://github.com/dotnet/BenchmarkDotNet/commit/4ca82db5857cda64732743bb5e47199f4300fcf5) Merge pull request #615 from nietras/disassembler-more-than-one-method-fix (by [@adamsitnik](https://github.com/adamsitnik))
-* [387ae5](https://github.com/dotnet/BenchmarkDotNet/commit/387ae54f1fedffb78f5955c7935034ecde3cc856) be more defensive when trying to read source code with disassembler, part of ... (by [@adamsitnik](https://github.com/adamsitnik))
-* [703815](https://github.com/dotnet/BenchmarkDotNet/commit/7038155d914e5679696b17d18524e8066256d14e) docs: how to contribute to disassembler (by [@adamsitnik](https://github.com/adamsitnik))
-* [242671](https://github.com/dotnet/BenchmarkDotNet/commit/242671b88d188827f0cc83a6da1dfef4986f2e03) Enable ApprovalTests in .NET Core 2.0 tests, fixes #618 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [c4d21b](https://github.com/dotnet/BenchmarkDotNet/commit/c4d21bf7e7a022c6cffcc59ddd35415a83b93243) Print amount of logical and physical core #582 (#607) (by [@morgan-kn](https://github.com/morgan-kn))
-* [e33e84](https://github.com/dotnet/BenchmarkDotNet/commit/e33e848e1679fc5ceb88ec27dc9ecad1041b0a34) Add HtmlReady dialect for MarkdownExporter, fixes #608 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [cf167b](https://github.com/dotnet/BenchmarkDotNet/commit/cf167b9f092abc157677081bbf2955ee50ad6934) Enable html escaping for GitHub markdown dialect, fixes #608 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [8bb28b](https://github.com/dotnet/BenchmarkDotNet/commit/8bb28b30a0a2913ce8a92af8c60e27884cd7a90c) Logical group support, fixes #617 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [ae87c6](https://github.com/dotnet/BenchmarkDotNet/commit/ae87c6d54670f21707069c7d4b432ba886212312) Merge pull request #619 from dotnet/logical-groups (by [@adamsitnik](https://github.com/adamsitnik))
-* [14e90b](https://github.com/dotnet/BenchmarkDotNet/commit/14e90bfce8c1430b6235dd6c6e7e94d7136b0d67) parallel build post fix: don't write the compilation errors to NullLogger, re... (by [@adamsitnik](https://github.com/adamsitnik))
-* [db4ae8](https://github.com/dotnet/BenchmarkDotNet/commit/db4ae81451251aaf5cce62b4bf059de9642e54f1) Try to search for missing references if build fails, fixes #621 (by [@adamsitnik](https://github.com/adamsitnik))
-* [0eba0f](https://github.com/dotnet/BenchmarkDotNet/commit/0eba0f548400531c7992f0b12d7d1766e213ba9b) Support of new GC settings, fixes #622 (by [@adamsitnik](https://github.com/adamsitnik))
-* [e31b2d](https://github.com/dotnet/BenchmarkDotNet/commit/e31b2d410def2b7f3941ff44059d0ffdce0dc2ab) Revert Samples/Program.cs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [7f126b](https://github.com/dotnet/BenchmarkDotNet/commit/7f126ba124137155b146340f29117e0872be6d3e) Add logs in RPlotExporter (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [f8a447](https://github.com/dotnet/BenchmarkDotNet/commit/f8a4477120bcc8034fe5611db4de823b798cfe3a) Fix path to csv in RPlotExporter, fixes #623 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [273f50](https://github.com/dotnet/BenchmarkDotNet/commit/273f5083babb4d7fd19843cbf2a9401a68568e6c) New plots in RPlotExporter (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [f293f0](https://github.com/dotnet/BenchmarkDotNet/commit/f293f0d5cb6ac42457a22a7637af4bd979f2e131) New README.md (#620) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5e3366](https://github.com/dotnet/BenchmarkDotNet/commit/5e3366729a9cd0a3064d90732610c3957d7f3efb) Update copyright year in docs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [ab7458](https://github.com/dotnet/BenchmarkDotNet/commit/ab74588dd79961887879d83bca0db590966bdc40) Update index in docs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [4616d4](https://github.com/dotnet/BenchmarkDotNet/commit/4616d48e55cc06ab777b1a5b14d95672df2a22f5) Set library version: 0.10.12 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Contributors (9)
-
-* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik))
-* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* Christopher Gozdziewski ([@Chrisgozd](https://github.com/Chrisgozd))
-* Erik O'Leary ([@onionhammer](https://github.com/onionhammer))
-* Georgii Plotnikov ([@GeorgePlotnikov](https://github.com/GeorgePlotnikov))
-* Irina Ananeva ([@morgan-kn](https://github.com/morgan-kn))
-* Łukasz Pyrzyk ([@lukasz-pyrzyk](https://github.com/lukasz-pyrzyk))
-* Mikhail Filippov ([@mfilippov](https://github.com/mfilippov))
-* nietras ([@nietras](https://github.com/nietras))
-
-Thank you very much!
-
diff --git a/docs/_changelog/details/v0.10.13.md b/docs/_changelog/details/v0.10.13.md
deleted file mode 100644
index ea302b9874..0000000000
--- a/docs/_changelog/details/v0.10.13.md
+++ /dev/null
@@ -1,103 +0,0 @@
-## Milestone details
-
-In the [v0.10.13](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.10.13) scope,
-15 issues were resolved and 9 pull requests were merged.
-This release includes 50 commits by 9 contributors.
-
-## Resolved issues (15)
-
-* [#541](https://github.com/dotnet/BenchmarkDotNet/issues/541) Mono Support for DisassemblyDiagnoser (assignee: [@morgan-kn](https://github.com/morgan-kn))
-* [#614](https://github.com/dotnet/BenchmarkDotNet/issues/614) Build fails with "'Microsoft.NETCore.App', version '1.1.2' was not found" probably due to 1.1.4 runtime not being available
-* [#626](https://github.com/dotnet/BenchmarkDotNet/issues/626) Support Visual Basic project files (.vbroj) targeting .NET Core (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#630](https://github.com/dotnet/BenchmarkDotNet/issues/630) Bug: Statistics.DivMean - NullReferenceException (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#631](https://github.com/dotnet/BenchmarkDotNet/issues/631) Bug: Generic benchmark class fails for DisassemblyDiagnoser with "Sequence contains no matching element" (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#632](https://github.com/dotnet/BenchmarkDotNet/issues/632) ParamsSource no longer sorted in results (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#634](https://github.com/dotnet/BenchmarkDotNet/issues/634) Extend SummaryOrderPolicy (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#636](https://github.com/dotnet/BenchmarkDotNet/issues/636) Unable to run Runner.exe --method MethodName (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#640](https://github.com/dotnet/BenchmarkDotNet/issues/640) Disassembler fails with generic instance (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#643](https://github.com/dotnet/BenchmarkDotNet/issues/643) BenchmarkDotNet should respect `LangVersion` project setting (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#644](https://github.com/dotnet/BenchmarkDotNet/issues/644) BenchmarkDotNet.Mathematics.RankHelper again. (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#648](https://github.com/dotnet/BenchmarkDotNet/issues/648) BenchmarkDotNet requires dotnet cli toolchain to be installed (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#651](https://github.com/dotnet/BenchmarkDotNet/issues/651) Support ANY CoreFX and CoreCLR builds (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#652](https://github.com/dotnet/BenchmarkDotNet/issues/652) BenchmarkSwitcher should support generic types with parameterless public ctors (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#653](https://github.com/dotnet/BenchmarkDotNet/issues/653) Proper way to run BenchmarkDotNet on macOS/Linux (assignee: [@adamsitnik](https://github.com/adamsitnik))
-
-## Merged pull requests (9)
-
-* [#624](https://github.com/dotnet/BenchmarkDotNet/pull/624) Upgrade build tools (by [@Ky7m](https://github.com/Ky7m))
-* [#625](https://github.com/dotnet/BenchmarkDotNet/pull/625) Fix xunit warnings connected to usage of Assert.Equal() to check for Null (by [@Ky7m](https://github.com/Ky7m))
-* [#633](https://github.com/dotnet/BenchmarkDotNet/pull/633) HostEnvironmentInfo: remove LogicalCoreCount (by [@morgan-kn](https://github.com/morgan-kn))
-* [#637](https://github.com/dotnet/BenchmarkDotNet/pull/637) Mono Support for DisassemblyDiagnoser #541 (by [@morgan-kn](https://github.com/morgan-kn))
-* [#639](https://github.com/dotnet/BenchmarkDotNet/pull/639) Portability.Cpu tests improvements (by [@morgan-kn](https://github.com/morgan-kn))
-* [#642](https://github.com/dotnet/BenchmarkDotNet/pull/642) sync DataContracts to CopiedDataContracts (by [@morgan-kn](https://github.com/morgan-kn))
-* [#645](https://github.com/dotnet/BenchmarkDotNet/pull/645) Fixing --help display for options (by [@ENikS](https://github.com/ENikS))
-* [#646](https://github.com/dotnet/BenchmarkDotNet/pull/646) Allow sorting by the Method name in DefaultOrderProvider and OrderProviderAttribute (by [@ENikS](https://github.com/ENikS))
-* [#666](https://github.com/dotnet/BenchmarkDotNet/pull/666) Plots...Examples...Added A config example in F# (by [@ScottHutchinson](https://github.com/ScottHutchinson))
-
-## Commits (50)
-
-* [a26e82](https://github.com/dotnet/BenchmarkDotNet/commit/a26e82671a8d5b2150a48f9b48327ccb0a0dda8f) Upgrade build tools: (by [@Ky7m](https://github.com/Ky7m))
-* [1643cb](https://github.com/dotnet/BenchmarkDotNet/commit/1643cbc27d269089f1ef8b14296e0674d6e2e3c9) Merge pull request #624 from Ky7m/upgrade-build-tools (by [@adamsitnik](https://github.com/adamsitnik))
-* [abae51](https://github.com/dotnet/BenchmarkDotNet/commit/abae518a04f113adbe51a4b01c402fca11c839c4) Fix xunit warnings connected to usage of Assert.Equal() to check for null val... (by [@Ky7m](https://github.com/Ky7m))
-* [fb68bc](https://github.com/dotnet/BenchmarkDotNet/commit/fb68bc7aef9624d6131062fbb4793291d5e2236a) support Visual Basic .NET Core projects, fixes #626 (by [@adamsitnik](https://github.com/adamsitnik))
-* [067a33](https://github.com/dotnet/BenchmarkDotNet/commit/067a33df2498343df56608cccd58e7caef78b74a) Remove redundant properties in common.props (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [80deb9](https://github.com/dotnet/BenchmarkDotNet/commit/80deb95e26f1ff1fc3149cf6165cb3a37326f01c) BuildNumber fix in common.props (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [87b458](https://github.com/dotnet/BenchmarkDotNet/commit/87b45810afc262333afaa5e456a2eaaa282a0e7b) Add CONTRIBUTING.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [8bcf42](https://github.com/dotnet/BenchmarkDotNet/commit/8bcf422f18c64b1f583fcc0cdf1dc80db78860b4) Add CODE_OF_CONDUCT.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [d3867d](https://github.com/dotnet/BenchmarkDotNet/commit/d3867daa99af931980b24370dd29cd865fca2505) HostEnvironmentInfo: remove LogicalCoreCount (#633) (by [@morgan-kn](https://github.com/morgan-kn))
-* [06e66a](https://github.com/dotnet/BenchmarkDotNet/commit/06e66aba6eac5045f063028baff5ca150b4804e5) Specify PLACE_SIMPLE_EMBEDDED_STATEMENT_ON_SAME_LINE in DotSettings (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [d8ac43](https://github.com/dotnet/BenchmarkDotNet/commit/d8ac43e5da1420c6a941091c04abc39c4816aa04) Mono Support for DisassemblyDiagnoser #541 (by [@morgan-kn](https://github.com/morgan-kn))
-* [4356da](https://github.com/dotnet/BenchmarkDotNet/commit/4356daafc64ea9bba84ee7b3cf6462875afc5c2b) Merge pull request #637 from morgan-kn/MonoSupportForDisassemblyDiagnoser (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [7572f4](https://github.com/dotnet/BenchmarkDotNet/commit/7572f4dd18e80e8f5c24884a771a9fdef022f171) Fix paths to images in docs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [f076df](https://github.com/dotnet/BenchmarkDotNet/commit/f076df788e6f71dcc45cf83b04c6005a6e404fa8) Portability.Cpu tests improvements (by morgan_kn)
-* [da6499](https://github.com/dotnet/BenchmarkDotNet/commit/da649942000a740e8e7156d1b31e1134ba03ea78) Merge pull request #639 from morgan-kn/TestsImprovment (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5dd1a5](https://github.com/dotnet/BenchmarkDotNet/commit/5dd1a5309c0f0a8883203289f42690c562b705a4) Disassembly Diagnoser: support for generic types, fixes #640 fixes #631 (by [@adamsitnik](https://github.com/adamsitnik))
-* [3c0e71](https://github.com/dotnet/BenchmarkDotNet/commit/3c0e719360336014d0a0ed40d93f69436917421b) diassembly diangoser: different methods can have same metadata id, add type i... (by [@adamsitnik](https://github.com/adamsitnik))
-* [294801](https://github.com/dotnet/BenchmarkDotNet/commit/29480198d002ff62723802f62034e2d92326802a) test fix ;) (by [@adamsitnik](https://github.com/adamsitnik))
-* [9e66bb](https://github.com/dotnet/BenchmarkDotNet/commit/9e66bbcdf44e1d1ac7aa0e18abbb7c7798f3bc68) sync DataContracts to CopiedDataContracts (by [@morgan-kn](https://github.com/morgan-kn))
-* [690f34](https://github.com/dotnet/BenchmarkDotNet/commit/690f3436a190a49c2ff593758d44eea22a80e20f) Merge pull request #642 from morgan-kn/sync (by [@adamsitnik](https://github.com/adamsitnik))
-* [e1e3e2](https://github.com/dotnet/BenchmarkDotNet/commit/e1e3e2ab7a07f2f10e43ecd20b6deb1b8efcc24c) don't use type.Fullname for file names, it's too long for generics (by [@adamsitnik](https://github.com/adamsitnik))
-* [43d7c2](https://github.com/dotnet/BenchmarkDotNet/commit/43d7c26ea8926c12c0926ca8c3b89110715a5c2b) we restore before build, so build does need to restore too (it's new default ... (by [@adamsitnik](https://github.com/adamsitnik))
-* [9d4c33](https://github.com/dotnet/BenchmarkDotNet/commit/9d4c339e882d21a8d2dcdc516f55543d2b5b6570) trying harder to trick the JIT (#640, #631) (by [@adamsitnik](https://github.com/adamsitnik))
-* [f8f70f](https://github.com/dotnet/BenchmarkDotNet/commit/f8f70f7eb08c9c1babc5780d72eebc26ea223bf8) Natural ordering for logical groups, fixes #632 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [a2ec34](https://github.com/dotnet/BenchmarkDotNet/commit/a2ec340927a54b379b231e5298ff75944fe150d9) copy LanguageVersion to the output .csproj, fixes #643 (by [@adamsitnik](https://github.com/adamsitnik))
-* [31e6dd](https://github.com/dotnet/BenchmarkDotNet/commit/31e6dd65aa95e9f05c39425218e56808496be231) Fixing --help display for options (#645), fixes #636 (by [@ENikS](https://github.com/ENikS))
-* [45ace9](https://github.com/dotnet/BenchmarkDotNet/commit/45ace978c9ce5a74afce4ae37e04e271b3110b04) Allow sorting by the Method name in DefaultOrderProvider and OrderProviderAtt... (by [@ENikS](https://github.com/ENikS))
-* [8811f2](https://github.com/dotnet/BenchmarkDotNet/commit/8811f295e895ad88fd6b7ea0221c6a0b81902b9d) Fix typo in docs/guide/Contributing/Disassembler.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [7da7b9](https://github.com/dotnet/BenchmarkDotNet/commit/7da7b9e703c653f90db93b6bc53a7c354a31dc67) allow the users to customize Artifacts Path, #377 (by [@adamsitnik](https://github.com/adamsitnik))
-* [7554bf](https://github.com/dotnet/BenchmarkDotNet/commit/7554bf70ce23080ced3162856639a93a0119f554) validate CustomDotNetCliPath, fixes #648 (by [@adamsitnik](https://github.com/adamsitnik))
-* [683964](https://github.com/dotnet/BenchmarkDotNet/commit/683964f5a9c61b38996f81b92f3f555fe57b8adb) Support ANY CoreFX and CoreCLR builds, fixes #651 (by [@adamsitnik](https://github.com/adamsitnik))
-* [695386](https://github.com/dotnet/BenchmarkDotNet/commit/695386b6d749f036d4519c78081ba0051c3d2063) support also only custom CoreFX scenario (default runtime), part of #651 (by [@adamsitnik](https://github.com/adamsitnik))
-* [eb4dcf](https://github.com/dotnet/BenchmarkDotNet/commit/eb4dcf0345b72680c67ae16c65ed3be7e2e21686) allow the users to copy some files after the publish, part of #651 (by [@adamsitnik](https://github.com/adamsitnik))
-* [b076a3](https://github.com/dotnet/BenchmarkDotNet/commit/b076a3d8f51505af3dac14484f0001bd858abd7d) Add Newtonsoft.Json in the README (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [b4eef5](https://github.com/dotnet/BenchmarkDotNet/commit/b4eef5abea970f3858b0048ec0c8be79517f9d6c) better generics support, fixes #652 (by [@adamsitnik](https://github.com/adamsitnik))
-* [77fd46](https://github.com/dotnet/BenchmarkDotNet/commit/77fd461f5dc34f7a0a102f3adbe8bb02b8a02e57) Handle null values in Statistics.DivMean and Statistics.DivVariance, fixes #630 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [e547f8](https://github.com/dotnet/BenchmarkDotNet/commit/e547f80056267fc064a5b9d0e6421cf44618402b) Fix NRE in RankColumn, fixes #644 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [28aa94](https://github.com/dotnet/BenchmarkDotNet/commit/28aa946a9a277b6c2b1166af0397134b02bedf2d) allow the users to choose .NET 4.7.1 (by [@adamsitnik](https://github.com/adamsitnik))
-* [503570](https://github.com/dotnet/BenchmarkDotNet/commit/503570e85753ec106f10b7ff6878a34636f20c74) Fixed image link (by [@svick](https://github.com/svick))
-* [93cc85](https://github.com/dotnet/BenchmarkDotNet/commit/93cc85d268a9762c3f6218548a1893665c09197e) Merge pull request #655 from svick/patch-1 (by [@adamsitnik](https://github.com/adamsitnik))
-* [d33cde](https://github.com/dotnet/BenchmarkDotNet/commit/d33cdee359368cea6abb23cd0b266fd738955dc4) Fixed code block formatting (by [@svick](https://github.com/svick))
-* [cb7c09](https://github.com/dotnet/BenchmarkDotNet/commit/cb7c0952d2b825cca69fe7daae620f026b3e75b9) Merge pull request #657 from svick/patch-1 (by [@adamsitnik](https://github.com/adamsitnik))
-* [650b4a](https://github.com/dotnet/BenchmarkDotNet/commit/650b4a8b1bc87194f30427b458e54cba2616197a) host Mono process should be able to build .NET Core child process, fixes #653 (by [@adamsitnik](https://github.com/adamsitnik))
-* [d1dcab](https://github.com/dotnet/BenchmarkDotNet/commit/d1dcabde23fc3b04e1ee7f98b990d2a20a67f194) List formatting for FAQ (by [@svick](https://github.com/svick))
-* [fe52e3](https://github.com/dotnet/BenchmarkDotNet/commit/fe52e37b0ee5dcc2d28ee6bb2b8a9b0896c16752) Merge pull request #663 from svick/faq-formatting (by [@adamsitnik](https://github.com/adamsitnik))
-* [7792cb](https://github.com/dotnet/BenchmarkDotNet/commit/7792cb98c7d8b249233523887e6b323fb7f99a2b) Example in F#: with corrected code formatting (by [@ScottHutchinson](https://github.com/ScottHutchinson))
-* [e6b225](https://github.com/dotnet/BenchmarkDotNet/commit/e6b225615b6d3469434125bfbc75273ab41387c0) Merge pull request #666 from ScottHutchinson/patch-2 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [f90207](https://github.com/dotnet/BenchmarkDotNet/commit/f902072d81637061e956f5694aa2b6d61cd6860e) Allow restore and build command override (#670) (by [@BonnieSoftware](https://github.com/BonnieSoftware))
-* [4443cd](https://github.com/dotnet/BenchmarkDotNet/commit/4443cdec188cceaacfa6b4a3bfd0a7adc40045f8) Update example in README (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [de0b68](https://github.com/dotnet/BenchmarkDotNet/commit/de0b682ef1804d58cb8a29d7611e29bd882c405d) Set library version: 0.10.13 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Contributors (9)
-
-* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik))
-* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* BonnieSoftware ([@BonnieSoftware](https://github.com/BonnieSoftware))
-* Eugene Sadovoi ([@ENikS](https://github.com/ENikS))
-* Igor Fesenko ([@Ky7m](https://github.com/Ky7m))
-* Irina Ananeva ([@morgan-kn](https://github.com/morgan-kn))
-* morgan_kn
-* Petr Onderka ([@svick](https://github.com/svick))
-* Scott Hutchinson ([@ScottHutchinson](https://github.com/ScottHutchinson))
-
-Thank you very much!
-
diff --git a/docs/_changelog/details/v0.10.14.md b/docs/_changelog/details/v0.10.14.md
deleted file mode 100644
index dc70a748cc..0000000000
--- a/docs/_changelog/details/v0.10.14.md
+++ /dev/null
@@ -1,94 +0,0 @@
-## Milestone details
-
-In the [v0.10.14](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.10.14) scope,
-8 issues were resolved and 11 pull requests were merged.
-This release includes 47 commits by 8 contributors.
-
-## Resolved issues (8)
-
-* [#256](https://github.com/dotnet/BenchmarkDotNet/issues/256) Per-method parameterization (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#429](https://github.com/dotnet/BenchmarkDotNet/issues/429) Detect multimodal distributions (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#496](https://github.com/dotnet/BenchmarkDotNet/issues/496) Integration with TravisCI (assignee: [@jongalloway](https://github.com/jongalloway))
-* [#684](https://github.com/dotnet/BenchmarkDotNet/issues/684) Horology.ClockTests.ChronometerTest fails on Travis CI (macOS) (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#689](https://github.com/dotnet/BenchmarkDotNet/issues/689) DisassemblyDiagnoser for Mono does not work on Windows and Linux (assignee: [@morgan-kn](https://github.com/morgan-kn))
-* [#691](https://github.com/dotnet/BenchmarkDotNet/issues/691) Cannot run F# benchmarks when benchmark returns F# generic (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#697](https://github.com/dotnet/BenchmarkDotNet/issues/697) Copy custom setting from app.config in multitarget projects (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#706](https://github.com/dotnet/BenchmarkDotNet/issues/706) Support private builds of .NET Runtime (assignee: [@adamsitnik](https://github.com/adamsitnik))
-
-## Merged pull requests (11)
-
-* [#577](https://github.com/dotnet/BenchmarkDotNet/pull/577) Arguments (by [@adamsitnik](https://github.com/adamsitnik))
-* [#647](https://github.com/dotnet/BenchmarkDotNet/pull/647) Histograms and multimodal distribution detection, fixes #429 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#674](https://github.com/dotnet/BenchmarkDotNet/pull/674) Cleanup suggested by VS2017 Code Analysis (plus one typo) (by [@shoelzer](https://github.com/shoelzer))
-* [#675](https://github.com/dotnet/BenchmarkDotNet/pull/675) Fix IDE0034: 'default' expression can be simplified (by [@shoelzer](https://github.com/shoelzer))
-* [#676](https://github.com/dotnet/BenchmarkDotNet/pull/676) Correct NodeTime text which links to NodaTime api (by [@MishaHusiuk](https://github.com/MishaHusiuk))
-* [#681](https://github.com/dotnet/BenchmarkDotNet/pull/681) Fix typo (Perdictor -> Predictor) (by [@dmitry-ra](https://github.com/dmitry-ra))
-* [#682](https://github.com/dotnet/BenchmarkDotNet/pull/682) Fix typo (Perdictor -> Predictor) (by [@dmitry-ra](https://github.com/dmitry-ra))
-* [#683](https://github.com/dotnet/BenchmarkDotNet/pull/683) Integration with TravisCI (by [@Ky7m](https://github.com/Ky7m))
-* [#694](https://github.com/dotnet/BenchmarkDotNet/pull/694) Fix 689 (by [@morgan-kn](https://github.com/morgan-kn))
-* [#695](https://github.com/dotnet/BenchmarkDotNet/pull/695) Rename Program to UniqueProgramName to avoid conflicts, fixes #691 (by [@adamsitnik](https://github.com/adamsitnik))
-* [#696](https://github.com/dotnet/BenchmarkDotNet/pull/696) Build system: Update dotnet SDK and dotnet runtime. Enable FastTests netcoreapp1.1 on non-Windows. (by [@Ky7m](https://github.com/Ky7m))
-
-## Commits (47)
-
-* [41aeea](https://github.com/dotnet/BenchmarkDotNet/commit/41aeea864dc474089cc12e365b9f90aaaf30bcd7) Histograms and multimodal distribution detection, fixes #429 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [960e58](https://github.com/dotnet/BenchmarkDotNet/commit/960e58ae4574d28eba7e077d12bcae5da5617433) Handle measurements with zero operations (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [19cddd](https://github.com/dotnet/BenchmarkDotNet/commit/19cdddef766eaf575a4bbbcd4902dfbd05841c99) Fix typo in BaselineScaledColumn.cs (by [@dfederm](https://github.com/dfederm))
-* [a99594](https://github.com/dotnet/BenchmarkDotNet/commit/a99594845336557f684d77a2ecfb6e38398d25df) Merge pull request #673 from dfederm/dfederm/fix-typo (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5b3425](https://github.com/dotnet/BenchmarkDotNet/commit/5b34257e3a9f86c113a3fcb9561ffc00c33009b0) Cleanup suggested by VS2017 Code Analysis (plus one typo) (#674) (by [@shoelzer](https://github.com/shoelzer))
-* [16b611](https://github.com/dotnet/BenchmarkDotNet/commit/16b6118bcda1acb92966957f90400d3a2c53e0a1) Fix IDE0034: 'default' expression can be simplified (by [@shoelzer](https://github.com/shoelzer))
-* [048b32](https://github.com/dotnet/BenchmarkDotNet/commit/048b32a7f79c744614e497806fc761e7744f2e4f) Merge pull request #675 from shoelzer/master (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [9d5f71](https://github.com/dotnet/BenchmarkDotNet/commit/9d5f718dd9e4ddaebc7b2d0a5ce55201a237bcca) Correct NodeTime text which links to NodaTime lib (by [@MishaHusiuk](https://github.com/MishaHusiuk))
-* [c450c7](https://github.com/dotnet/BenchmarkDotNet/commit/c450c7cb24bfd26299ca515d84b63cb75d260113) Merge pull request #676 from MishaHusiuk/patch-1 (by [@adamsitnik](https://github.com/adamsitnik))
-* [9fad52](https://github.com/dotnet/BenchmarkDotNet/commit/9fad526013e8e920abdb78d6eca80967d291144c) Fix typo (Perdictor -> Predictor) (by [@dmitry-ra](https://github.com/dmitry-ra))
-* [3d906f](https://github.com/dotnet/BenchmarkDotNet/commit/3d906fcc7fcddbfa2868bd840dd1f1082993817a) Fix typo (Perdictor -> Predictor) (by [@dmitry-ra](https://github.com/dmitry-ra))
-* [d1a48e](https://github.com/dotnet/BenchmarkDotNet/commit/d1a48e7387992a91cb12b4a059cea55714d31bc4) Merge pull request #681 from dmitry-ra/master (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [4ccd35](https://github.com/dotnet/BenchmarkDotNet/commit/4ccd352ef4863e4836d87fe40037d0432ef51b11) Merge pull request #682 from dmitry-ra/patch-1 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [f743a1](https://github.com/dotnet/BenchmarkDotNet/commit/f743a17cafa3a28899ae01f962c01b69a0d8c540) CakeBuild 0.24.0 -> 0.26.1 (by [@Ky7m](https://github.com/Ky7m))
-* [c5eb40](https://github.com/dotnet/BenchmarkDotNet/commit/c5eb4054be58b67c7fd1b932da9f3a60af349028) Remove postProjects from solution file. (by [@Ky7m](https://github.com/Ky7m))
-* [e60387](https://github.com/dotnet/BenchmarkDotNet/commit/e60387eeceffbd9b3cb89fadba5185f16b8dce65) Pass correct configuration to test settings (by [@Ky7m](https://github.com/Ky7m))
-* [224ab8](https://github.com/dotnet/BenchmarkDotNet/commit/224ab8edaed6c510a2b812fac36bc1b3a51fd230) Disable public sign option for F# project (by [@Ky7m](https://github.com/Ky7m))
-* [ee98f3](https://github.com/dotnet/BenchmarkDotNet/commit/ee98f30366a14c31b0cb794c8382e4c7b950d7e1) Limit Max CPU count for msbuild workers (by [@Ky7m](https://github.com/Ky7m))
-* [17031d](https://github.com/dotnet/BenchmarkDotNet/commit/17031d42b5bc716e1d4c472027334da5d0bb157e) Fix readme file (by [@Ky7m](https://github.com/Ky7m))
-* [6fbae8](https://github.com/dotnet/BenchmarkDotNet/commit/6fbae80e5f300ee1d6fd24f1847ebaea369a6484) One more update to readme file (by [@Ky7m](https://github.com/Ky7m))
-* [cb90f2](https://github.com/dotnet/BenchmarkDotNet/commit/cb90f264df1b1251b071487e9e2e703b767cbeda) disable Travis failing test #684 to unblock #683 (by [@adamsitnik](https://github.com/adamsitnik))
-* [782ca7](https://github.com/dotnet/BenchmarkDotNet/commit/782ca71b701fcbaf558d948da0fec5fae44cd79d) Merge pull request #683 from Ky7m/Integration-with-TravisCI (by [@adamsitnik](https://github.com/adamsitnik))
-* [eebf92](https://github.com/dotnet/BenchmarkDotNet/commit/eebf923782161fe908d8aa48d5b5ea4764f32456) Merge branch 'master' into multimodal (by [@adamsitnik](https://github.com/adamsitnik))
-* [10511b](https://github.com/dotnet/BenchmarkDotNet/commit/10511b74d525d6705e901c8fb6b2307e95f2cf17) Merge pull request #647 from dotnet/multimodal (by [@adamsitnik](https://github.com/adamsitnik))
-* [57bc17](https://github.com/dotnet/BenchmarkDotNet/commit/57bc17826f153a34032d256253fc77677fdc3d02) Fix bug in ClockTests.ChronometerTest, fixes #684 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [7c4b14](https://github.com/dotnet/BenchmarkDotNet/commit/7c4b14e4d68ad6dd595fa194be938245411d0e4f) Arguments (#577), fixes #256 (by [@adamsitnik](https://github.com/adamsitnik))
-* [40771c](https://github.com/dotnet/BenchmarkDotNet/commit/40771c7ea54b1a2d8eda5492b953e3843eb2cac4) Update dotnet SDK (2.1.4 -> 2.1.101) and dotnet runtime (1.1.6 -> 1.1.7). (by [@Ky7m](https://github.com/Ky7m))
-* [88a9db](https://github.com/dotnet/BenchmarkDotNet/commit/88a9db59c473b75935240dd98fa5788d7816fab5) Merge pull request #696 from Ky7m/build-runtime-update (by [@adamsitnik](https://github.com/adamsitnik))
-* [4ac6ad](https://github.com/dotnet/BenchmarkDotNet/commit/4ac6ad6fec08ef8cf5a7edf6008f964a24b7e9a7) we need different name than typical "Program" to avoid problems with referenc... (by [@adamsitnik](https://github.com/adamsitnik))
-* [1178d6](https://github.com/dotnet/BenchmarkDotNet/commit/1178d6bb00746ba79681175bb9ca00f86086a499) Update build badges (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [24ed1f](https://github.com/dotnet/BenchmarkDotNet/commit/24ed1f45a8c69a6c1d0d6fa4e4c086acee4fc6ed) ProcessHelper: handle null Data values in OutputDataReceived, fix #689 (by [@morgan-kn](https://github.com/morgan-kn))
-* [7a3d2b](https://github.com/dotnet/BenchmarkDotNet/commit/7a3d2b523d18f00dbc0ebd5e1e4590458ca0f2c2) MonoDisassembler improvements (by [@morgan-kn](https://github.com/morgan-kn))
-* [f1a0f5](https://github.com/dotnet/BenchmarkDotNet/commit/f1a0f5ba7acc35069d42f2a75bf976608f055b7d) Merge pull request #694 from morgan-kn/Fix689 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [428905](https://github.com/dotnet/BenchmarkDotNet/commit/428905890bd88e341c83e8a8b68ba1d0841c1e01) .NET Core apps are .dlls (not .exes), fixes #697 (by [@adamsitnik](https://github.com/adamsitnik))
-* [befbc8](https://github.com/dotnet/BenchmarkDotNet/commit/befbc8fb292689c6cca192fa5f6a125cde151bec) Add FAQ notes about #692 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [b4504b](https://github.com/dotnet/BenchmarkDotNet/commit/b4504b925096dfe0887f6a5bf5a8aef6b439116e) Support private builds of .NET Runtime, fixes #706 (by [@adamsitnik](https://github.com/adamsitnik))
-* [c93e1e](https://github.com/dotnet/BenchmarkDotNet/commit/c93e1e0502b620d00881713123659ded30ca9b32) Introduce separate logic for Windows10 brand strings (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [685766](https://github.com/dotnet/BenchmarkDotNet/commit/68576625d19bfbd3c02ab7a7c194536b01a370b2) Shortify Windows 10 brand strings in the summary (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [9bdd0c](https://github.com/dotnet/BenchmarkDotNet/commit/9bdd0cc6052d1f108ec371540685775fcd19d347) Shortify cpu info in summary (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [2288ad](https://github.com/dotnet/BenchmarkDotNet/commit/2288ad2756f109a127953ab8b72d37e9b4a42cce) Prettify macOS brand string (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [8a0b48](https://github.com/dotnet/BenchmarkDotNet/commit/8a0b484804e237f5b20af3e6e8bbe24ff9cb88a0) Handle tailed nop instructions in mono disasm output (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [d80834](https://github.com/dotnet/BenchmarkDotNet/commit/d808343a137ff82e8f0a2dea4813c9c43895621d) Advanced DryJob attributes (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [9a37ad](https://github.com/dotnet/BenchmarkDotNet/commit/9a37ad2c2ec7235a36539b101d5419c736a3298f) Handle invalid mono disasm outputs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [21d6d7](https://github.com/dotnet/BenchmarkDotNet/commit/21d6d785b18418e52c884da2a3341e8e37588ba9) Add IntroDisasm (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5e37b5](https://github.com/dotnet/BenchmarkDotNet/commit/5e37b515b26d5c95032df6acc13dd7e52ecc0d11) Add "Disassembly Diagnoser for Mono on Windows" in docs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [c2c4e8](https://github.com/dotnet/BenchmarkDotNet/commit/c2c4e8cc5ff71c8974b528d692096c6de0f0eba4) set COMPLUS_Version env var for private Clr builds even if no env vars were d... (by [@adamsitnik](https://github.com/adamsitnik))
-* [88b088](https://github.com/dotnet/BenchmarkDotNet/commit/88b088a6a1a6079a60e0f8847068939d2927559d) Set library version: 0.10.14 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Contributors (8)
-
-* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik))
-* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* David Federman ([@dfederm](https://github.com/dfederm))
-* Dmitry Razumikhin ([@dmitry-ra](https://github.com/dmitry-ra))
-* Igor Fesenko ([@Ky7m](https://github.com/Ky7m))
-* Irina Ananeva ([@morgan-kn](https://github.com/morgan-kn))
-* MishaHusiuk ([@MishaHusiuk](https://github.com/MishaHusiuk))
-* Steve Hoelzer ([@shoelzer](https://github.com/shoelzer))
-
-Thank you very much!
-
diff --git a/docs/_changelog/details/v0.10.2.md b/docs/_changelog/details/v0.10.2.md
deleted file mode 100644
index 5657f5ada8..0000000000
--- a/docs/_changelog/details/v0.10.2.md
+++ /dev/null
@@ -1,71 +0,0 @@
-## Milestone details
-
-In the [v0.10.2](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.10.2) scope,
-10 issues were resolved and 3 pull requests were merged.
-This release includes 30 commits by 8 contributors.
-
-## Resolved issues (10)
-
-* [#295](https://github.com/dotnet/BenchmarkDotNet/issues/295) Fix CLS-compliant warnings in Diagnostics (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#307](https://github.com/dotnet/BenchmarkDotNet/issues/307) Output: interpolated strings & culture (assignee: [@alinasmirnova](https://github.com/alinasmirnova))
-* [#319](https://github.com/dotnet/BenchmarkDotNet/issues/319) [Request] some API to public? (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#321](https://github.com/dotnet/BenchmarkDotNet/issues/321) BenchmarkRunner.RunUrl throws BenchmarkSystem.IO.FileNotFoundException (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#327](https://github.com/dotnet/BenchmarkDotNet/issues/327) Unable to use ClassicToolchain in explicit way (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#332](https://github.com/dotnet/BenchmarkDotNet/issues/332) default color of terminal is changed after the run is completed (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#335](https://github.com/dotnet/BenchmarkDotNet/issues/335) Support benchmarking startup performance (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#337](https://github.com/dotnet/BenchmarkDotNet/issues/337) Problematic mechanism/docs for locating Rscript.exe
-* [#340](https://github.com/dotnet/BenchmarkDotNet/issues/340) [FeatureRequest] Enable Characteristic-based properties for non-job types. (assignee: [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [#345](https://github.com/dotnet/BenchmarkDotNet/issues/345) Fail to run IntroAdvancedStats in dry mode (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Merged pull requests (3)
-
-* [#338](https://github.com/dotnet/BenchmarkDotNet/pull/338) Fix typo (by [@roji](https://github.com/roji))
-* [#339](https://github.com/dotnet/BenchmarkDotNet/pull/339) Better detection of Rscript in RPlotExporter (by [@roji](https://github.com/roji))
-* [#341](https://github.com/dotnet/BenchmarkDotNet/pull/341) Base types for characteristic objects: (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-
-## Commits (30)
-
-* [e7c398](https://github.com/dotnet/BenchmarkDotNet/commit/e7c398fdd763a391405cfb58024653bd2ec6612d) Fixes parentheses error (by Josef Ottosson)
-* [2655b3](https://github.com/dotnet/BenchmarkDotNet/commit/2655b3b235d2c0d5d2f9297d0721794945d3903d) Merge pull request #318 from joseftw/patch-1 (by [@adamsitnik](https://github.com/adamsitnik))
-* [4115a2](https://github.com/dotnet/BenchmarkDotNet/commit/4115a25cd29d6635d4391500a9ea13094a159b69) make GcStats and Net46Toolchain internal members public, fixes #319 (by [@adamsitnik](https://github.com/adamsitnik))
-* [52f953](https://github.com/dotnet/BenchmarkDotNet/commit/52f9535da3af7e7de226bc9eca3b095047bfb434) ignore the CLS compilant errors for Diagnosers package, fixes #295 (by [@adamsitnik](https://github.com/adamsitnik))
-* [d96b68](https://github.com/dotnet/BenchmarkDotNet/commit/d96b686e507cbc33e1eb37971cb647e8c59e3c2a) Improved Consumer (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [943c49](https://github.com/dotnet/BenchmarkDotNet/commit/943c49d7e075d5386b94fad00a56852e92ed4ee3) CLSCompliant fixes in Consumer (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [f4bdae](https://github.com/dotnet/BenchmarkDotNet/commit/f4bdae5b7e203e0f0a7d283db5faa78107674f31) specify the .NET Core sdk version in explicit way to get the solution working... (by [@adamsitnik](https://github.com/adamsitnik))
-* [df8c55](https://github.com/dotnet/BenchmarkDotNet/commit/df8c556cbdfe516e76fb932d3e3f41f1e22fa790) always restore the console foreground color, fixes #332 (by [@adamsitnik](https://github.com/adamsitnik))
-* [24dea4](https://github.com/dotnet/BenchmarkDotNet/commit/24dea483b8312efba669d82a6fac3603e60050f5) fix bold markup for Atlassian exporter (by [@lahma](https://github.com/lahma))
-* [4d3c75](https://github.com/dotnet/BenchmarkDotNet/commit/4d3c756a835d4648ca3cfdafe784b275c996e265) persist optimized, auto-generated dll compiled from url/plain code, fixes #321 (by [@adamsitnik](https://github.com/adamsitnik))
-* [2e92a2](https://github.com/dotnet/BenchmarkDotNet/commit/2e92a2819ec74d8f70dca4bd72aa15c26bc8968d) allow to set Classic/Roslyn tool chain in explicit way, fixes #327 (by [@adamsitnik](https://github.com/adamsitnik))
-* [aabece](https://github.com/dotnet/BenchmarkDotNet/commit/aabece9377b57d88151ee02b3b4daf0200ae2efe) Merge pull request #329 from lahma/features/atlassian-bold-format (by [@adamsitnik](https://github.com/adamsitnik))
-* [91152c](https://github.com/dotnet/BenchmarkDotNet/commit/91152cf9a9d31a28b88ae5cfef95da21a7025c6c) ExportToFiles now accepts console logger (by [@roji](https://github.com/roji))
-* [299375](https://github.com/dotnet/BenchmarkDotNet/commit/2993751e3e4e06a4f0a5338856e2e0d6a7c5ba11) Base types for characteristic objects: (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [afc65d](https://github.com/dotnet/BenchmarkDotNet/commit/afc65d1ebb4e65336d4bb2e607e5b694b1197f68) Better detection of Rscript.exe in RPlotExporter (by [@roji](https://github.com/roji))
-* [15869b](https://github.com/dotnet/BenchmarkDotNet/commit/15869b994ba4329b4904bf85e648253bd00720b7) Merge pull request #339 from roji/rscript-detect (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [9f6a82](https://github.com/dotnet/BenchmarkDotNet/commit/9f6a82a3f0762f38cd28d6c4a8b4f87c9c540046) Merge pull request #341 from ig-sinicyn/feature-characteristic-object (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [432adf](https://github.com/dotnet/BenchmarkDotNet/commit/432adfebf7f916dfc6124e1a9517c3043c865def) Fix typo (by [@roji](https://github.com/roji))
-* [cfa015](https://github.com/dotnet/BenchmarkDotNet/commit/cfa015eaffdbe3465e01551e09ab2c457d429513) Merge pull request #338 from roji/dependencies-typo (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [4d953f](https://github.com/dotnet/BenchmarkDotNet/commit/4d953f0a38693f33a33430c306e331e95eecb184) Temporary rollback of the link to appveyor (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [1f5a6e](https://github.com/dotnet/BenchmarkDotNet/commit/1f5a6ee179b058762355d01d4944b2f6ae7cfbc2) Update year in docs footer (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [183ab6](https://github.com/dotnet/BenchmarkDotNet/commit/183ab64b37545a812cf05759d361450fb6d602e7) Fix warning in RoslynToolchain (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [6fd9f3](https://github.com/dotnet/BenchmarkDotNet/commit/6fd9f3d970e01dc7d5f164c7691924e897f76e5b) Used ToStr to make statistics builder culture invariant (fixed #307) (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [3a3100](https://github.com/dotnet/BenchmarkDotNet/commit/3a3100f6416a3047af755b2ffb1f6aa5427ce0f4) Merge pull request #346 from alinasmirnova/master (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [7ee2f1](https://github.com/dotnet/BenchmarkDotNet/commit/7ee2f13f3ee154567a59efcc3eb74de12e98580f) Fix in WelchTTestPValueColumn for DryJob, fixes #345 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [795f4a](https://github.com/dotnet/BenchmarkDotNet/commit/795f4aef8587a77eadc985708588c8b83dab94a2) Disable jitting for RunStrategy=ColdStart, fixes #335 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5b5a8c](https://github.com/dotnet/BenchmarkDotNet/commit/5b5a8c59f38834c4e25c3b08d87e9c8588aca524) Fixed typo (by [@lukasz-pyrzyk](https://github.com/lukasz-pyrzyk))
-* [54519c](https://github.com/dotnet/BenchmarkDotNet/commit/54519c07a97005110879b0ecbcdf603eef461d3b) Merge pull request #347 from lukasz-pyrzyk/master (by [@adamsitnik](https://github.com/adamsitnik))
-* [fbac75](https://github.com/dotnet/BenchmarkDotNet/commit/fbac752a4bd8a0090d3f25ddb8073d42224db797) Introduced Dummy actions (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [484f53](https://github.com/dotnet/BenchmarkDotNet/commit/484f536ac30a96cdfc5a43ca84d9287450b8884c) Set library version: 0.10.2 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Contributors (8)
-
-* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik))
-* Alina Smirnova ([@alinasmirnova](https://github.com/alinasmirnova))
-* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* ig-sinicyn ([@ig-sinicyn](https://github.com/ig-sinicyn))
-* Josef Ottosson
-* Łukasz Pyrzyk ([@lukasz-pyrzyk](https://github.com/lukasz-pyrzyk))
-* Marko Lahma ([@lahma](https://github.com/lahma))
-* Shay Rojansky ([@roji](https://github.com/roji))
-
-Thank you very much!
-
diff --git a/docs/_changelog/details/v0.10.3.md b/docs/_changelog/details/v0.10.3.md
deleted file mode 100644
index de4686c891..0000000000
--- a/docs/_changelog/details/v0.10.3.md
+++ /dev/null
@@ -1,114 +0,0 @@
-## Milestone details
-
-In the [v0.10.3](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.10.3) scope,
-10 issues were resolved and 2 pull requests were merged.
-This release includes 79 commits by 3 contributors.
-
-## Resolved issues (10)
-
-* [#300](https://github.com/dotnet/BenchmarkDotNet/issues/300) Switch back from project.json and xproj to csproj, support dotnet cli preview 3 (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#306](https://github.com/dotnet/BenchmarkDotNet/issues/306) Custom path for mono (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#320](https://github.com/dotnet/BenchmarkDotNet/issues/320) Results table should be a GitHub Flavored Markdown table (assignee: [@alinasmirnova](https://github.com/alinasmirnova))
-* [#322](https://github.com/dotnet/BenchmarkDotNet/issues/322) First benchmark always fails when running on .NET Core with -c release (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#336](https://github.com/dotnet/BenchmarkDotNet/issues/336) allow the users to choose the target .NET Core version (1.2, 2.0 etc) (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#366](https://github.com/dotnet/BenchmarkDotNet/issues/366) Support the new .fsprojs targetting .NET Core (F# + .NET Core + MSBuild) (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#369](https://github.com/dotnet/BenchmarkDotNet/issues/369) Consider to disable MemoryDiagnoser by default (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#372](https://github.com/dotnet/BenchmarkDotNet/issues/372) Troubles with ClrJob from CoreCLR project (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#374](https://github.com/dotnet/BenchmarkDotNet/issues/374) BenchmarkDotNet doesn't understand netcoreapp2.0 (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#375](https://github.com/dotnet/BenchmarkDotNet/issues/375) Troubles with dotnet pack (assignee: [@adamsitnik](https://github.com/adamsitnik))
-
-## Merged pull requests (2)
-
-* [#355](https://github.com/dotnet/BenchmarkDotNet/pull/355) Fixed typo in IntroBasic.cs (by [@mmayr-at](https://github.com/mmayr-at))
-* [#357](https://github.com/dotnet/BenchmarkDotNet/pull/357) Farewell project json (by [@adamsitnik](https://github.com/adamsitnik))
-
-## Commits (79)
-
-* [8099a5](https://github.com/dotnet/BenchmarkDotNet/commit/8099a51f63dfeae06f320b2fdb477d556fa0013e) Print process.StartInfo in Executor (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [abd931](https://github.com/dotnet/BenchmarkDotNet/commit/abd93145ff157f73ded602a75e4207a41b9d21d9) Update BenchmarkDotNet.sln.DotSettings (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5c8c75](https://github.com/dotnet/BenchmarkDotNet/commit/5c8c75d0ab8cc15b2b908395416fe04a9613fc5f) toolchains should not require parameterless ctors, the real fix for #327 (by [@adamsitnik](https://github.com/adamsitnik))
-* [b22cf2](https://github.com/dotnet/BenchmarkDotNet/commit/b22cf2f57cc413d8be8c467f47a73e0d9b354565) allow the users to choose the target .NET Core version, fixes #336 (by [@adamsitnik](https://github.com/adamsitnik))
-* [f99c82](https://github.com/dotnet/BenchmarkDotNet/commit/f99c827818905d469fcaf4d9c4eecfb8749afd23) .net core toolchain: root folder detection bug fix (by [@adamsitnik](https://github.com/adamsitnik))
-* [c7aba1](https://github.com/dotnet/BenchmarkDotNet/commit/c7aba11656357ac052b4bd5ba31e36e496319415) experimental .NET Core support for the new VS 2017 csproj files, #300 (by [@adamsitnik](https://github.com/adamsitnik))
-* [bca146](https://github.com/dotnet/BenchmarkDotNet/commit/bca1462a149aa21ed2c9c0d0ca25cad8780a0fee) Additional density plots in RPlotExporter (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [4bb147](https://github.com/dotnet/BenchmarkDotNet/commit/4bb147dc8dbf9efbac8edcf5cea081f16fb8b897) Additional cummean plots in RPlotExporter (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [8bf40c](https://github.com/dotnet/BenchmarkDotNet/commit/8bf40c77e654d8bc6d9efeb53247b6013da56462) Implement top sort in CompositeExporter (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [ad771d](https://github.com/dotnet/BenchmarkDotNet/commit/ad771d1b39afd0fdb448bf534a51602f59cb60c1) Always print the AllocationColumn in the Summary table (if MemoryDiagnoser is... (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [8a1f0e](https://github.com/dotnet/BenchmarkDotNet/commit/8a1f0ea6c6eb55366ddfccf81f6d8794da8a4801) Fix order of exporters in ExporterDependencyTests (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [a7366e](https://github.com/dotnet/BenchmarkDotNet/commit/a7366e65185dcee8ba3e1aae7317f84b20a44fe2) xproj to csproj auto migration (by [@adamsitnik](https://github.com/adamsitnik))
-* [cec3e2](https://github.com/dotnet/BenchmarkDotNet/commit/cec3e2002e00446d2624a32dfd69a5b9588e2ed3) xproj to csproj: manual changes (conditional recursive dependencies not suppo... (by [@adamsitnik](https://github.com/adamsitnik))
-* [74006d](https://github.com/dotnet/BenchmarkDotNet/commit/74006dba655cb43cbfcc1829d69c32784ec99c14) xproj to csproj: I did not ask for the .NET Standard dependency (by [@adamsitnik](https://github.com/adamsitnik))
-* [bf7093](https://github.com/dotnet/BenchmarkDotNet/commit/bf70931a50c577498045f1861dbc1c1683994945) xproj to csproj: manual changes (conditional dependencies not supported anymo... (by [@adamsitnik](https://github.com/adamsitnik))
-* [4e060f](https://github.com/dotnet/BenchmarkDotNet/commit/4e060fe68d016cc036edfdfa278aa6c0336da1b6) xproj to csproj: manual changes (simple case not supported) (by [@adamsitnik](https://github.com/adamsitnik))
-* [59602c](https://github.com/dotnet/BenchmarkDotNet/commit/59602c9a6cca6d5fd7c75506b0e3e32725d8d4ea) remove F# .NET Core samples (not working now) (by [@adamsitnik](https://github.com/adamsitnik))
-* [2488ae](https://github.com/dotnet/BenchmarkDotNet/commit/2488aef8b9500bf72cfb9786215d3e979bb1bcd9) cleanup (by [@adamsitnik](https://github.com/adamsitnik))
-* [d7925b](https://github.com/dotnet/BenchmarkDotNet/commit/d7925bec1e6273aa4f94c3e8b0ccc2ba94425e89) get our toolchain up and running, thanks to @cesarbs (by [@adamsitnik](https://github.com/adamsitnik))
-* [e719e7](https://github.com/dotnet/BenchmarkDotNet/commit/e719e764e69c8c2f44547ca0549038b2efad2449) Update IntroBasic.cs (by [@mmayr-at](https://github.com/mmayr-at))
-* [1ef000](https://github.com/dotnet/BenchmarkDotNet/commit/1ef00047e1feab35a76cc3c18752eedc5edde3e5) Merge pull request #355 from mmayr-at/patch-1 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5cf1dc](https://github.com/dotnet/BenchmarkDotNet/commit/5cf1dcd4ba90479db3b80088c761c37cc3b38345) making diagnosers, ctrl+c, custom priority and affinity work for the new csprojs (by [@adamsitnik](https://github.com/adamsitnik))
-* [d0f334](https://github.com/dotnet/BenchmarkDotNet/commit/d0f3343e4d90a059521667a05cce48df3cb86a3f) getting net46 toolchain work again for new .csprojs when called from .NET Cor... (by [@adamsitnik](https://github.com/adamsitnik))
-* [d1bf9b](https://github.com/dotnet/BenchmarkDotNet/commit/d1bf9bd993ebfd82fe31bd44edb9632b66187cfd) removing old project.json workarounds (by [@adamsitnik](https://github.com/adamsitnik))
-* [e0b134](https://github.com/dotnet/BenchmarkDotNet/commit/e0b134ce46a2c6f0c8e690df83e153e92764e8e3) taking advantage of the csproj (by [@adamsitnik](https://github.com/adamsitnik))
-* [001b3f](https://github.com/dotnet/BenchmarkDotNet/commit/001b3f531187d8d69d9d3c6bb4fe7081cf224906) appveyor stuff (by [@adamsitnik](https://github.com/adamsitnik))
-* [63d674](https://github.com/dotnet/BenchmarkDotNet/commit/63d6742f3b6fb79fce1c056676fc93458d00ab12) don't introduce limit for .sln file search depth (by [@adamsitnik](https://github.com/adamsitnik))
-* [81adbb](https://github.com/dotnet/BenchmarkDotNet/commit/81adbbd8f34b1c940e751550e840f1b1aa7991c7) make VS stop complaining about root namespace for BenchmarkDotNet.Core project (by [@adamsitnik](https://github.com/adamsitnik))
-* [2eee5f](https://github.com/dotnet/BenchmarkDotNet/commit/2eee5f74691a841461a5ed3faac6acec8d9c2fb8) let's round it to reduce the side effects of Allocation quantum (by [@adamsitnik](https://github.com/adamsitnik))
-* [f38e93](https://github.com/dotnet/BenchmarkDotNet/commit/f38e935f2761922c5168f2c931fece9d3b6b559c) a project that targets AnyCPU cany be referenced by any other executable (32 ... (by [@adamsitnik](https://github.com/adamsitnik))
-* [8ed5a4](https://github.com/dotnet/BenchmarkDotNet/commit/8ed5a4ded3dc914f3291c26e4caab82b35e8ec5c) post code review changes (by [@adamsitnik](https://github.com/adamsitnik))
-* [50c938](https://github.com/dotnet/BenchmarkDotNet/commit/50c93855ac8e1dd99d03cdd81eff0283250b1384) add possibility to use RetainVMGarbageCollection config switch (by [@adamsitnik](https://github.com/adamsitnik))
-* [ca1bc8](https://github.com/dotnet/BenchmarkDotNet/commit/ca1bc8060317224ecf465be1b1ef523f9b8cbf26) final Cleanup and some renaming ;) (by [@adamsitnik](https://github.com/adamsitnik))
-* [a26d61](https://github.com/dotnet/BenchmarkDotNet/commit/a26d616d8f26095217a18b6be52fe5376a0da58d) Update BenchmarkDotNet.sln.DotSettings (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [008819](https://github.com/dotnet/BenchmarkDotNet/commit/008819efbe3e00664080393d75b2d9a8717c7c00) getting all the test runnable again (by [@adamsitnik](https://github.com/adamsitnik))
-* [a66913](https://github.com/dotnet/BenchmarkDotNet/commit/a6691390c31c4df43331c7345cfc0228ef6d44f8) trying to get the versioning done right (by [@adamsitnik](https://github.com/adamsitnik))
-* [c6f245](https://github.com/dotnet/BenchmarkDotNet/commit/c6f24541abc48e3cb544eb8e804827fe5ac9cfa6) the updated docs (by [@adamsitnik](https://github.com/adamsitnik))
-* [f1a1fd](https://github.com/dotnet/BenchmarkDotNet/commit/f1a1fd43e8dd1a410e98f5ee154dde55646dc6eb) update to the latest xUnit 2.2 + minor cleanup (by [@adamsitnik](https://github.com/adamsitnik))
-* [262c87](https://github.com/dotnet/BenchmarkDotNet/commit/262c874b3e8a6c1c2657704e783f342238f3dcab) appveyor config + minor bug fixes (by [@adamsitnik](https://github.com/adamsitnik))
-* [1a7bd4](https://github.com/dotnet/BenchmarkDotNet/commit/1a7bd426874ea364e22dea6d944d8c2de69cb2ce) Support the new .fsprojs targetting .NET Core (F# + .NET Core + MSBuild), fix... (by [@adamsitnik](https://github.com/adamsitnik))
-* [e8f6ac](https://github.com/dotnet/BenchmarkDotNet/commit/e8f6acd873859d4a8c771193dba0b7b5ac7ebe2d) support projects without .sln file (dotnet cli only) (by [@adamsitnik](https://github.com/adamsitnik))
-* [1b71c5](https://github.com/dotnet/BenchmarkDotNet/commit/1b71c5f7a39cedfa7b5b1a9e3e56675ed8baf890) update our tests to net452 because XUnit VS runner 2.2 does no longer support... (by [@adamsitnik](https://github.com/adamsitnik))
-* [6121ad](https://github.com/dotnet/BenchmarkDotNet/commit/6121ade8c52df52b6521a1b6c3bf4c6e41740bca) disable shadow copy for our integration tests (by [@adamsitnik](https://github.com/adamsitnik))
-* [54375c](https://github.com/dotnet/BenchmarkDotNet/commit/54375c7df757b625fd17a7dae92a4e17f75ad42e) warn the users when code optimization was not enabled (debug build can be opt... (by [@adamsitnik](https://github.com/adamsitnik))
-* [03ed32](https://github.com/dotnet/BenchmarkDotNet/commit/03ed32d914fb6a7d2f2a9128843430b645112884) stop using --binaries option which started producing new folder for every re... (by [@adamsitnik](https://github.com/adamsitnik))
-* [27f280](https://github.com/dotnet/BenchmarkDotNet/commit/27f28088dd3b8c1b3a009c22ffb26da97b5fd228) dotnet cli like to not release used files for a while.. (by [@adamsitnik](https://github.com/adamsitnik))
-* [7886ad](https://github.com/dotnet/BenchmarkDotNet/commit/7886ada3c58fe85c1da8295aa0dd0839adc6c20c) Merge pull request #357 from dotnet/farewellProjectJson (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [751f64](https://github.com/dotnet/BenchmarkDotNet/commit/751f64b6a016d6df9b3f6f4126308655572e4bdb) Xplat RuntimeInformation.GetProcessorName() (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [b327b7](https://github.com/dotnet/BenchmarkDotNet/commit/b327b7be700f34a3a3e5742b1c21e96900783c64) tell why dotnet command failed + how much time it took to execute (by [@adamsitnik](https://github.com/adamsitnik))
-* [b740bb](https://github.com/dotnet/BenchmarkDotNet/commit/b740bb8b20d395bc8c9a46561c435d4eb6762491) WindowsVersion on CoreCLR (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5b879b](https://github.com/dotnet/BenchmarkDotNet/commit/5b879b281686e25a6af212a727c1bd1e20188011) Lazty HostEnvironmentInfo.OsVersion (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [76d081](https://github.com/dotnet/BenchmarkDotNet/commit/76d081fcc3be64fe397b074faaf627f65be1ac36) Lazy HostEnvironmentInfo.OsVersion, fix in ToFormattedString() (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5dafb9](https://github.com/dotnet/BenchmarkDotNet/commit/5dafb9d9b557c63c09de2e900953ef5e32f02e08) do not restore or build the dependent projects, just the auto-generated one (by [@adamsitnik](https://github.com/adamsitnik))
-* [5c1914](https://github.com/dotnet/BenchmarkDotNet/commit/5c191476174d0c4ac5a841d1d026b997c978f4f2) better troubleshooting: when dll is not found but somehow build has succeeded... (by [@adamsitnik](https://github.com/adamsitnik))
-* [322998](https://github.com/dotnet/BenchmarkDotNet/commit/32299879f584e496bc43f1712551fc3d2545afee) using csproj to tell msbuild where to put output so appveyor custom settings ... (by [@adamsitnik](https://github.com/adamsitnik))
-* [e2a8fa](https://github.com/dotnet/BenchmarkDotNet/commit/e2a8fa33b4de6d03dfcca3b517728217350ff66c) post code review changes (by [@adamsitnik](https://github.com/adamsitnik))
-* [6fe93d](https://github.com/dotnet/BenchmarkDotNet/commit/6fe93d8195a7b46877ab86eba5caaa509679cdc1) MinIterationTimeAnalyser (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [3ac892](https://github.com/dotnet/BenchmarkDotNet/commit/3ac8923f6d1ba4a1210db71f5609fa9e02722a81) RunStrategy.Monitoring (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [f412b9](https://github.com/dotnet/BenchmarkDotNet/commit/f412b91b14d2e5372ff2744ea9281c802ce5fc0b) Docs: add FAQ section about supported version of Visual Studio (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [67a007](https://github.com/dotnet/BenchmarkDotNet/commit/67a007427e67ecda5d89cca823a5d85eb1f5eaa9) fixing ProjectJsonToolchains after recent CsProjToolchain optimizations (by [@adamsitnik](https://github.com/adamsitnik))
-* [2b5c6e](https://github.com/dotnet/BenchmarkDotNet/commit/2b5c6e8c3520226591d7c5cfd5ae6af651b6f12f) Improved RuntimeInformation.GetProcessorName() (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [a44638](https://github.com/dotnet/BenchmarkDotNet/commit/a4463855e82680384ebc55ab711fee0b013d8f74) Improved RuntimeInformation.GetOsVersion() (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [f58e06](https://github.com/dotnet/BenchmarkDotNet/commit/f58e0674775a04b66fe47436a3c22cf5e9786405) Improved RuntimeInformation.GetRuntimeVersion() for Mono (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [fdca26](https://github.com/dotnet/BenchmarkDotNet/commit/fdca2622f420ed71376c6ec3fa4bd6db35f2c487) Minor RuntimeInformation fixes (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [2a2168](https://github.com/dotnet/BenchmarkDotNet/commit/2a2168b2118904a0c62e654b356fcbfd5f94737c) Fix bug in ExternalToolsHelper (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [9dfd95](https://github.com/dotnet/BenchmarkDotNet/commit/9dfd95f66159127deae359272e73bce59d9e057f) Custom path for mono, fixes #306 (by [@adamsitnik](https://github.com/adamsitnik))
-* [448b07](https://github.com/dotnet/BenchmarkDotNet/commit/448b072159c49b18005c4f66ca6b83238a00d992) disable MemoryDiagnoser by default, BREAKING CHANGE, fixes #369 (by [@adamsitnik](https://github.com/adamsitnik))
-* [125b71](https://github.com/dotnet/BenchmarkDotNet/commit/125b71e9c9ed66d6b013f81034aaabab18011fc9) docs for Custom Mono Paths, #306 (by [@adamsitnik](https://github.com/adamsitnik))
-* [a3d6e0](https://github.com/dotnet/BenchmarkDotNet/commit/a3d6e03098b8a5ed61a97a0496221fa9a22f2f65) docs/FAQ: Add section about new .NET Core Console App in VS2017 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [b04195](https://github.com/dotnet/BenchmarkDotNet/commit/b04195b97a843f84d79588496497f7e44620ae9c) give users the AnyCpu hint when they struggle with BadImageFormatException, f... (by [@adamsitnik](https://github.com/adamsitnik))
-* [7de671](https://github.com/dotnet/BenchmarkDotNet/commit/7de6718cb8852e673f7c9cd4be097a27c31cd923) generate the projects in the bin folder, not solution's root (by [@adamsitnik](https://github.com/adamsitnik))
-* [1d52ae](https://github.com/dotnet/BenchmarkDotNet/commit/1d52ae76e740cdeb4477178fa229480b200ef414) docs/FAQ: add another question (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [06aaa0](https://github.com/dotnet/BenchmarkDotNet/commit/06aaa0639c246095c9a1416b7f8a5ca7855f817f) copy NetCoreAppImplicitPackageVersion and RuntimeFrameworkVersion settings to... (by [@adamsitnik](https://github.com/adamsitnik))
-* [f1fe16](https://github.com/dotnet/BenchmarkDotNet/commit/f1fe161174b81b8ba0033c0622d0c7de1ad9fec2) shame on me for not building the code for all TFMs before pushing (by [@adamsitnik](https://github.com/adamsitnik))
-* [fe33dd](https://github.com/dotnet/BenchmarkDotNet/commit/fe33dd8d724706002a21b6e7e7ee92d403e36502) GitHub Markdown: every table row should start with "|" , fixes #320 (by [@adamsitnik](https://github.com/adamsitnik))
-* [7d0d73](https://github.com/dotnet/BenchmarkDotNet/commit/7d0d737baf5f301436730a4c7c3b204bd0a521ba) remove old results, otherwise, the file will be overwritten and remaining old... (by [@adamsitnik](https://github.com/adamsitnik))
-* [80348b](https://github.com/dotnet/BenchmarkDotNet/commit/80348b7e5b148666c83fb66cc2e485b389334c4c) Change Hint color to DarkCyan #376 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [0b35ec](https://github.com/dotnet/BenchmarkDotNet/commit/0b35ec1807d4bd4ac49a2540c68b5ac277a2e3c3) Increase MinIterationTime (Accuracy improvement) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [cdee09](https://github.com/dotnet/BenchmarkDotNet/commit/cdee0945b1496dc768362a83d4925319996cca46) Set library version: 0.10.3 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Contributors (3)
-
-* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik))
-* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* Michael Mayr ([@mmayr-at](https://github.com/mmayr-at))
-
-Thank you very much!
-
diff --git a/docs/_changelog/details/v0.10.4.md b/docs/_changelog/details/v0.10.4.md
deleted file mode 100644
index 2217e353d7..0000000000
--- a/docs/_changelog/details/v0.10.4.md
+++ /dev/null
@@ -1,169 +0,0 @@
-## Milestone details
-
-In the [v0.10.4](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.10.4) scope,
-23 issues were resolved and 14 pull requests were merged.
-This release includes 103 commits by 9 contributors.
-
-## Resolved issues (23)
-
-* [#118](https://github.com/dotnet/BenchmarkDotNet/issues/118) Raw data in CSV reports (assignee: [@AmadeusW](https://github.com/AmadeusW))
-* [#146](https://github.com/dotnet/BenchmarkDotNet/issues/146) Ability to specify units / easier comparison (assignee: [@AmadeusW](https://github.com/AmadeusW))
-* [#159](https://github.com/dotnet/BenchmarkDotNet/issues/159) Warn user if no Columns were defined (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#189](https://github.com/dotnet/BenchmarkDotNet/issues/189) --exporters option *appears* not to be working (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#249](https://github.com/dotnet/BenchmarkDotNet/issues/249) --class and --method should combine as "AND" filtering (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#294](https://github.com/dotnet/BenchmarkDotNet/issues/294) [Suggestion] CSVHelper.Escape() method should check for actual separator value (assignee: [@alinasmirnova](https://github.com/alinasmirnova))
-* [#303](https://github.com/dotnet/BenchmarkDotNet/issues/303) Update to Roslyn 2.0 when RTM is shipped to nuget.org (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#351](https://github.com/dotnet/BenchmarkDotNet/issues/351) Fix OS Version in Summary for Windows 10 (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#352](https://github.com/dotnet/BenchmarkDotNet/issues/352) Troubles with CoreJob on Linux (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#365](https://github.com/dotnet/BenchmarkDotNet/issues/365) [Minor bug] Benchmark switcher: incorrect method filtering (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#376](https://github.com/dotnet/BenchmarkDotNet/issues/376) Pick better background colors for output (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#382](https://github.com/dotnet/BenchmarkDotNet/issues/382) AssemblyInformationalVersion doesn't work (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#388](https://github.com/dotnet/BenchmarkDotNet/issues/388) Precise Machine Counter Diagnoser (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#391](https://github.com/dotnet/BenchmarkDotNet/issues/391) BenchmarkSwitcher should take an optinal IConfig
-* [#393](https://github.com/dotnet/BenchmarkDotNet/issues/393) Troubles with ClrJob in .NET Core applications (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#395](https://github.com/dotnet/BenchmarkDotNet/issues/395) Could not load file or assembly 'System.Reflection.Metadata' (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#401](https://github.com/dotnet/BenchmarkDotNet/issues/401) Exceptions in Roslyn.Builder (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#406](https://github.com/dotnet/BenchmarkDotNet/issues/406) BenchmarkDotNet with netcoreapp2.0 requires using RuntimeFrameworkVersion directly in the project file (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#410](https://github.com/dotnet/BenchmarkDotNet/issues/410) Troubles with Classic applications on nightly BenchmarkDotNet (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#412](https://github.com/dotnet/BenchmarkDotNet/issues/412) HardwareCounter.InstructionRetired failing with ArgumentNullException. Build 82 (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#415](https://github.com/dotnet/BenchmarkDotNet/issues/415) Allocations for async methods measures BenchmarkDotNet (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#419](https://github.com/dotnet/BenchmarkDotNet/issues/419) Suspicious warnings about MemoryMappedFiles (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#424](https://github.com/dotnet/BenchmarkDotNet/issues/424) Make InliningDiagnoser filtering more flexible (assignee: [@adamsitnik](https://github.com/adamsitnik))
-
-## Merged pull requests (14)
-
-* [#356](https://github.com/dotnet/BenchmarkDotNet/pull/356) Feature: host API interface (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [#379](https://github.com/dotnet/BenchmarkDotNet/pull/379) Feature: in-process benchmarks (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [#392](https://github.com/dotnet/BenchmarkDotNet/pull/392) Add an optional config to BenchmarkSwitcher. (by [@ILMTitan](https://github.com/ILMTitan))
-* [#396](https://github.com/dotnet/BenchmarkDotNet/pull/396) Allow users to pick, show and hide measurement units in the reports and exports. (by [@AmadeusW](https://github.com/AmadeusW))
-* [#400](https://github.com/dotnet/BenchmarkDotNet/pull/400) fix spelling error: misspredict => mispredict (by [@SteveDesmond-ca](https://github.com/SteveDesmond-ca))
-* [#405](https://github.com/dotnet/BenchmarkDotNet/pull/405) Make RoslynToolchain types public (by [@cdmihai](https://github.com/cdmihai))
-* [#407](https://github.com/dotnet/BenchmarkDotNet/pull/407) Propagate benchmark to hooks (by [@cdmihai](https://github.com/cdmihai))
-* [#408](https://github.com/dotnet/BenchmarkDotNet/pull/408) Small fixes before approval tests (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [#409](https://github.com/dotnet/BenchmarkDotNet/pull/409) CSVHelper.Escape() method should check for actual separator value (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [#416](https://github.com/dotnet/BenchmarkDotNet/pull/416) Exports file to temporary location if target is locked (by [@AmadeusW](https://github.com/AmadeusW))
-* [#421](https://github.com/dotnet/BenchmarkDotNet/pull/421) MarkdownExporter right-justifies numeric columns (by [@SteveDesmond-ca](https://github.com/SteveDesmond-ca))
-* [#423](https://github.com/dotnet/BenchmarkDotNet/pull/423) Updated Microsoft.Net.Test.Sdk (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [#430](https://github.com/dotnet/BenchmarkDotNet/pull/430) Fix unix OS detection. (by [@mfilippov](https://github.com/mfilippov))
-* [#432](https://github.com/dotnet/BenchmarkDotNet/pull/432) Fix macOS detection (by [@mfilippov](https://github.com/mfilippov))
-
-## Commits (103)
-
-* [bd790c](https://github.com/dotnet/BenchmarkDotNet/commit/bd790c5843e0d1000b8d5ce2fa494806ed2a9515) Simplify BenchmarkDotNet.IntegrationTests.Classic.ReferencesTests (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [bf9f4e](https://github.com/dotnet/BenchmarkDotNet/commit/bf9f4e6efe80dd99247b81e6bef80c7e74e7e888) Feature: host API interface (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [f85ffe](https://github.com/dotnet/BenchmarkDotNet/commit/f85ffe73ecc6b5c9bc547d99dd5b5dc91dc52535) Merge pull request #356 from ig-sinicyn/feature-host-api (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [8ffff0](https://github.com/dotnet/BenchmarkDotNet/commit/8ffff08eb06cb98d3b3e99e24510e9e665477282) Feature: in-process benchmarks (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [51fc0c](https://github.com/dotnet/BenchmarkDotNet/commit/51fc0c66a883d490862e50415fd68150e64dd0bc) Feature: in-process benchmarks, FixAffinity() helper (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [c5179f](https://github.com/dotnet/BenchmarkDotNet/commit/c5179f7569ad98a3662088e0e07d365af49bc6bc) Feature: in-process benchmarks, review fixes (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [6c5990](https://github.com/dotnet/BenchmarkDotNet/commit/6c5990cca4d9280cd9822fb987a5c6a8743be817) Feature: in-process benchmarks, review fixes, part 2 (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [c6b046](https://github.com/dotnet/BenchmarkDotNet/commit/c6b046c1a7bb3d555775582712c2ce138164f684) Feature: in-process benchmarks, STA & priority on full .Net FW (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [cc2c89](https://github.com/dotnet/BenchmarkDotNet/commit/cc2c89448437a2b90e44d0e2f19d22c96eff2e43) Feature: in-process benchmarks, env validation in toolchain, intro example ad... (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [101a80](https://github.com/dotnet/BenchmarkDotNet/commit/101a8016072febf5577fb899440e5328a8e6ba96) Improved versioning system (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [846532](https://github.com/dotnet/BenchmarkDotNet/commit/8465329cf832a2b2d74525d3675a178f5d76c425) Update links to appveyor (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5464e4](https://github.com/dotnet/BenchmarkDotNet/commit/5464e4397acb6d0d885f141b82c2659ad6faf271) Improved versioning system, part 2 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [e39a50](https://github.com/dotnet/BenchmarkDotNet/commit/e39a509c1bf9e39ec6a1ddb9d274204bfd41e62e) Merge pull request #379 from ig-sinicyn/feature-inprocess (by [@adamsitnik](https://github.com/adamsitnik))
-* [ae4cc8](https://github.com/dotnet/BenchmarkDotNet/commit/ae4cc8739844f99eaca0d0928b84c3109fc36fff) AssemblyInformationalVersion fix in common.props, resolves #382 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [d036f9](https://github.com/dotnet/BenchmarkDotNet/commit/d036f9d87e5deb49c0ac24940411ef54ac8f0a48) Precise Machine Counter Diagnoser #388 (by [@adamsitnik](https://github.com/adamsitnik))
-* [390442](https://github.com/dotnet/BenchmarkDotNet/commit/390442a9f880eabb1e7d02fa95fc6e22a8bd7bc3) Improved invocationCount behavior in SimpleJobAttribute (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [7b61ed](https://github.com/dotnet/BenchmarkDotNet/commit/7b61ede3193452b6827511d31808ed110a642789) add possibility to set Hardware Counters per class in runtime-independent way... (by [@adamsitnik](https://github.com/adamsitnik))
-* [6e208c](https://github.com/dotnet/BenchmarkDotNet/commit/6e208c50b4b401a900467695b2c44f6adf853312) Add an optional config to BenchmarkSwitcher. (by ILMTitan)
-* [935d23](https://github.com/dotnet/BenchmarkDotNet/commit/935d231c45ab9528fcae0c3624f963e05b00bb40) Merge pull request #392 from ILMTitan/master (by [@adamsitnik](https://github.com/adamsitnik))
-* [6b9a88](https://github.com/dotnet/BenchmarkDotNet/commit/6b9a88efd2e2171c9e8ed0e0c7be3f701fde9350) update to Roslyn 2.0, drop .NET 4.5 support, fixes #303 (by [@adamsitnik](https://github.com/adamsitnik))
-* [ea4c55](https://github.com/dotnet/BenchmarkDotNet/commit/ea4c559b531d917d45486f5ebf46c9c8f3fb224d) BenchmarkDotNet.IntegrationTests.csproj: fix formatting (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [20a537](https://github.com/dotnet/BenchmarkDotNet/commit/20a53704e1a099156df75269b5c26f7359c6a0bd) Update year in LICENSE.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [878796](https://github.com/dotnet/BenchmarkDotNet/commit/878796276ba4714cc8938a869844c9e3177de3db) Update logo (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [faba77](https://github.com/dotnet/BenchmarkDotNet/commit/faba771f36ccc272c49bd7194df3a94e98bcd156) Update README.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [6dce74](https://github.com/dotnet/BenchmarkDotNet/commit/6dce74bc6c38aeca6e36f91f20d2604dfda965ec) Update logo in README.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [7a750f](https://github.com/dotnet/BenchmarkDotNet/commit/7a750f78efac73bbfc75a394c6aff6def573cdfa) Another fix in README.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [1caa0d](https://github.com/dotnet/BenchmarkDotNet/commit/1caa0dc83a195c9d04941d18af5692da5903d4d5) fix spelling error: misspredict => mispredict (by [@SteveDesmond-ca](https://github.com/SteveDesmond-ca))
-* [742912](https://github.com/dotnet/BenchmarkDotNet/commit/742912b477678dd0e2dad295bd3d1b5ae10c4cc6) use Array.Empty and Task.Completed (after upgrading to .NET 4.6) (by [@adamsitnik](https://github.com/adamsitnik))
-* [0dafac](https://github.com/dotnet/BenchmarkDotNet/commit/0dafac43cb2553f075592128a54fa1cdbd0cf8ba) there is no need to set up with latest VS, fixes #393 (by [@adamsitnik](https://github.com/adamsitnik))
-* [f5d88e](https://github.com/dotnet/BenchmarkDotNet/commit/f5d88e2a66eb4ac436b1737212c726be47ab7613) Catch exceptions in BenchmarkDotNet.Running.BenchmarkRunnerCore.Run (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [fa176f](https://github.com/dotnet/BenchmarkDotNet/commit/fa176fa542ebb11c5dd61a945e6cb71186130af8) Merge pull request #400 from stevedesmond-ca/missspelling (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [90c3b1](https://github.com/dotnet/BenchmarkDotNet/commit/90c3b1a1f7a825e41b209d7a40aa1fd4d6b0d7f6) Docs improvements (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [84c524](https://github.com/dotnet/BenchmarkDotNet/commit/84c5248d788eb756e2fd4116a59caca0a7a5ce53) Mark SimpleJobAttribute with AllowMultiple (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [531804](https://github.com/dotnet/BenchmarkDotNet/commit/531804a66eede09f891ba061ac95eff6cdce1baa) Update README.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [7f2221](https://github.com/dotnet/BenchmarkDotNet/commit/7f2221362ed374e9ed13eac1746edf608c6874f2) Make RoslynToolchain types public (#405) (by [@cdmihai](https://github.com/cdmihai))
-* [be8c33](https://github.com/dotnet/BenchmarkDotNet/commit/be8c33a31efa4d31dd3b2adc01ad0ffaaaf38c50) Improved confidence intervals (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [767811](https://github.com/dotnet/BenchmarkDotNet/commit/767811d2c0c88450c75a75d84db46da30e346d6e) Propagate benchmark to hooks (#407) (by [@cdmihai](https://github.com/cdmihai))
-* [ec5e54](https://github.com/dotnet/BenchmarkDotNet/commit/ec5e547a72327c366970b444107b3858d578d184) All exporters should not use static environment info (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [2b8a9e](https://github.com/dotnet/BenchmarkDotNet/commit/2b8a9e01d71356a19a4cb6b3e0259d50c212b09e) Culculate csv separator when it is needed, not in constructor (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [95aeb5](https://github.com/dotnet/BenchmarkDotNet/commit/95aeb51c13e5bf9867b2fe278b8527ac7fd461da) clean up (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [2e74c2](https://github.com/dotnet/BenchmarkDotNet/commit/2e74c270535cad6b194eb6e835951f787bb537e4) Name field for all exporters (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [badb0b](https://github.com/dotnet/BenchmarkDotNet/commit/badb0b5426a9ee8426ea8a222cddb1a8d7881b01) Merge pull request #408 from alinasmirnova/small-fixes (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [9da9ca](https://github.com/dotnet/BenchmarkDotNet/commit/9da9ca160799087d19f702e4782cf92c47d1bbbb) search for .NET Core 2.0 settings in imported props files, fixes #406 (by [@adamsitnik](https://github.com/adamsitnik))
-* [2b08c5](https://github.com/dotnet/BenchmarkDotNet/commit/2b08c5180b310a62c965f4fce5b3a84627f0aa55) filter sealed, generic and abstract classes from BenchmarkSwitcher, fixes #365 (by [@adamsitnik](https://github.com/adamsitnik))
-* [14ad55](https://github.com/dotnet/BenchmarkDotNet/commit/14ad555402a451b7c6e0196174a92be9e69d5857) print correct OS version in summary, fixes #351 (by [@adamsitnik](https://github.com/adamsitnik))
-* [b86f48](https://github.com/dotnet/BenchmarkDotNet/commit/b86f48a698dff7449e55725fafe156e4f88429e2) BenchmarkDotNet does not support running .NET Core benchmarks when host proce... (by [@adamsitnik](https://github.com/adamsitnik))
-* [11b51b](https://github.com/dotnet/BenchmarkDotNet/commit/11b51b307208bea3cd49f6fbcadb597e4b15e137) refactoring in TypeParser (by [@adamsitnik](https://github.com/adamsitnik))
-* [8047a7](https://github.com/dotnet/BenchmarkDotNet/commit/8047a7d837d128946685c1581f7bb8883df3f28f) use AND when filtering with args from command line, fixes #249 (by [@adamsitnik](https://github.com/adamsitnik))
-* [3cf8d8](https://github.com/dotnet/BenchmarkDotNet/commit/3cf8d8802cd6305061c4386e431ed3745ec189f3) handle cmd line arguments without '=', fixes #189 (by [@adamsitnik](https://github.com/adamsitnik))
-* [cdc71f](https://github.com/dotnet/BenchmarkDotNet/commit/cdc71f7f5925dedf6dee28076c4b9ac3385df3e1) test fix after recent changes, #249 (by [@adamsitnik](https://github.com/adamsitnik))
-* [97c211](https://github.com/dotnet/BenchmarkDotNet/commit/97c2110a1c1afcd43d610644b4116c177410f115) detect situation when users want to use Hardware Counters with InProcessToolc... (by [@adamsitnik](https://github.com/adamsitnik))
-* [ba972b](https://github.com/dotnet/BenchmarkDotNet/commit/ba972bb8de64d124d125191127f7afd661d32883) Warn user if no Columns were defined, fixes #159 (by [@adamsitnik](https://github.com/adamsitnik))
-* [2520f2](https://github.com/dotnet/BenchmarkDotNet/commit/2520f20b457d37b8fb179d790ba44d77fe274d7b) migrate old csprojs to the new format to get the tests running in common way,... (by [@adamsitnik](https://github.com/adamsitnik))
-* [dd1b4d](https://github.com/dotnet/BenchmarkDotNet/commit/dd1b4dd71caed1c34bd24eb88112071f22555ca8) Improvements in StatisticsTests (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [07d149](https://github.com/dotnet/BenchmarkDotNet/commit/07d149474c7bcb631a6c42cf27c3844a085ad99d) emptyEnumerable.All(whatever) returns true (by [@adamsitnik](https://github.com/adamsitnik))
-* [0d61a7](https://github.com/dotnet/BenchmarkDotNet/commit/0d61a781310802e3113a41464f2bfdb40465b182) improve dynamic diagnoser loading (case when diagnosers NuGet pacakge is inst... (by [@adamsitnik](https://github.com/adamsitnik))
-* [5a6937](https://github.com/dotnet/BenchmarkDotNet/commit/5a693733a53312a9606d7fb08d960027aeba8a56) Ignore BenchmarkProject.json in BenchmarkDotNet.sln.DotSettings (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5895c4](https://github.com/dotnet/BenchmarkDotNet/commit/5895c4b15b744e217d0816f05bf70b5d87228d75) Improvements in TypeParserTests (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [1124ae](https://github.com/dotnet/BenchmarkDotNet/commit/1124ae6ef2b9d2e37b2c5cd8153e034bbda692ca) BenchmarkDotNet.Tests: cleanup (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [d37ef4](https://github.com/dotnet/BenchmarkDotNet/commit/d37ef47917fd3b492dc6515efcf7a1bd2f80b4eb) CSVHelper.Escape() method should check for actual separator value (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [43643c](https://github.com/dotnet/BenchmarkDotNet/commit/43643ceda4f929f5e387f04c4557e5ebe2d7ad6b) move hardwareCounters from Job to Config, fixes #412 (by [@adamsitnik](https://github.com/adamsitnik))
-* [303fff](https://github.com/dotnet/BenchmarkDotNet/commit/303fff198c11500a375331882b29047ecb7c70be) pass config from runner => executor => diagnoser #412 (by [@adamsitnik](https://github.com/adamsitnik))
-* [5b432e](https://github.com/dotnet/BenchmarkDotNet/commit/5b432e468b6cfbdef4d2db190b619046bb630494) Addded approval tests for exporters (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [ac6507](https://github.com/dotnet/BenchmarkDotNet/commit/ac65076fba00aa9d4fe1f1b45663d3075bb738c2) Added more info in mock summary (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [a59b17](https://github.com/dotnet/BenchmarkDotNet/commit/a59b17a070e00dfc5b37e571396ca7e1a1dac84c) MockEnvironmentInfo for approval tests (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [610f3b](https://github.com/dotnet/BenchmarkDotNet/commit/610f3b72808bd76837facf6cd75acf70a30eb772) Awaiting Tasks should not interfere allocation results, fixes #415 (by [@adamsitnik](https://github.com/adamsitnik))
-* [cf16f6](https://github.com/dotnet/BenchmarkDotNet/commit/cf16f69a3ce06b6f6edde4ee351dba49be591011) I forgot about aligning, #415 (by [@adamsitnik](https://github.com/adamsitnik))
-* [2860d2](https://github.com/dotnet/BenchmarkDotNet/commit/2860d2d461b98bdfc0cee4f8c3ece84d8089d168) help the .NET framework to resolve assemblies when binding redirects are miss... (by [@adamsitnik](https://github.com/adamsitnik))
-* [e7ad36](https://github.com/dotnet/BenchmarkDotNet/commit/e7ad369f2d905f4058190abc0bf5bac880cec6fe) don't log false alarms, fixes #419 (by [@adamsitnik](https://github.com/adamsitnik))
-* [803081](https://github.com/dotnet/BenchmarkDotNet/commit/80308113a4c1668ebb2bb16c10b6e16cd35def1e) Allow users to pick, show and hide measurement units in the reports and expor... (by [@AmadeusW](https://github.com/AmadeusW))
-* [fa3128](https://github.com/dotnet/BenchmarkDotNet/commit/fa312804267eb3b9b26e2efe64c1d44c608fba12) Exports file to temporary location if target is locked (#416) (by [@AmadeusW](https://github.com/AmadeusW))
-* [c923ba](https://github.com/dotnet/BenchmarkDotNet/commit/c923ba82fbd5ce8976252e2dacb460fedb0cbee4) MarkdownExporter right-justifies numeric columns (#421) (by [@SteveDesmond-ca](https://github.com/SteveDesmond-ca))
-* [aa290d](https://github.com/dotnet/BenchmarkDotNet/commit/aa290d92b45e3f3eacab82a742d462d2208bae6d) Add column legends (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [8d8db5](https://github.com/dotnet/BenchmarkDotNet/commit/8d8db56a5ee9004fdd3ecc2faab28e10b67cb22f) Handle case when there are no columns with legends (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [dc201c](https://github.com/dotnet/BenchmarkDotNet/commit/dc201c7bee40b564358ff818a9ce4f24e60649dc) Add empty line before legends (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [ff7fc9](https://github.com/dotnet/BenchmarkDotNet/commit/ff7fc976624f7fa06bb3234a5299bccba7c7b16c) Approved files (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [3f6372](https://github.com/dotnet/BenchmarkDotNet/commit/3f63729b6edc8d019da894b076c6699e2981489c) Updated Microsoft.Net.Test.Sdk (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [7d23d1](https://github.com/dotnet/BenchmarkDotNet/commit/7d23d15692316ec5fd080f29230bd6595cd3b8ab) Merge remote-tracking branch 'upstream/master' (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [57cbbb](https://github.com/dotnet/BenchmarkDotNet/commit/57cbbb686e25f6275574f60adc25f768e1410fdf) Merge branch 'new-test-sdk-version' (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [c0c563](https://github.com/dotnet/BenchmarkDotNet/commit/c0c5638a42b0bccffdc3ebc64ef8359a55be2e60) Updated Microsoft.Net.Test.Sdk (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [539834](https://github.com/dotnet/BenchmarkDotNet/commit/539834fb0587287e4dd1533cb0c110de38440190) Updated spproved files according last changes in md exporter (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [f117f0](https://github.com/dotnet/BenchmarkDotNet/commit/f117f03d29564830d1c17905ff673d0369099436) Added *.received and *.orig in .gitignore (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [0d7e72](https://github.com/dotnet/BenchmarkDotNet/commit/0d7e7206a38993b3b17359c948b021eb23ed7a27) Make InliningDiagnoser filtering more flexible, fixes #424 (by [@adamsitnik](https://github.com/adamsitnik))
-* [d25eb0](https://github.com/dotnet/BenchmarkDotNet/commit/d25eb022b925e1e6a09e0e5a0c98806baf43a17f) allow to set InProcessToolchain via attribute /cc @ig-sinicyn (by [@adamsitnik](https://github.com/adamsitnik))
-* [8cf041](https://github.com/dotnet/BenchmarkDotNet/commit/8cf04188a366dd8d3deb9393ef2ebe3dad5da39e) Mock strings in mock environment info (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [0db804](https://github.com/dotnet/BenchmarkDotNet/commit/0db8046be264293c0cbcc003de849060f3de6b64) Changed file naming in approval files (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [29aeaf](https://github.com/dotnet/BenchmarkDotNet/commit/29aeaf1b3786720ef7ea4e5f1b103fbb4080e2a6) correct Idle implementation for Task-returning benchmarks, fixes #418 (by [@adamsitnik](https://github.com/adamsitnik))
-* [c81aa5](https://github.com/dotnet/BenchmarkDotNet/commit/c81aa5d67de022bffc8b128c2630234c804c8a94) the missing docs for Hardware Counters, fixes #388 (by [@adamsitnik](https://github.com/adamsitnik))
-* [6076e2](https://github.com/dotnet/BenchmarkDotNet/commit/6076e2348ef950b2e220e2b8a25b01bdf07c80e2) Improved precision (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [72b3a6](https://github.com/dotnet/BenchmarkDotNet/commit/72b3a62bac053439eca14a53132366c10a642696) Show "NA" for statistic columns with double.NaN values (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [ea2222](https://github.com/dotnet/BenchmarkDotNet/commit/ea2222984db987b8e7377310cdf936eb5da6bd1c) Processor brand string prettifying (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [678d43](https://github.com/dotnet/BenchmarkDotNet/commit/678d43278c9a6e952778c426025341bcc0363b94) Added approval files info links to docs (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [33911c](https://github.com/dotnet/BenchmarkDotNet/commit/33911c68eadf96fa119a36f331a50fd43858d27d) Merge remote-tracking branch 'upstream/master' (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [d4c928](https://github.com/dotnet/BenchmarkDotNet/commit/d4c9281b621bb461d931176522987cf9c43ee409) Fixed approval tests according to recent changes in master (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [eb9f4f](https://github.com/dotnet/BenchmarkDotNet/commit/eb9f4f4d062cfab364f99c54a90f09ddba6fe719) Fix typos in docs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [271b27](https://github.com/dotnet/BenchmarkDotNet/commit/271b27880d72ef36264baa2abe3875852665a07b) Merge pull request #348 from alinasmirnova/master (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [152f3e](https://github.com/dotnet/BenchmarkDotNet/commit/152f3e3804c4129f2610741e83b321d2ff58f8d0) Parsing Gulftown processor brand strings (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [74d793](https://github.com/dotnet/BenchmarkDotNet/commit/74d79336b491e606c4125a0509ae806b8532839f) Minor improvements in docs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [764bd3](https://github.com/dotnet/BenchmarkDotNet/commit/764bd31b4edc27fb85253a31b1f89068c75047b8) Minor improvements in docs, part 2 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [0a251b](https://github.com/dotnet/BenchmarkDotNet/commit/0a251b81b826876179740cc8b79c994a73a5cd51) Fix unix OS detection. (by [@mfilippov](https://github.com/mfilippov))
-* [5c3b39](https://github.com/dotnet/BenchmarkDotNet/commit/5c3b391069fdf8250665f6dc069bf026a5c0be1a) Fix typo in PlatformID (by [@mfilippov](https://github.com/mfilippov))
-* [7f3d06](https://github.com/dotnet/BenchmarkDotNet/commit/7f3d061df634e1701e7be1a846d68353c3a0fd88) Always use PlatformAbstractions in RuntimeInformation.GetOsVersion() (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [46d34f](https://github.com/dotnet/BenchmarkDotNet/commit/46d34f6d1d0cf37c7db8e3d9c50350153e5f080f) Set library version: 0.10.4 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Contributors (9)
-
-* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik))
-* Alina Smirnova ([@alinasmirnova](https://github.com/alinasmirnova))
-* Amadeusz Wieczorek ([@AmadeusW](https://github.com/AmadeusW))
-* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* ig-sinicyn ([@ig-sinicyn](https://github.com/ig-sinicyn))
-* ILMTitan
-* Mihai Codoban ([@cdmihai](https://github.com/cdmihai))
-* Mikhail Filippov ([@mfilippov](https://github.com/mfilippov))
-* Steve Desmond ([@SteveDesmond-ca](https://github.com/SteveDesmond-ca))
-
-Thank you very much!
-
diff --git a/docs/_changelog/details/v0.10.5.md b/docs/_changelog/details/v0.10.5.md
deleted file mode 100644
index dda01949e8..0000000000
--- a/docs/_changelog/details/v0.10.5.md
+++ /dev/null
@@ -1,45 +0,0 @@
-## Milestone details
-
-In the [v0.10.5](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.10.5) scope,
-3 issues were resolved and 2 pull requests were merged.
-This release includes 16 commits by 4 contributors.
-
-## Resolved issues (3)
-
-* [#404](https://github.com/dotnet/BenchmarkDotNet/issues/404) Autoselecting amount of digits after the decimal point (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#428](https://github.com/dotnet/BenchmarkDotNet/issues/428) Cleanup NuGet.Config (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#434](https://github.com/dotnet/BenchmarkDotNet/issues/434) Allocation output suddenly is 0 GB (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Merged pull requests (2)
-
-* [#435](https://github.com/dotnet/BenchmarkDotNet/pull/435) Joined approved files according to cultures (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [#436](https://github.com/dotnet/BenchmarkDotNet/pull/436) Fix false allocations detection (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-
-## Commits (16)
-
-* [d9eefd](https://github.com/dotnet/BenchmarkDotNet/commit/d9eefd23203e25b276c3e7a5f5af474b5e554ba7) NuGet feeds cleanup, fixes #428 (by [@adamsitnik](https://github.com/adamsitnik))
-* [2a95b0](https://github.com/dotnet/BenchmarkDotNet/commit/2a95b049167b30781b2d8054be84ccd9f125c24c) Fix SizeUnit presentation, fixes #434 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [8eca28](https://github.com/dotnet/BenchmarkDotNet/commit/8eca28acf39fc59d6acb014f492abb27948e890d) Add a note about kilobytes in docs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [ae483e](https://github.com/dotnet/BenchmarkDotNet/commit/ae483e434f825514e147e9b7ea3c35df4d4b9a3f) Separate approved files only for cultures, not for exporters (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [78a6a0](https://github.com/dotnet/BenchmarkDotNet/commit/78a6a0d3e7462c1ce6e65e36adb22c422f814dde) Improved legend for MemoryDiagnoser (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [47ae20](https://github.com/dotnet/BenchmarkDotNet/commit/47ae2074ceeadc5d5e7f52978b1796f4322f4795) SizeUnitTests (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [9b44de](https://github.com/dotnet/BenchmarkDotNet/commit/9b44de704b96e2333d762b14daa152d859b1917d) fix false allocations detection (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [ffd535](https://github.com/dotnet/BenchmarkDotNet/commit/ffd535abc2f7c3360f31a2c0403f3272e5afb62c) Merge pull request #436 from ig-sinicyn/fix_allocations_on_run (by [@adamsitnik](https://github.com/adamsitnik))
-* [87c2bd](https://github.com/dotnet/BenchmarkDotNet/commit/87c2bd37790711356d3ae058c98b907fa1c62120) Inclusive ConfidenceInterval.Contains (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [da857a](https://github.com/dotnet/BenchmarkDotNet/commit/da857ad7eda77db813692d3c3678f8ad04f5af78) Don't show the ScaledSD column if values are small (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [e0cf24](https://github.com/dotnet/BenchmarkDotNet/commit/e0cf2405dd82cca4b9cff51426cb54a1446c545d) Add DefaultColumnProvidersTests (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [f2baa3](https://github.com/dotnet/BenchmarkDotNet/commit/f2baa3fd9fd212a7d021a8c675e04097da85444b) Fix typo in DefaultColumnProvidersTests (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [117560](https://github.com/dotnet/BenchmarkDotNet/commit/1175605c553b25b49dea3c065ae94179dfef6389) Fix BaselineScaledColumnTest.ColumnsWithBaselineGetsScaled (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [3a1fb7](https://github.com/dotnet/BenchmarkDotNet/commit/3a1fb7fbda842b6826f4dfd0a2f72479611f4b0a) Implement BestAmountOfDecimalDigits for statistics columns in SummaryTable, f... (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [4201ee](https://github.com/dotnet/BenchmarkDotNet/commit/4201eeac43c6d5bf0e62be58219ee59fcd1766bc) Fix ToolchainTest.CustomToolchainsAreSupported (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [cba245](https://github.com/dotnet/BenchmarkDotNet/commit/cba245602adfb1a64585e643879ebc1cbe5cf52a) Set library version: 0.10.5 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Contributors (4)
-
-* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik))
-* Alina Smirnova ([@alinasmirnova](https://github.com/alinasmirnova))
-* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* ig-sinicyn ([@ig-sinicyn](https://github.com/ig-sinicyn))
-
-Thank you very much!
-
diff --git a/docs/_changelog/details/v0.10.6.md b/docs/_changelog/details/v0.10.6.md
deleted file mode 100644
index a617c0e1b5..0000000000
--- a/docs/_changelog/details/v0.10.6.md
+++ /dev/null
@@ -1,38 +0,0 @@
-## Milestone details
-
-In the [v0.10.6](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.10.6) scope,
-3 issues were resolved and 1 pull requests were merged.
-This release includes 11 commits by 3 contributors.
-
-## Resolved issues (3)
-
-* [#438](https://github.com/dotnet/BenchmarkDotNet/issues/438) Need to Update Autogenerated csproj file (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#439](https://github.com/dotnet/BenchmarkDotNet/issues/439) Question - This benchmark apparently allocates, but why? (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#446](https://github.com/dotnet/BenchmarkDotNet/issues/446) ArgumentNullException if RPlotExporter is used (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Merged pull requests (1)
-
-* [#444](https://github.com/dotnet/BenchmarkDotNet/pull/444) Added line separator at the end in JsonExporters (by [@alinasmirnova](https://github.com/alinasmirnova))
-
-## Commits (11)
-
-* [3c1f09](https://github.com/dotnet/BenchmarkDotNet/commit/3c1f099aa6c1d90bb063309cea04a173266ac8b8) copy the PackageTargetFallback setting if present in csproj to support older ... (by [@adamsitnik](https://github.com/adamsitnik))
-* [ffab7d](https://github.com/dotnet/BenchmarkDotNet/commit/ffab7de2c5fda0ff4947b714bbbb0c3d626d2bbd) remove allocation from Engine, make sure tests detect breaking change in the ... (by [@adamsitnik](https://github.com/adamsitnik))
-* [7c9a0f](https://github.com/dotnet/BenchmarkDotNet/commit/7c9a0ff04751311c8434252127ab4b694c2b7665) consider Allocation Quantum side effects to have correct results for micro be... (by [@adamsitnik](https://github.com/adamsitnik))
-* [4af5f3](https://github.com/dotnet/BenchmarkDotNet/commit/4af5f346b49b8704652cfe3268a9fe02c649c227) Added line separator in JsonExporters (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [8ac913](https://github.com/dotnet/BenchmarkDotNet/commit/8ac9137063ec89639674fac98d8e8a17f7635243) added Instruction Retired per Cycle (IPC) to the predefined columns for Pmc D... (by [@adamsitnik](https://github.com/adamsitnik))
-* [0898c3](https://github.com/dotnet/BenchmarkDotNet/commit/0898c3fd2c371dc6d24a8e2933014ca63e8051d8) post code review changes (by [@adamsitnik](https://github.com/adamsitnik))
-* [b4d68e](https://github.com/dotnet/BenchmarkDotNet/commit/b4d68e933562bd86eb8147f39c4bfcdce83e2c72) 'kB' -> 'KB' (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [23bd4f](https://github.com/dotnet/BenchmarkDotNet/commit/23bd4f188bb0169c8625ab882899714729e1cadc) Handle null values in CsvHelper.Escape (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [77ed63](https://github.com/dotnet/BenchmarkDotNet/commit/77ed631835922e57361352a0d7c4a13f21860e3f) RPlotExporter.FindInPath: handle exceptions, trim quotes #446 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [626e3a](https://github.com/dotnet/BenchmarkDotNet/commit/626e3a64ba78a66afde9cf82a312c7a2fe4e6e1a) Show Windows brand versions in summary (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [247634](https://github.com/dotnet/BenchmarkDotNet/commit/2476346f639f41dad8748ab55155fc27fd8dbf1d) Set library version: 0.10.6 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Contributors (3)
-
-* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik))
-* Alina Smirnova ([@alinasmirnova](https://github.com/alinasmirnova))
-* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-Thank you very much!
-
diff --git a/docs/_changelog/details/v0.10.7.md b/docs/_changelog/details/v0.10.7.md
deleted file mode 100644
index e675bb094b..0000000000
--- a/docs/_changelog/details/v0.10.7.md
+++ /dev/null
@@ -1,55 +0,0 @@
-## Milestone details
-
-In the [v0.10.7](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.10.7) scope,
-6 issues were resolved and 1 pull requests were merged.
-This release includes 24 commits by 4 contributors.
-
-## Resolved issues (6)
-
-* [#66](https://github.com/dotnet/BenchmarkDotNet/issues/66) Friendliness to LinqPad (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#248](https://github.com/dotnet/BenchmarkDotNet/issues/248) Support a "category" attribute for selecting benchmarks (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#270](https://github.com/dotnet/BenchmarkDotNet/issues/270) Add support for Cleanup and Setup between benchmarks (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#274](https://github.com/dotnet/BenchmarkDotNet/issues/274) Support for run-once Setup and Clean-up with Parameters available (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#325](https://github.com/dotnet/BenchmarkDotNet/issues/325) Setup & Cleanup versions of attribute which would run before/after each benchmark iteration (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#445](https://github.com/dotnet/BenchmarkDotNet/issues/445) Missing reference to Microsoft.CodeAnalysis.CSharp when using BenchmarkDotNet in Linqpad (assignee: [@adamsitnik](https://github.com/adamsitnik))
-
-## Merged pull requests (1)
-
-* [#451](https://github.com/dotnet/BenchmarkDotNet/pull/451) Fix minor bugs in JsonExporter (by [@Teknikaali](https://github.com/Teknikaali))
-
-## Commits (24)
-
-* [a54645](https://github.com/dotnet/BenchmarkDotNet/commit/a54645f19de59e0b9f2852c194a2cc7731d17959) handle the LINQPad shadow copying, #445, #66 (by [@adamsitnik](https://github.com/adamsitnik))
-* [fe3032](https://github.com/dotnet/BenchmarkDotNet/commit/fe3032b2f84d62b5c298e46a72caaba2ac166904) Add Filters (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [2e7427](https://github.com/dotnet/BenchmarkDotNet/commit/2e7427cc4bf43e2a46fa2cb869e275b4c9ddd101) Add categories (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [f96346](https://github.com/dotnet/BenchmarkDotNet/commit/f96346725f6b7515e650fcaeb580960e2df8f12d) Add categories filters (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [34f808](https://github.com/dotnet/BenchmarkDotNet/commit/34f808b16f7b0d04deef4845ee8f3666646f78d2) Support category filters in BenchmarkSwitcher (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [786afe](https://github.com/dotnet/BenchmarkDotNet/commit/786afeecf6d1cd620e3cc169983f6c40ef55d13d) Implement join mode in BenchmarkSwitcher (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [a77a77](https://github.com/dotnet/BenchmarkDotNet/commit/a77a777606e5411f88f1e7c0ef1f206fc8855096) Post code review changes (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [cc7006](https://github.com/dotnet/BenchmarkDotNet/commit/cc700677d0ca0573b08401c5b4133ff9aaed57c5) Fix minor bugs in JsonExporter (#451) (by [@Teknikaali](https://github.com/Teknikaali))
-* [4dd789](https://github.com/dotnet/BenchmarkDotNet/commit/4dd789d8a5d95ffd3d35737f2ee1fc948e7bbd8d) Rename Setup/Cleanup to GlobalSetup/GlobalCleanup (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [21369c](https://github.com/dotnet/BenchmarkDotNet/commit/21369c23a97207f838411da85f09ee6f7974bce4) Introduce IterationSetup/IterationCleanup (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [0e9be7](https://github.com/dotnet/BenchmarkDotNet/commit/0e9be7d0160a3427d8c442970af52da192fd39bc) Add IterationSetupCleanupAnalyser (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [4f3703](https://github.com/dotnet/BenchmarkDotNet/commit/4f3703edc2da82e94cd27792bdd7236fdb1fbf22) docs: update structure (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5fe564](https://github.com/dotnet/BenchmarkDotNet/commit/5fe5647a158b41d0c2c949b6e04bca44ec5ff1d7) docs: add info about RunStrategy.Monitoring and new Setup/Cleanup attributes (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [87ce0f](https://github.com/dotnet/BenchmarkDotNet/commit/87ce0fec1e4700ed238865c8237917bebbb03ab5) Mark ProcessPropertiesTests as WindowsOnly (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [7e479e](https://github.com/dotnet/BenchmarkDotNet/commit/7e479e9e09ffe75eef712a6b4989c3b18d38cba2) Fix typo in File_StreamVsMemoryMapperVewStream.cs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [975514](https://github.com/dotnet/BenchmarkDotNet/commit/9755141a81e567c99de07aaac32d4f181784935a) Wrong xml doc comment (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [165b13](https://github.com/dotnet/BenchmarkDotNet/commit/165b1344a2b6ebcbf75c257d2548e713e46e1ea9) Merge pull request #455 from ig-sinicyn/patch-1 (by [@adamsitnik](https://github.com/adamsitnik))
-* [afa803](https://github.com/dotnet/BenchmarkDotNet/commit/afa803d0e38c0e11864b2e4394d4a85d3801d944) better Value Types support (by [@adamsitnik](https://github.com/adamsitnik))
-* [d16ddb](https://github.com/dotnet/BenchmarkDotNet/commit/d16ddb499e12da0bfde740912f5b9f49c7bf4e8c) workaround for weird AppVeyor behavior (by [@adamsitnik](https://github.com/adamsitnik))
-* [9f3d68](https://github.com/dotnet/BenchmarkDotNet/commit/9f3d689e372cc0b671c5c0072e557a2fff1e8965) support recursive nesting for returned types (by [@adamsitnik](https://github.com/adamsitnik))
-* [b7668e](https://github.com/dotnet/BenchmarkDotNet/commit/b7668ec6d6e14a5405756a5afb4309c9341b3422) Add tests/runCoreTests.sh (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [3cceb6](https://github.com/dotnet/BenchmarkDotNet/commit/3cceb6135e376c284d2640b7653c37cb63a0c8f4) runCoreTests.sh: fix output file for integration-tests (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [a21421](https://github.com/dotnet/BenchmarkDotNet/commit/a21421862756f617231893a60ddcf5c70a7b9c3c) Make some tests Windows-only (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [00a156](https://github.com/dotnet/BenchmarkDotNet/commit/00a15682dd431f624b4c8f4811cc17679f564059) Set library version: 0.10.7 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Contributors (4)
-
-* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik))
-* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* Anssi Kettunen ([@Teknikaali](https://github.com/Teknikaali))
-* ig-sinicyn ([@ig-sinicyn](https://github.com/ig-sinicyn))
-
-Thank you very much!
-
diff --git a/docs/_changelog/details/v0.10.8.md b/docs/_changelog/details/v0.10.8.md
deleted file mode 100644
index b9a44e0af9..0000000000
--- a/docs/_changelog/details/v0.10.8.md
+++ /dev/null
@@ -1,40 +0,0 @@
-## Milestone details
-
-In the [v0.10.8](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.10.8) scope,
-5 issues were resolved and 3 pull requests were merged.
-This release includes 8 commits by 4 contributors.
-
-## Resolved issues (5)
-
-* [#157](https://github.com/dotnet/BenchmarkDotNet/issues/157) Implement export to xml
-* [#349](https://github.com/dotnet/BenchmarkDotNet/issues/349) What the report title and value means? (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#450](https://github.com/dotnet/BenchmarkDotNet/issues/450) [Minor feature request] Please make GcStats.AllocationQuantum public
-* [#459](https://github.com/dotnet/BenchmarkDotNet/issues/459) [Question] What does the unit of measurement us stand for
-* [#461](https://github.com/dotnet/BenchmarkDotNet/issues/461) .NET Framework 4.7 support (assignee: [@adamsitnik](https://github.com/adamsitnik))
-
-## Merged pull requests (3)
-
-* [#452](https://github.com/dotnet/BenchmarkDotNet/pull/452) Feature: XML Exporter (by [@Teknikaali](https://github.com/Teknikaali))
-* [#455](https://github.com/dotnet/BenchmarkDotNet/pull/455) Wrong xml doc comment (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [#462](https://github.com/dotnet/BenchmarkDotNet/pull/462) make allocation quantum public, deal with a spelling error and expose… (by [@RichLinnell](https://github.com/RichLinnell))
-
-## Commits (8)
-
-* [f14e50](https://github.com/dotnet/BenchmarkDotNet/commit/f14e508e44b510a26cc3ec5aed30ee7843a92baf) Add legend for time units (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [e59550](https://github.com/dotnet/BenchmarkDotNet/commit/e5955083f372cfaf706b4665acc1eb37b21b07c3) Add info about OrderProviders in docs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [6fc245](https://github.com/dotnet/BenchmarkDotNet/commit/6fc2456ceec071bfc2e3432c3b800ae905c90c6a) Fix ConfigPassingTest (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [ef0583](https://github.com/dotnet/BenchmarkDotNet/commit/ef0583365a97d899e918ad14b56b697db1b8e910) Feature: XML Exporter (#452) (by [@Teknikaali](https://github.com/Teknikaali))
-* [3f2b5c](https://github.com/dotnet/BenchmarkDotNet/commit/3f2b5c3c134c62f34f0ecf1a9c90d91ad37f2c6a) .NET 4.7 support from .NET Core host process on Windows, fixes #461 (by [@adamsitnik](https://github.com/adamsitnik))
-* [a0148d](https://github.com/dotnet/BenchmarkDotNet/commit/a0148db80c518a9d255f496534a8d1666be52c69) make allocation quantum public, deal with a spelling error and expose allocat... (by [@RichLinnell](https://github.com/RichLinnell))
-* [551387](https://github.com/dotnet/BenchmarkDotNet/commit/5513873ac40d07583d6136e431e3b7c8cdf6c851) add Windows check to our CsProjClassicNetToolchain (by [@adamsitnik](https://github.com/adamsitnik))
-* [971565](https://github.com/dotnet/BenchmarkDotNet/commit/971565b3674555731692933f5924a850a448ba27) Set library version: 0.10.8 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Contributors (4)
-
-* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik))
-* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* Anssi Kettunen ([@Teknikaali](https://github.com/Teknikaali))
-* Rich Linnell ([@RichLinnell](https://github.com/RichLinnell))
-
-Thank you very much!
-
diff --git a/docs/_changelog/details/v0.10.9.md b/docs/_changelog/details/v0.10.9.md
deleted file mode 100644
index edf17fd7b5..0000000000
--- a/docs/_changelog/details/v0.10.9.md
+++ /dev/null
@@ -1,94 +0,0 @@
-## Milestone details
-
-In the [v0.10.9](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.10.9) scope,
-13 issues were resolved and 14 pull requests were merged.
-This release includes 37 commits by 10 contributors.
-
-## Resolved issues (13)
-
-* [#380](https://github.com/dotnet/BenchmarkDotNet/issues/380) Problem running benchmark due to "could not copy" during build (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#390](https://github.com/dotnet/BenchmarkDotNet/issues/390) Crashing benchmark (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#426](https://github.com/dotnet/BenchmarkDotNet/issues/426) Migrate from custom build scripts to Cake (C# Make)
-* [#448](https://github.com/dotnet/BenchmarkDotNet/issues/448) Detect correct version of .NET Core (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#453](https://github.com/dotnet/BenchmarkDotNet/issues/453) MemoryDiagnoser and JsonExporter
-* [#469](https://github.com/dotnet/BenchmarkDotNet/issues/469) [Suggestion] Specify Setup per benchmark (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#474](https://github.com/dotnet/BenchmarkDotNet/issues/474) PlatformNotSupportedException when reading ProcessorAffinity on non-Windows platforms (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#479](https://github.com/dotnet/BenchmarkDotNet/issues/479) Invalid C# code generated for valid F# identifiers (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#481](https://github.com/dotnet/BenchmarkDotNet/issues/481) Iteration cleanup runs before the benchmark (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#482](https://github.com/dotnet/BenchmarkDotNet/issues/482) Benchmark seems to hang when no logger is defined (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#490](https://github.com/dotnet/BenchmarkDotNet/issues/490) BDN.Generated.exe is locking files when killed with ctrl+c (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#491](https://github.com/dotnet/BenchmarkDotNet/issues/491) UnauthorizedAccessException preventing report to be written (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#499](https://github.com/dotnet/BenchmarkDotNet/issues/499) Opting into app-compat switches in a benchmark doesn't work (assignee: [@adamsitnik](https://github.com/adamsitnik))
-
-## Merged pull requests (14)
-
-* [#465](https://github.com/dotnet/BenchmarkDotNet/pull/465) Small correction in Filters.md (by [@mtschneiders](https://github.com/mtschneiders))
-* [#467](https://github.com/dotnet/BenchmarkDotNet/pull/467) Small improvements to FAQ.md (by [@mtschneiders](https://github.com/mtschneiders))
-* [#471](https://github.com/dotnet/BenchmarkDotNet/pull/471) Corrected typos in Filters.md and IntroFilters.cs (by [@mtschneiders](https://github.com/mtschneiders))
-* [#473](https://github.com/dotnet/BenchmarkDotNet/pull/473) Adds ISummaryStyle information to the Exporters guide (by [@AmadeusW](https://github.com/AmadeusW))
-* [#475](https://github.com/dotnet/BenchmarkDotNet/pull/475) Cake (C# Make) integration. Migration from custom build scripts. (by [@Ky7m](https://github.com/Ky7m))
-* [#476](https://github.com/dotnet/BenchmarkDotNet/pull/476) Improve Xml exporter's discoverability (by [@Teknikaali](https://github.com/Teknikaali))
-* [#478](https://github.com/dotnet/BenchmarkDotNet/pull/478) Add MemoryDiagnoser results to JsonExporter output (by [@Teknikaali](https://github.com/Teknikaali))
-* [#480](https://github.com/dotnet/BenchmarkDotNet/pull/480) Fix links to Overview/FAQ (by [@davkean](https://github.com/davkean))
-* [#483](https://github.com/dotnet/BenchmarkDotNet/pull/483) Update jobs docs (by [@aarondandy](https://github.com/aarondandy))
-* [#488](https://github.com/dotnet/BenchmarkDotNet/pull/488) Improve XmlExporter (by [@Teknikaali](https://github.com/Teknikaali))
-* [#497](https://github.com/dotnet/BenchmarkDotNet/pull/497) Add temporary solution to address connectivity issues to nuget.org (by [@Ky7m](https://github.com/Ky7m))
-* [#501](https://github.com/dotnet/BenchmarkDotNet/pull/501) Target Setup methods for specific Benchmarks (by [@ipjohnson](https://github.com/ipjohnson))
-* [#503](https://github.com/dotnet/BenchmarkDotNet/pull/503) Make sure IterationCleanup is run after Jitting (by [@smitpatel](https://github.com/smitpatel))
-* [#506](https://github.com/dotnet/BenchmarkDotNet/pull/506) Removes a temporary solution related to connectivity issues to nuget (by [@Ky7m](https://github.com/Ky7m))
-
-## Commits (37)
-
-* [0b5657](https://github.com/dotnet/BenchmarkDotNet/commit/0b5657c59821216e074298cfa2821489d8d08ca9) Small correction in comments (by [@mtschneiders](https://github.com/mtschneiders))
-* [b1ad2c](https://github.com/dotnet/BenchmarkDotNet/commit/b1ad2c12a572c191a5fc3ada4126cc3c7784165d) Merge pull request #465 from mtschneiders/patch-1 (by [@adamsitnik](https://github.com/adamsitnik))
-* [3bb154](https://github.com/dotnet/BenchmarkDotNet/commit/3bb154f3fef330204506409162bb7662219df0dd) Small corrections to FAQ.md (by [@mtschneiders](https://github.com/mtschneiders))
-* [1a8559](https://github.com/dotnet/BenchmarkDotNet/commit/1a8559f24c1e36bf235943d89e67ad83e5fcd9ce) Merge pull request #467 from mtschneiders/patch-2 (by [@adamsitnik](https://github.com/adamsitnik))
-* [fc4dfe](https://github.com/dotnet/BenchmarkDotNet/commit/fc4dfe31801bbf4b562dd7c1794999c552880b76) Corrected typos in Filters.md and IntroFilters.cs (by [@mtschneiders](https://github.com/mtschneiders))
-* [cb5072](https://github.com/dotnet/BenchmarkDotNet/commit/cb5072ca11d2cf5298c0fde5c73c4ae8c6948e01) Remove UpgradeLog.htm (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [7013bd](https://github.com/dotnet/BenchmarkDotNet/commit/7013bd10ce926657436558a2854ff8bbb3a0c234) Adds ISummaryStyle information to the Exporters guide (by [@AmadeusW](https://github.com/AmadeusW))
-* [345af7](https://github.com/dotnet/BenchmarkDotNet/commit/345af7c40668ba886bed0c528ef9b03fdd7289f2) wording (by [@AmadeusW](https://github.com/AmadeusW))
-* [a114ea](https://github.com/dotnet/BenchmarkDotNet/commit/a114ea7267461ac83c566761f0160d8b8a39d148) Merge pull request #473 from AmadeusW/docs/exporters (by [@adamsitnik](https://github.com/adamsitnik))
-* [26d444](https://github.com/dotnet/BenchmarkDotNet/commit/26d44411ea47f28a9cc7df84b2df0ef89b2bbcf7) Unix-related ProcessorAffinity fixes (fix #474) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [2d8a53](https://github.com/dotnet/BenchmarkDotNet/commit/2d8a53a75cddafff17212307d8666bc09757745c) Improve Xml exporter's discoverability (#476) (by [@Teknikaali](https://github.com/Teknikaali))
-* [baebf9](https://github.com/dotnet/BenchmarkDotNet/commit/baebf9b1566aeaffbe04a536948df6a259ab54dd) Add MemoryDiagnoser results to JsonExporter output (#478) (by [@Teknikaali](https://github.com/Teknikaali))
-* [32993c](https://github.com/dotnet/BenchmarkDotNet/commit/32993c75197230f7d322f137174f7aeee86c3ddd) Fix links to Overview/FAQ (by [@davkean](https://github.com/davkean))
-* [8e712c](https://github.com/dotnet/BenchmarkDotNet/commit/8e712cf6db8b1a4b4a3dbd0a408b76adb4f69417) Merge pull request #480 from davkean/FixLinks (by [@adamsitnik](https://github.com/adamsitnik))
-* [43405d](https://github.com/dotnet/BenchmarkDotNet/commit/43405dc8ab37a18264713538bd1f13dd9f932a3e) Update jobs docs (by [@aarondandy](https://github.com/aarondandy))
-* [1bacac](https://github.com/dotnet/BenchmarkDotNet/commit/1bacac97cfdb9179aaec8230db53bb003da0125a) Merge pull request #483 from aarondandy/docs-changes (by [@adamsitnik](https://github.com/adamsitnik))
-* [3c2c8d](https://github.com/dotnet/BenchmarkDotNet/commit/3c2c8dec28d6c570f2901001058cd9c6000e6ca2) print nice error for F# methods that contain whitespaces, fixes #479 (by [@adamsitnik](https://github.com/adamsitnik))
-* [7ba1c8](https://github.com/dotnet/BenchmarkDotNet/commit/7ba1c809004e0b75eaa87724155480eaf623f8a9) post code review #479 (by [@adamsitnik](https://github.com/adamsitnik))
-* [3ca39a](https://github.com/dotnet/BenchmarkDotNet/commit/3ca39afe9f0d25359f9b092181beb02d57c5ad32) even more post code review #479 (by [@adamsitnik](https://github.com/adamsitnik))
-* [eb8482](https://github.com/dotnet/BenchmarkDotNet/commit/eb84825ff08aa5d23d2d512d4d4bde3e95ca0815) warn the users if no logger, columns or exporters were defined, fixes #482 (by [@adamsitnik](https://github.com/adamsitnik))
-* [8505ab](https://github.com/dotnet/BenchmarkDotNet/commit/8505abb5416bad90cda03f4972b067f9ac44b304) unique file names by default, are removed after printing the results, fix #49... (by [@adamsitnik](https://github.com/adamsitnik))
-* [3e74aa](https://github.com/dotnet/BenchmarkDotNet/commit/3e74aa767456c174d2f3dcdfb0934f04aca98851) Improve XmlExporter (#488) (by [@Teknikaali](https://github.com/Teknikaali))
-* [6e2577](https://github.com/dotnet/BenchmarkDotNet/commit/6e25773a14b2506332f8232c0ccabf5f234091e1) Cake (C# Make) integration. Migration from custom build scripts. (#475) (by [@Ky7m](https://github.com/Ky7m))
-* [6e6fcc](https://github.com/dotnet/BenchmarkDotNet/commit/6e6fccfc2bfbb5f34b5f403fa404b58863a4e2d5) Add temporary solution to address connectivity issues to nuget.org https://ap... (by [@Ky7m](https://github.com/Ky7m))
-* [dc6dc4](https://github.com/dotnet/BenchmarkDotNet/commit/dc6dc411b4d8703d0a1abafe64fb1e0b0a83af1f) all runtime settings, that do not belong to Job must be rewritten by default ... (by [@adamsitnik](https://github.com/adamsitnik))
-* [ed5865](https://github.com/dotnet/BenchmarkDotNet/commit/ed586585faf90322d30a900fb6563cf0cb5dcb92) Rename "dotnet cli version" to ".NET Core SDK", see #448 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [857f2b](https://github.com/dotnet/BenchmarkDotNet/commit/857f2bf92458d2b6321a5a61eb0e6a61d1d10bdf) Detecting the correct version of .NET Core, fixing #448 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [7ec001](https://github.com/dotnet/BenchmarkDotNet/commit/7ec0017d95da7ff3b33514f4a1b26bdcbe3a9501) Don't print information about unknown timers in HostEnvironmentInfo (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [4c3c82](https://github.com/dotnet/BenchmarkDotNet/commit/4c3c8233653873e5ed5f45b7232a1cb420a914d8) Add missing space in HostRuntimeInfo (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [da8226](https://github.com/dotnet/BenchmarkDotNet/commit/da8226aa049f7034f8568dfd19a0338e32f9b1bc) Print actual information about .NET Framework version in summary, see #448 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [cea199](https://github.com/dotnet/BenchmarkDotNet/commit/cea199f74923c99f88f4bb4d53e37f86b10269b7) Fix MultipleRuntimesTest.SingleBenchmarkCanBeExecutedForMultpleRuntimes (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [db56bc](https://github.com/dotnet/BenchmarkDotNet/commit/db56bc73dc0f6fbae344c9f414e97c5cba3770b1) Make sure IterationCleanup is run after Jitting (by [@smitpatel](https://github.com/smitpatel))
-* [3df90f](https://github.com/dotnet/BenchmarkDotNet/commit/3df90f4ff8577cd8b2d58fefb6ce4ddfe5e33597) Merge pull request #503 from smitpatel/orderingissue (by [@adamsitnik](https://github.com/adamsitnik))
-* [1177c8](https://github.com/dotnet/BenchmarkDotNet/commit/1177c80e2dbe931439e44bb0ce2ce25cad8b9ba2) Improve tests/runCoreTests.sh (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [976900](https://github.com/dotnet/BenchmarkDotNet/commit/9769007c5e082967d1c0c6379c23d055c98d9f53) Removes a temporary solution related to connectivity issues to nuget.org http... (by [@Ky7m](https://github.com/Ky7m))
-* [557246](https://github.com/dotnet/BenchmarkDotNet/commit/557246dbef3a9397bcd91b2c49347e939aab33cf) Target Setup methods for specific Benchmarks (#501) (by [@ipjohnson](https://github.com/ipjohnson))
-* [80d70a](https://github.com/dotnet/BenchmarkDotNet/commit/80d70aa8b6974f469d0c46ae8800955ef3af20e7) Set library version: 0.10.9 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Contributors (10)
-
-* Aaron Dandy ([@aarondandy](https://github.com/aarondandy))
-* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik))
-* Amadeusz Wieczorek ([@AmadeusW](https://github.com/AmadeusW))
-* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* Anssi Kettunen ([@Teknikaali](https://github.com/Teknikaali))
-* David Kean ([@davkean](https://github.com/davkean))
-* Ian Johnson ([@ipjohnson](https://github.com/ipjohnson))
-* Igor Fesenko ([@Ky7m](https://github.com/Ky7m))
-* Mateus Artur Schneiders ([@mtschneiders](https://github.com/mtschneiders))
-* Smit Patel ([@smitpatel](https://github.com/smitpatel))
-
-Thank you very much!
-
diff --git a/docs/_changelog/details/v0.11.0.md b/docs/_changelog/details/v0.11.0.md
deleted file mode 100644
index 39cd9f770c..0000000000
--- a/docs/_changelog/details/v0.11.0.md
+++ /dev/null
@@ -1,344 +0,0 @@
-## Milestone details
-
-In the [v0.11.0](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.11.0) scope,
-65 issues were resolved and 34 pull requests were merged.
-This release includes 214 commits by 11 contributors.
-
-## Resolved issues (65)
-
-* [#136](https://github.com/dotnet/BenchmarkDotNet/issues/136) Fastcheck for correctness of benchmark implementations
-* [#175](https://github.com/dotnet/BenchmarkDotNet/issues/175) Add .NET Core support for Diagnostics package (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#368](https://github.com/dotnet/BenchmarkDotNet/issues/368) Memory leak and crash with [Setup] (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#420](https://github.com/dotnet/BenchmarkDotNet/issues/420) Make BenchmarkDotNet.Core runtime independent (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#464](https://github.com/dotnet/BenchmarkDotNet/issues/464) Iteration setup / cleanup should not be called for Idle() (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#484](https://github.com/dotnet/BenchmarkDotNet/issues/484) Broken HTTPS on site (assignee: [@jongalloway](https://github.com/jongalloway))
-* [#487](https://github.com/dotnet/BenchmarkDotNet/issues/487) Please consider using 'µs' instead of 'us'
-* [#551](https://github.com/dotnet/BenchmarkDotNet/issues/551) List of structs and OutOfMemoryException
-* [#583](https://github.com/dotnet/BenchmarkDotNet/issues/583) BenchmarkDotNet.Samples refactoring (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#586](https://github.com/dotnet/BenchmarkDotNet/issues/586) IParam interface improvement (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#638](https://github.com/dotnet/BenchmarkDotNet/issues/638) Config with ryujit but it doesnt actually use ryujit? (assignee: [@morgan-kn](https://github.com/morgan-kn))
-* [#649](https://github.com/dotnet/BenchmarkDotNet/issues/649) Searching docs leads to 404 page (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#665](https://github.com/dotnet/BenchmarkDotNet/issues/665) Handle OutOfMemoryException more gracefully (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#671](https://github.com/dotnet/BenchmarkDotNet/issues/671) Why does BenchmarkRunner generate an isolated project per each benchmark method/job/params? (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#698](https://github.com/dotnet/BenchmarkDotNet/issues/698) Port to .NET Standard 2.0, drop .NET Core 1.1 support (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#699](https://github.com/dotnet/BenchmarkDotNet/issues/699) Generate one executable per runtime settings (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#700](https://github.com/dotnet/BenchmarkDotNet/issues/700) Improve local CoreCLR support (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#701](https://github.com/dotnet/BenchmarkDotNet/issues/701) Extend exported json file with FullName using xunit naming convention for integration purpose (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#710](https://github.com/dotnet/BenchmarkDotNet/issues/710) Use DocFX as a documentation generator (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#712](https://github.com/dotnet/BenchmarkDotNet/issues/712) [Params] with arrays as params throws System.Reflection.TargetInvocationException (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#713](https://github.com/dotnet/BenchmarkDotNet/issues/713) How to specify the invocation/launch count per type when using Config for multiple runtimes? (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#718](https://github.com/dotnet/BenchmarkDotNet/issues/718) CoreRT support (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#719](https://github.com/dotnet/BenchmarkDotNet/issues/719) If fail to build in Parallel due to file access issues, try to build sequentially (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#720](https://github.com/dotnet/BenchmarkDotNet/issues/720) Add SummaryOrderPolicy.Declared
-* [#724](https://github.com/dotnet/BenchmarkDotNet/issues/724) Allocated Memory results are not scaled with OperationPerInvoke (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#726](https://github.com/dotnet/BenchmarkDotNet/issues/726) Improve building guideline
-* [#729](https://github.com/dotnet/BenchmarkDotNet/issues/729) Handle Ctrl+C/Break (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#730](https://github.com/dotnet/BenchmarkDotNet/issues/730) IterationSetup is not running before each benchmark invocation (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#733](https://github.com/dotnet/BenchmarkDotNet/issues/733) IOException when running in OneDrive Folder (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#734](https://github.com/dotnet/BenchmarkDotNet/issues/734) Handle missing Mono runtime more gracefully (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#736](https://github.com/dotnet/BenchmarkDotNet/issues/736) Reduce number of initial pilot ops to 1 or make it configurable (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#738](https://github.com/dotnet/BenchmarkDotNet/issues/738) Params string containing characters like quotes is not being escaped properly (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#741](https://github.com/dotnet/BenchmarkDotNet/issues/741) Give users nice warning when T in generic benchmark is not public
-* [#745](https://github.com/dotnet/BenchmarkDotNet/issues/745) It should be possible to specify the generic arguments by using attributes
-* [#747](https://github.com/dotnet/BenchmarkDotNet/issues/747) Better docs that explain what is target/launch/iteration/invocation count (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#748](https://github.com/dotnet/BenchmarkDotNet/issues/748) Very long string params/arguments should be trimmed (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#749](https://github.com/dotnet/BenchmarkDotNet/issues/749) WithId(…) is ignored unless it’s at the end of the fluent calls chain. (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#763](https://github.com/dotnet/BenchmarkDotNet/issues/763) Make MaxIterationCount configurable, keep current value as default (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#765](https://github.com/dotnet/BenchmarkDotNet/issues/765) Add .NET Core 2.2 support (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#769](https://github.com/dotnet/BenchmarkDotNet/issues/769) ArgumentsSource does not support Jagged Arrays (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#774](https://github.com/dotnet/BenchmarkDotNet/issues/774) Make it possible to use Span and other ByRefLike types with implicit cast operators as benchmark argument (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#778](https://github.com/dotnet/BenchmarkDotNet/issues/778) CS0104: 'Job' is an ambiguous reference between 'BenchmarkDotNet.Jobs.Job' and 'Nest.Job' (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#779](https://github.com/dotnet/BenchmarkDotNet/issues/779) StackOnlyTypesWithImplicitCastOperatorAreSupportedAsArguments doesn't work on .NET Core 2.0 (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#787](https://github.com/dotnet/BenchmarkDotNet/issues/787) Grand renaming
-* [#793](https://github.com/dotnet/BenchmarkDotNet/issues/793) job=core for BenchmarkSwitcher (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#794](https://github.com/dotnet/BenchmarkDotNet/issues/794) Don't exclude allocation quantum side effects for .NET Core 2.0+ (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#795](https://github.com/dotnet/BenchmarkDotNet/issues/795) Broken BenchmarkSwitcher (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#797](https://github.com/dotnet/BenchmarkDotNet/issues/797) Allocated is not divided by OperationsPerInvoke (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#802](https://github.com/dotnet/BenchmarkDotNet/issues/802) AdaptiveHistogramBuilder.BuildWithFixedBinSize error when running benchmarks (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#804](https://github.com/dotnet/BenchmarkDotNet/issues/804) What is the point of BuildScriptFilePath ? (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#809](https://github.com/dotnet/BenchmarkDotNet/issues/809) Make it possible to configure Min and Max Warmup Iteration Count (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#810](https://github.com/dotnet/BenchmarkDotNet/issues/810) handle new *Ansi events to make Inlining and TailCall Diagnosers work with .NET Core 2.2 (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#811](https://github.com/dotnet/BenchmarkDotNet/issues/811) Question/Suggestion is GcStats forcing a GC.Collect when it doesn't need to (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#812](https://github.com/dotnet/BenchmarkDotNet/issues/812) When will the next release be available on NuGet? (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#813](https://github.com/dotnet/BenchmarkDotNet/issues/813) Problems with MemoryDiagnoserTests on Mono and .NET Core 2.0 (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#814](https://github.com/dotnet/BenchmarkDotNet/issues/814) For type arguments we should display simple, not-trimmed name (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#816](https://github.com/dotnet/BenchmarkDotNet/issues/816) BenchmarkDotNet.Autogenerated.csproj is not working on .NET Core 2.1 (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#817](https://github.com/dotnet/BenchmarkDotNet/issues/817) Autogenerated project is missing dependencies (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#818](https://github.com/dotnet/BenchmarkDotNet/issues/818) Arguments should be passed to asynchronous benchmarks (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#820](https://github.com/dotnet/BenchmarkDotNet/issues/820) set DOTNET_MULTILEVEL_LOOKUP=0 when custom dotnet cli path is provided (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#821](https://github.com/dotnet/BenchmarkDotNet/issues/821) ArgumentsAttribute causes an error when used with a string containing quotes (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#823](https://github.com/dotnet/BenchmarkDotNet/issues/823) Allow to set multiple Setup/Cleanup targets without string concatenation (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#827](https://github.com/dotnet/BenchmarkDotNet/issues/827) An easy way to run a specific benchmark class via command line (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#829](https://github.com/dotnet/BenchmarkDotNet/issues/829) Error message for wrong command line filter (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#832](https://github.com/dotnet/BenchmarkDotNet/issues/832) Compilation Error CS0119 with ParamsSource (assignee: [@adamsitnik](https://github.com/adamsitnik))
-
-## Merged pull requests (34)
-
-* [#693](https://github.com/dotnet/BenchmarkDotNet/pull/693) Jit runtime validation (by [@morgan-kn](https://github.com/morgan-kn))
-* [#717](https://github.com/dotnet/BenchmarkDotNet/pull/717) V11 (by [@adamsitnik](https://github.com/adamsitnik))
-* [#725](https://github.com/dotnet/BenchmarkDotNet/pull/725) Extend exported json file with FullName using xunit naming convention for integration purpose (by [@adamsitnik](https://github.com/adamsitnik))
-* [#727](https://github.com/dotnet/BenchmarkDotNet/pull/727) Building guideline improvement (by [@Rizzen](https://github.com/Rizzen))
-* [#728](https://github.com/dotnet/BenchmarkDotNet/pull/728) BenchmarkReport Exporter (by [@Rizzen](https://github.com/Rizzen))
-* [#735](https://github.com/dotnet/BenchmarkDotNet/pull/735) Unicode support (by [@Rizzen](https://github.com/Rizzen))
-* [#737](https://github.com/dotnet/BenchmarkDotNet/pull/737) Return value validator (by [@ltrzesniewski](https://github.com/ltrzesniewski))
-* [#740](https://github.com/dotnet/BenchmarkDotNet/pull/740) Follow up to #737 (by [@ltrzesniewski](https://github.com/ltrzesniewski))
-* [#742](https://github.com/dotnet/BenchmarkDotNet/pull/742) Add .NET Framework 4.7.2 version constant (by [@epeshk](https://github.com/epeshk))
-* [#743](https://github.com/dotnet/BenchmarkDotNet/pull/743) Improve .NET Framework version detection (by [@epeshk](https://github.com/epeshk))
-* [#744](https://github.com/dotnet/BenchmarkDotNet/pull/744) BenchmarkClass Validator (by [@Rizzen](https://github.com/Rizzen))
-* [#746](https://github.com/dotnet/BenchmarkDotNet/pull/746) Addition to #743: use HasValue instead of casting (by [@epeshk](https://github.com/epeshk))
-* [#750](https://github.com/dotnet/BenchmarkDotNet/pull/750) Addition to #744: Using single variable in test instead of two (by [@Rizzen](https://github.com/Rizzen))
-* [#752](https://github.com/dotnet/BenchmarkDotNet/pull/752) Update HowItWorks.md (by [@Tornhoof](https://github.com/Tornhoof))
-* [#753](https://github.com/dotnet/BenchmarkDotNet/pull/753) Ability to pass multiple assemblies. (by [@paulness](https://github.com/paulness))
-* [#754](https://github.com/dotnet/BenchmarkDotNet/pull/754) generate IParams for users in smart way (by [@adamsitnik](https://github.com/adamsitnik))
-* [#757](https://github.com/dotnet/BenchmarkDotNet/pull/757) Add SummaryOrderPolicy.Defined to return benchmarks as instantiated (by [@afmorris](https://github.com/afmorris))
-* [#758](https://github.com/dotnet/BenchmarkDotNet/pull/758) Generic Benchmark Attribute (by [@Rizzen](https://github.com/Rizzen))
-* [#760](https://github.com/dotnet/BenchmarkDotNet/pull/760) don't execute long operations more than once per iteration (by [@adamsitnik](https://github.com/adamsitnik))
-* [#761](https://github.com/dotnet/BenchmarkDotNet/pull/761) stop the ETW session on Ctrl+C + restore console colors ;), fixes #729 (by [@adamsitnik](https://github.com/adamsitnik))
-* [#764](https://github.com/dotnet/BenchmarkDotNet/pull/764) if IterationSetup is provided, and InvocationCount and UnrollFactor are not, run benchmark once per iteration to avoid user confusion (by [@adamsitnik](https://github.com/adamsitnik))
-* [#766](https://github.com/dotnet/BenchmarkDotNet/pull/766) Introduce OutlierMode (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#771](https://github.com/dotnet/BenchmarkDotNet/pull/771) have two main actions: with unroll and without, for no unroll icrease the step by 1 in pilot (not *2) (by [@adamsitnik](https://github.com/adamsitnik))
-* [#781](https://github.com/dotnet/BenchmarkDotNet/pull/781) Initial DocFX support, fixes #710 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#783](https://github.com/dotnet/BenchmarkDotNet/pull/783) BenchmarkDotNet.Samples refactoring, fixes #583 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#785](https://github.com/dotnet/BenchmarkDotNet/pull/785) Improve filtering from console args (by [@adamsitnik](https://github.com/adamsitnik))
-* [#789](https://github.com/dotnet/BenchmarkDotNet/pull/789) docs: add changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#790](https://github.com/dotnet/BenchmarkDotNet/pull/790) add link to inprocesstoolchain (by [@IanKemp](https://github.com/IanKemp))
-* [#796](https://github.com/dotnet/BenchmarkDotNet/pull/796) docs: multiversion combobox (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#799](https://github.com/dotnet/BenchmarkDotNet/pull/799) Cpu info improvement (by [@Rizzen](https://github.com/Rizzen))
-* [#800](https://github.com/dotnet/BenchmarkDotNet/pull/800) job Mutators (by [@adamsitnik](https://github.com/adamsitnik))
-* [#824](https://github.com/dotnet/BenchmarkDotNet/pull/824) Use 3rd party lib for console args parsing + support globs for filtering (by [@adamsitnik](https://github.com/adamsitnik))
-* [#830](https://github.com/dotnet/BenchmarkDotNet/pull/830) Read StandardOutput in a smart way to avoid infinite loops (by [@houseofcat](https://github.com/houseofcat))
-* [#833](https://github.com/dotnet/BenchmarkDotNet/pull/833) initial release notes (by [@adamsitnik](https://github.com/adamsitnik))
-
-## Commits (214)
-
-* [defa7e](https://github.com/dotnet/BenchmarkDotNet/commit/defa7ee762a6a6834192c98abf55b43562a1635a) port to .NET Standard 2.0 (by [@adamsitnik](https://github.com/adamsitnik))
-* [626b03](https://github.com/dotnet/BenchmarkDotNet/commit/626b03f304e2f50670f0d7006b90546b754af00d) keep .NET 4.6 in case somebody is on full framework, but not using .NET Standard (by [@adamsitnik](https://github.com/adamsitnik))
-* [ae4e22](https://github.com/dotnet/BenchmarkDotNet/commit/ae4e22fedaa0ec2a8c074303e59c30b6a46aeff8) merge BenchmarkDotNet.Toolchains.Roslyn into BenchmarkDotNet.Core (by [@adamsitnik](https://github.com/adamsitnik))
-* [260704](https://github.com/dotnet/BenchmarkDotNet/commit/26070478849da25012586737357126d9996e53ad) update TraceEvent, port BenchmarkDotNet.Diagnostics.Windows to .NET Standard,... (by [@adamsitnik](https://github.com/adamsitnik))
-* [324973](https://github.com/dotnet/BenchmarkDotNet/commit/324973547c679ff30e52ae40ab449144e93d4979) remove .NET Core 1.1 support, update tests (by [@adamsitnik](https://github.com/adamsitnik))
-* [64d732](https://github.com/dotnet/BenchmarkDotNet/commit/64d732842439a4cee1d0af7672e78e89d60ec4e7) get it working (by [@adamsitnik](https://github.com/adamsitnik))
-* [54b829](https://github.com/dotnet/BenchmarkDotNet/commit/54b829bb15de8211b414ad8eb2ca45c2b63fe2f1) remove .NET Core 1.1 from the CI jobs (by [@adamsitnik](https://github.com/adamsitnik))
-* [ebf3d9](https://github.com/dotnet/BenchmarkDotNet/commit/ebf3d9e17c4755fed79b6da4450a0aafeaf97f9e) ups ;) (by [@adamsitnik](https://github.com/adamsitnik))
-* [42d9ae](https://github.com/dotnet/BenchmarkDotNet/commit/42d9ae62ae9255e424134a6f4301e0fa4fbead6b) Merge branch 'master' into annotations (by [@adamsitnik](https://github.com/adamsitnik))
-* [bc9975](https://github.com/dotnet/BenchmarkDotNet/commit/bc9975be5e94c402fa56a592a18492ebafa7541e) cleanup (by [@adamsitnik](https://github.com/adamsitnik))
-* [96dd4f](https://github.com/dotnet/BenchmarkDotNet/commit/96dd4fe5c76a0e253094c62aa8404919a5af55fa) merge BenchmarkDotNet and BenchmarkDotNet.Core (by [@adamsitnik](https://github.com/adamsitnik))
-* [2dc21b](https://github.com/dotnet/BenchmarkDotNet/commit/2dc21b6409aa6d95e1b2e40b1d9bccebf9a5d8d8) group the benchmarks by runtime settings into partitions, #699 (by [@adamsitnik](https://github.com/adamsitnik))
-* [fbb283](https://github.com/dotnet/BenchmarkDotNet/commit/fbb28311aff3e65124cc29105f7ba5fa7d0ff539) generate one .cs with all types inside, #699 (by [@adamsitnik](https://github.com/adamsitnik))
-* [334af2](https://github.com/dotnet/BenchmarkDotNet/commit/334af27a247032665da029faa97be37583d9f16c) build single exe, #699 (by [@adamsitnik](https://github.com/adamsitnik))
-* [b958a1](https://github.com/dotnet/BenchmarkDotNet/commit/b958a1bf76a44379e0e69059ea291708e637d2c0) run selected type from all types in exe #699 (by [@adamsitnik](https://github.com/adamsitnik))
-* [4f5714](https://github.com/dotnet/BenchmarkDotNet/commit/4f5714cd51bd0c44087980ac430e57183ebf356e) polishing the code, #699 (by [@adamsitnik](https://github.com/adamsitnik))
-* [0c26a4](https://github.com/dotnet/BenchmarkDotNet/commit/0c26a4b0939c6a2356065f6dae3bbdc13d02563b) reverting some magic .sln change which has most probably broken the Travis bu... (by [@adamsitnik](https://github.com/adamsitnik))
-* [c8a368](https://github.com/dotnet/BenchmarkDotNet/commit/c8a368a4c2aedc013f7271a1d72c79abcc1ba724) restore to a dedicated temp folder, rebuild only bare minumum, store everythi... (by [@adamsitnik](https://github.com/adamsitnik))
-* [bd04bd](https://github.com/dotnet/BenchmarkDotNet/commit/bd04bdb655185e3278f01edb8c1ea0008bea88bf) better debugging experience (#699): when building only 1 thing at a time, pri... (by [@adamsitnik](https://github.com/adamsitnik))
-* [fcf691](https://github.com/dotnet/BenchmarkDotNet/commit/fcf69195b8e9be3a3777d14955ff581eaf1f31d4) Improved local CoreCLR/CoreFX support, tested on all OSes #700, #702 (by [@adamsitnik](https://github.com/adamsitnik))
-* [7fbd6c](https://github.com/dotnet/BenchmarkDotNet/commit/7fbd6c84011a3b02dbe93cc4c24fc8ff154e6924) allow the users to define an extra nuget feed, don't force clear tag for loca... (by [@adamsitnik](https://github.com/adamsitnik))
-* [ad0fc8](https://github.com/dotnet/BenchmarkDotNet/commit/ad0fc82441dde79085e974c3be2fb44ae2b9d7f6) Merge branch 'master' into v11 (by [@adamsitnik](https://github.com/adamsitnik))
-* [8070e4](https://github.com/dotnet/BenchmarkDotNet/commit/8070e4b4b1fc3e9f26fbe3aa32e18d0d047bd58a) Merge remote-tracking branch 'origin/master' into v11 (by [@adamsitnik](https://github.com/adamsitnik))
-* [0cccba](https://github.com/dotnet/BenchmarkDotNet/commit/0cccba1c5761b07f06332a8a945997c92207106d) post code review fixes, part of #175 (by [@adamsitnik](https://github.com/adamsitnik))
-* [4acc15](https://github.com/dotnet/BenchmarkDotNet/commit/4acc151e736806a5080527d33fbff0f8b0989285) new Runtime and Toolchain for CoreRT, #718 (by [@adamsitnik](https://github.com/adamsitnik))
-* [657f05](https://github.com/dotnet/BenchmarkDotNet/commit/657f0535134879d7d16da633c80681828ec615f9) don't use Expressions in Engine to avoid .NET Native compiler errors, #718 (by [@adamsitnik](https://github.com/adamsitnik))
-* [8c93cf](https://github.com/dotnet/BenchmarkDotNet/commit/8c93cf61dccc59986ae2ecf40cfce1ce434f6c07) the .NET Native compiler complained about some dependencies from referenced p... (by [@adamsitnik](https://github.com/adamsitnik))
-* [c8ba5c](https://github.com/dotnet/BenchmarkDotNet/commit/c8ba5ce1e5cfed11d0be4f1285b52e261f8dbee4) If fail to build in Parallel due to file access issues, try to build sequenti... (by [@adamsitnik](https://github.com/adamsitnik))
-* [7173f7](https://github.com/dotnet/BenchmarkDotNet/commit/7173f7de21de269193baf624d04cb5504cc5a298) CoreRT does not support reflection yet, so we need to target .NET Core 2.1 to... (by [@adamsitnik](https://github.com/adamsitnik))
-* [889270](https://github.com/dotnet/BenchmarkDotNet/commit/88927076bb80740747581d0d75a8db9f92ec6b8c) trying to install Clang 3.9 for CoreRT tests purpose, #718 (by [@adamsitnik](https://github.com/adamsitnik))
-* [967167](https://github.com/dotnet/BenchmarkDotNet/commit/96716725204a75870a2f2692887db985ee8d2a3a) code review fixes, #718 (by [@adamsitnik](https://github.com/adamsitnik))
-* [94863a](https://github.com/dotnet/BenchmarkDotNet/commit/94863ab4d024eca04d061423e5aad498feff386b) Merge pull request #717 from dotnet/v11 (by [@adamsitnik](https://github.com/adamsitnik))
-* [448752](https://github.com/dotnet/BenchmarkDotNet/commit/448752b0f89c5bb5c2e9cc4b55442d380b3ef377) Improved docs for Disassembly Diagnoser (by [@adamsitnik](https://github.com/adamsitnik))
-* [600e5f](https://github.com/dotnet/BenchmarkDotNet/commit/600e5fa81bd8e7a1d32a60b2bea830e1f46106eb) add FromAssemblyAndTypes method to make it possible to auto-detect all benchm... (by [@adamsitnik](https://github.com/adamsitnik))
-* [289292](https://github.com/dotnet/BenchmarkDotNet/commit/28929242608031896aec9ec931322a688ab98ef2) Allocated Memory must be scaled with OperationPerInvoke, fixes #724 (by [@adamsitnik](https://github.com/adamsitnik))
-* [1aa414](https://github.com/dotnet/BenchmarkDotNet/commit/1aa4148442177994b9b0e6b440b5b0f042f1f515) Actual Building Guide (by [@Rizzen](https://github.com/Rizzen))
-* [cfd9fa](https://github.com/dotnet/BenchmarkDotNet/commit/cfd9fad78ae1f6fb09a74d5357bb0e5bc39a58fb) Merge pull request #727 from Rizzen/master (by [@adamsitnik](https://github.com/adamsitnik))
-* [7cfe09](https://github.com/dotnet/BenchmarkDotNet/commit/7cfe09dda62a2a31f5575157667bf9ffb3a4e972) Created Exporter and moved logic into (by [@Rizzen](https://github.com/Rizzen))
-* [b9ff75](https://github.com/dotnet/BenchmarkDotNet/commit/b9ff75c29168f5e1d4af084b65363d22c935fc6a) Merge pull request #728 from Rizzen/BenchmarkReportExporter (by [@adamsitnik](https://github.com/adamsitnik))
-* [adea8f](https://github.com/dotnet/BenchmarkDotNet/commit/adea8f15aea25fd5f293e52ab02c7749d1d36792) support by ref Arguments (by [@adamsitnik](https://github.com/adamsitnik))
-* [0ecd7e](https://github.com/dotnet/BenchmarkDotNet/commit/0ecd7e034d29a4accb76766e297c29167d9b11ce) ignore auto-generated files cleanup errors, #733 (by [@adamsitnik](https://github.com/adamsitnik))
-* [cf5cd6](https://github.com/dotnet/BenchmarkDotNet/commit/cf5cd6fb8969e66e253c7b618bec9ff12ccc2413) Handle missing Mono runtime more gracefully, fixes #734 (by [@adamsitnik](https://github.com/adamsitnik))
-* [49495f](https://github.com/dotnet/BenchmarkDotNet/commit/49495fafb183d02828b7059e9aaa04963e3a1211) Remove unused usings (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [160516](https://github.com/dotnet/BenchmarkDotNet/commit/160516e1eef1c5eb0acd6db5d8e81ef71cf6fd98) Return value validator (#737), fixes #136 (by [@ltrzesniewski](https://github.com/ltrzesniewski))
-* [396f0a](https://github.com/dotnet/BenchmarkDotNet/commit/396f0ac43820e42d196f43e6298a726e2767f0f3) Follow up to #737 (#740) (by [@ltrzesniewski](https://github.com/ltrzesniewski))
-* [9dc4e8](https://github.com/dotnet/BenchmarkDotNet/commit/9dc4e80d5c5d79b17069a2b9f496b9575e255b5f) Add .NET Framework 4.7.2 release number constant to GetCurrentVersionBasedOnW... (by [@epeshk](https://github.com/epeshk))
-* [06ff2d](https://github.com/dotnet/BenchmarkDotNet/commit/06ff2dc690dd8c15c829deb83ecffafa4f5c4295) Update link to manual with .NET Framework version constants (by [@epeshk](https://github.com/epeshk))
-* [f7d9ac](https://github.com/dotnet/BenchmarkDotNet/commit/f7d9acada737fac8ca17755545737d0afcc4aa80) Don't check Reference Assemblies folder existence for .NET Framework version ... (by [@epeshk](https://github.com/epeshk))
-* [ebc1f6](https://github.com/dotnet/BenchmarkDotNet/commit/ebc1f6a133324c5c97f63a9a54c8bc033bf32628) Remove hardcoded Program Files directory location (by [@epeshk](https://github.com/epeshk))
-* [490304](https://github.com/dotnet/BenchmarkDotNet/commit/4903049bb47f50c93a10480962bb37418dcda006) Refactor framework version determining, extract logic from CsProjClassicNetTo... (by [@epeshk](https://github.com/epeshk))
-* [cbea7e](https://github.com/dotnet/BenchmarkDotNet/commit/cbea7eddc2349aeafbb2df2c912cd8ad00f8f19c) Fix Program Files path on x86 systems (by [@epeshk](https://github.com/epeshk))
-* [8071c8](https://github.com/dotnet/BenchmarkDotNet/commit/8071c8220afd9044d3daa1ba5566e74c2aa2de63) ProgramFilesX86DirectoryPath field (by [@epeshk](https://github.com/epeshk))
-* [f1d726](https://github.com/dotnet/BenchmarkDotNet/commit/f1d7268642dc9f1dc84b31d36759009fe6b2f9ef) Merge pull request #743 from epeshk/frameworkVersion (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [a36442](https://github.com/dotnet/BenchmarkDotNet/commit/a364424f6deafa06d58f4acfb6806792298262d3) use HasValue instead of casting (by [@epeshk](https://github.com/epeshk))
-* [c7efcc](https://github.com/dotnet/BenchmarkDotNet/commit/c7efcc48b5ff40e48ad1d3d389d7f48e35fec2c7) Merge pull request #746 from epeshk/frameworkVersion (by [@adamsitnik](https://github.com/adamsitnik))
-* [58f704](https://github.com/dotnet/BenchmarkDotNet/commit/58f704f78bd09d65a8328123ec93e99a2d58eec4) Give users nice warning when T in generic benchmark is not public, fixes #741 (by [@Rizzen](https://github.com/Rizzen))
-* [66f958](https://github.com/dotnet/BenchmarkDotNet/commit/66f958c10f3d35c3875b118aed0239ffcc39f3bc) when dotnet build --no-restore fails, try to run with restore (by [@adamsitnik](https://github.com/adamsitnik))
-* [52067c](https://github.com/dotnet/BenchmarkDotNet/commit/52067c928cbc130e741ac74e701e3b0df7d7a527) custom job Id should be preserved, fixes #749 (by [@adamsitnik](https://github.com/adamsitnik))
-* [24ec6e](https://github.com/dotnet/BenchmarkDotNet/commit/24ec6e71015b13a3589dd0300847857f6302f08b) Very long string params/arguments should be trimmed, fixes #748 (by [@adamsitnik](https://github.com/adamsitnik))
-* [b2e5b6](https://github.com/dotnet/BenchmarkDotNet/commit/b2e5b6114af64a39e70071be93d7c97cb55c3dd1) Params string containing characters like quotes is must be escaped properly, ... (by [@adamsitnik](https://github.com/adamsitnik))
-* [10865c](https://github.com/dotnet/BenchmarkDotNet/commit/10865c9c501655fc5facf5247ceb4c6566929678) Better docs that explain what is target/launch/iteration/invocation count by ... (by [@adamsitnik](https://github.com/adamsitnik))
-* [32ed86](https://github.com/dotnet/BenchmarkDotNet/commit/32ed86f69a0cac89e6b8e0055bcd55c64e1beabc) Addition to #744: Using single variable instead of two (by [@Rizzen](https://github.com/Rizzen))
-* [f2a71f](https://github.com/dotnet/BenchmarkDotNet/commit/f2a71f25a55f9639fa6ef72054e6484dafab4e54) Merge pull request #750 from Rizzen/744_addition (by [@adamsitnik](https://github.com/adamsitnik))
-* [eabfdd](https://github.com/dotnet/BenchmarkDotNet/commit/eabfdde0a390dac37839e0879e7e6d598bb0d143) Update HowItWorks.md (by [@Tornhoof](https://github.com/Tornhoof))
-* [8fc754](https://github.com/dotnet/BenchmarkDotNet/commit/8fc754368d8e184517c345eb23304fd1df71baed) Merge pull request #752 from Tornhoof/patch-1 (by [@adamsitnik](https://github.com/adamsitnik))
-* [2d79b6](https://github.com/dotnet/BenchmarkDotNet/commit/2d79b681bec4adb7633fd128d72a36a6eab83cb5) Ability to pass multiple assemblies. (by [@paulness](https://github.com/paulness))
-* [ba07b0](https://github.com/dotnet/BenchmarkDotNet/commit/ba07b0133abd804cf421de5ac401d05e96efe865) Merge pull request #753 from paulness/feature-allow-multiple-assemblies-to-be... (by [@adamsitnik](https://github.com/adamsitnik))
-* [d1b037](https://github.com/dotnet/BenchmarkDotNet/commit/d1b037f19f1e48c004e5438f1028c081aff1d723) generate IParams for users in smart way (by [@adamsitnik](https://github.com/adamsitnik))
-* [4665ec](https://github.com/dotnet/BenchmarkDotNet/commit/4665ec5714075f4f25535deaa606f52a76fa4921) Merge pull request #754 from dotnet/noIParam (by [@adamsitnik](https://github.com/adamsitnik))
-* [02c7c0](https://github.com/dotnet/BenchmarkDotNet/commit/02c7c0fc27f3b8ee405bdcb09785f48a9f63741f) Generic Benchmark Attribute (#758), fixes #745 (by [@Rizzen](https://github.com/Rizzen))
-* [7caf28](https://github.com/dotnet/BenchmarkDotNet/commit/7caf28335d44b6643340c88112b172376033fa13) Add SummaryOrderPolicy.Defined to return benchmarks as instantiated (#757), f... (by [@afmorris](https://github.com/afmorris))
-* [449002](https://github.com/dotnet/BenchmarkDotNet/commit/449002aaa4cef6200ce4a226dd549d50a4a9fb93) renamed Defined to Declared to keep consistency, renamed GenericBenchmark to ... (by [@adamsitnik](https://github.com/adamsitnik))
-* [8855a2](https://github.com/dotnet/BenchmarkDotNet/commit/8855a2c3c25e5fbdc2a5f878393d5f250692dbfb) Jit runtime validation (#693) (by [@morgan-kn](https://github.com/morgan-kn))
-* [41614b](https://github.com/dotnet/BenchmarkDotNet/commit/41614b5bea443445f472f63cdb06bdde982455e9) stop the ETW session on Ctrl+C + restore console colors ;), fixes #729 (#761) (by [@adamsitnik](https://github.com/adamsitnik))
-* [b0c251](https://github.com/dotnet/BenchmarkDotNet/commit/b0c25187f45c6803d829406e4a62c304510a9452) Make MaxIterationCount configurable, keep current value as default, fixes #763 (by [@adamsitnik](https://github.com/adamsitnik))
-* [6f693e](https://github.com/dotnet/BenchmarkDotNet/commit/6f693e0eae2e90cffc608f7a21a0a4b6cf4baf62) warn the users (once!) that if they run less than 15 iterations, the Multimod... (by [@adamsitnik](https://github.com/adamsitnik))
-* [a9664f](https://github.com/dotnet/BenchmarkDotNet/commit/a9664f46200aa564cfa1e6f89049a75172cccd34) don't execute long operations more than once per iteration (#760), fixes #736 (by [@adamsitnik](https://github.com/adamsitnik))
-* [7e8448](https://github.com/dotnet/BenchmarkDotNet/commit/7e84482ac1db48d5b2b536747ce335d84da11e04) if IterationSetup is provided, and InvocationCount and UnrollFactor are not, ... (by [@adamsitnik](https://github.com/adamsitnik))
-* [a40c75](https://github.com/dotnet/BenchmarkDotNet/commit/a40c752055a46d11d2245380ed2141cb52fc04e7) explain the users why they did hit OOM, fixes #665, #368, #551 (by [@adamsitnik](https://github.com/adamsitnik))
-* [e66bb0](https://github.com/dotnet/BenchmarkDotNet/commit/e66bb0fcab515d545239159a9766b2c43d3d36a3) arrays can be arguments and params, fixes #712 (by [@adamsitnik](https://github.com/adamsitnik))
-* [94b83e](https://github.com/dotnet/BenchmarkDotNet/commit/94b83ecb30d47376d7d56e0bf689ba235b94e715) don't call IterationSetup and Cleanup for Idle, fixes #464 (by [@adamsitnik](https://github.com/adamsitnik))
-* [90f9ca](https://github.com/dotnet/BenchmarkDotNet/commit/90f9ca6f0a07e6c4d05afbbcf66bc9a84ffc1280) Add .NET Core 2.2 support, fixes #765 (by [@adamsitnik](https://github.com/adamsitnik))
-* [132048](https://github.com/dotnet/BenchmarkDotNet/commit/13204880709cf4bebc66743c0da029d9542a1f8a) Better mValue formatting in MultimodalDistributionAnalyzer (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5f08c2](https://github.com/dotnet/BenchmarkDotNet/commit/5f08c2ea388cdd1a86646da2b1c474b7381c191f) Merge pull request #764 from dotnet/iterationSetupRunOnce (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [2b5dde](https://github.com/dotnet/BenchmarkDotNet/commit/2b5dde06a19a6c14a1835f8de4008e1157cb2f87) Introduce OutlierMode (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [226716](https://github.com/dotnet/BenchmarkDotNet/commit/22671619cab0d8f69f88b8e7e3dd44b5fbe7fd52) OutliersAnalyserTests (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [cabef0](https://github.com/dotnet/BenchmarkDotNet/commit/cabef06f94f7b6117c2256da2e825c648ea6483a) support Jagged Arrays for ArgumentsSource, fixes #769 (by [@adamsitnik](https://github.com/adamsitnik))
-* [808a9d](https://github.com/dotnet/BenchmarkDotNet/commit/808a9d78ee8c7c8d752e346c9445beffe88e17fd) support generic by ref arguments with an ugly hack due to reflection limitati... (by [@adamsitnik](https://github.com/adamsitnik))
-* [ea9f70](https://github.com/dotnet/BenchmarkDotNet/commit/ea9f703f5944bdd354c1f5e95b0ec7b0f4546468) remove the ugly hack (by [@adamsitnik](https://github.com/adamsitnik))
-* [cb4291](https://github.com/dotnet/BenchmarkDotNet/commit/cb4291f8e9f167a4f09c4beefd2f06246bfa9b64) make it possible to use arrays of types with no public parameterless ctor (li... (by [@adamsitnik](https://github.com/adamsitnik))
-* [272e42](https://github.com/dotnet/BenchmarkDotNet/commit/272e424698cb070edfc4a0bea58e1bead6f73e54) diassembly diagnoser: handle case where two different methods have same meta... (by [@adamsitnik](https://github.com/adamsitnik))
-* [ea16d1](https://github.com/dotnet/BenchmarkDotNet/commit/ea16d1f7467a7551a74d74106c0ebe70bfc7be53) update preview dependencies to 4.5.0 (by [@adamsitnik](https://github.com/adamsitnik))
-* [97ddd6](https://github.com/dotnet/BenchmarkDotNet/commit/97ddd6e997f923c44630adca262ffa1d8e6fc71f) Make it possible to use Span as benchmark argumen, fixes #774 (by [@adamsitnik](https://github.com/adamsitnik))
-* [4863be](https://github.com/dotnet/BenchmarkDotNet/commit/4863bef93bf9f0e79e11f6c50a1bd9d59ae3ef65) more generic solution for #774 (by [@adamsitnik](https://github.com/adamsitnik))
-* [f63726](https://github.com/dotnet/BenchmarkDotNet/commit/f6372665ba0c2a14b6c1fafb60fbe49f8bf63ab2) update build to use rc1 (to fix the build) (by [@adamsitnik](https://github.com/adamsitnik))
-* [a38c70](https://github.com/dotnet/BenchmarkDotNet/commit/a38c706393c7bba2c06e67c6eb4eee23e7979d4c) make it possible to pass array(s) of reference types as arguments (by [@adamsitnik](https://github.com/adamsitnik))
-* [306adc](https://github.com/dotnet/BenchmarkDotNet/commit/306adc96f6040c33535cc959b41195d1b8ac2116) use full Job type name to avoid naming conflicts, fixes #778 (by [@adamsitnik](https://github.com/adamsitnik))
-* [e92c5b](https://github.com/dotnet/BenchmarkDotNet/commit/e92c5bf7b07e9f9f20c104a9e06c64d336b9cbea) use DOTNET_MULTILEVEL_LOOKUP and IgnoreCorLibraryDuplicatedTypes to fix the... (by [@adamsitnik](https://github.com/adamsitnik))
-* [4e9844](https://github.com/dotnet/BenchmarkDotNet/commit/4e98440b1d9f1ce7de47f0840c92b61f8ead3111) Trimming the argument values makes them actually shorter #748 cc @ahsonkhan (by [@adamsitnik](https://github.com/adamsitnik))
-* [846d80](https://github.com/dotnet/BenchmarkDotNet/commit/846d8043717cba43231d55e0006cee69b84f50d4) Merge branch 'master' of https://github.com/dotnet/BenchmarkDotNet (by [@adamsitnik](https://github.com/adamsitnik))
-* [3c3b47](https://github.com/dotnet/BenchmarkDotNet/commit/3c3b47fdba9d5e45e897358ca03cc937c2e59d20) have two main actions: with unroll and without, for no unroll icrease the ste... (by [@adamsitnik](https://github.com/adamsitnik))
-* [56f02c](https://github.com/dotnet/BenchmarkDotNet/commit/56f02c09a2a6503992b0bec9edebb8fa9e6e2654) use full names in the auto-generated code to avoid possible conflicts (I just... (by [@adamsitnik](https://github.com/adamsitnik))
-* [e75c44](https://github.com/dotnet/BenchmarkDotNet/commit/e75c44a03912894c4fee2171075c9d6215a517b9) Update documentations for WithOutlierMode (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [1840ae](https://github.com/dotnet/BenchmarkDotNet/commit/1840ae5d41ca1ad59e5dcaae9290b231b3e8b7cd) Merge pull request #766 from dotnet/outliers (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5ae4bc](https://github.com/dotnet/BenchmarkDotNet/commit/5ae4bccae56cc34b7cae68c2abfca2b31177cff9) Fixed BrandString support for Windows 10.0.17134 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [4d6dfe](https://github.com/dotnet/BenchmarkDotNet/commit/4d6dfe150d0e560ca354990a320fc48081a8b95d) BrandString support for macOS Mojave (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [426fbc](https://github.com/dotnet/BenchmarkDotNet/commit/426fbce5a0c7c40bfd68d1dffac6c2ab173e325b) Initial DocFX support, fixes #710 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [fe00d7](https://github.com/dotnet/BenchmarkDotNet/commit/fe00d74619f95cc8f546a00db099ddd98bccbddf) Merge pull request #781 from dotnet/docfx (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [f0c06e](https://github.com/dotnet/BenchmarkDotNet/commit/f0c06eb30c5efefe24e1731d02be727cc8cf543e) Allow to pass string as ReadOnlySpan only for .NET Core 2.1 where the i... (by [@adamsitnik](https://github.com/adamsitnik))
-* [bbe273](https://github.com/dotnet/BenchmarkDotNet/commit/bbe273ac5306ac088ffe2c6603959d5b54b4a1d6) make netcoreapp2.1 default for .NET Core 2.1 + expose few things which are re... (by [@adamsitnik](https://github.com/adamsitnik))
-* [bd22b3](https://github.com/dotnet/BenchmarkDotNet/commit/bd22b38cfdffc75a366e660638ba85d8902f0381) BenchmarkDotNet.Samples refactoring, fixes #583 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [149e5e](https://github.com/dotnet/BenchmarkDotNet/commit/149e5ec974109b3ad3ac90cdc7cbf92b3c475d01) Merge pull request #783 from dotnet/docfx-samples (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [237e36](https://github.com/dotnet/BenchmarkDotNet/commit/237e36676ee1cb7bbd80f8d8e02ebb6101f56cc3) Flat namespace for BenchmarkDotNet.Attributes (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [24d2fe](https://github.com/dotnet/BenchmarkDotNet/commit/24d2fe0d97a12a26c9e617fd689a0bdfa946f119) Remove obsolete namespaces in IntegrationTests (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [cb25a7](https://github.com/dotnet/BenchmarkDotNet/commit/cb25a7858bfe6c3ff68f6b23d81fc96fa0498c03) docs: Visual Studio-like style for code snippets (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [914922](https://github.com/dotnet/BenchmarkDotNet/commit/9149223fd0a981205e3588daf97aa74b6a7aab80) docs: add samples for baselines (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [159e85](https://github.com/dotnet/BenchmarkDotNet/commit/159e8509d1b534ee5753e24f5a12a882aac5d12c) docs: fix year in license (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [0b02d0](https://github.com/dotnet/BenchmarkDotNet/commit/0b02d0c023243665ec37d1297e4aa1578f0b5c2b) docs: add IntroEnvVars (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [4b0f38](https://github.com/dotnet/BenchmarkDotNet/commit/4b0f38362db5935d10f272133a7cef05ab876d5a) Unicode support (#735) (by [@Rizzen](https://github.com/Rizzen))
-* [971236](https://github.com/dotnet/BenchmarkDotNet/commit/971236566e913a28dc3ad7d1634f7fa0913e1098) Unicode support: cleanup (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [7c43da](https://github.com/dotnet/BenchmarkDotNet/commit/7c43da0a9a8f7f7de77a1af71b436094034214c3) CommonExtensions cleanup (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [04c0ad](https://github.com/dotnet/BenchmarkDotNet/commit/04c0ad14bdecf7e2c2076362b490b6ebe044fb97) Fix link to rplot.png in README.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [b16b83](https://github.com/dotnet/BenchmarkDotNet/commit/b16b83fa5437b637fbd230777f218f12cf771aae) docs: samples for setup and cleanup (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [c05ac6](https://github.com/dotnet/BenchmarkDotNet/commit/c05ac6630046c9b3223e2e2efaf7842c1ade94be) add link to inprocesstoolchain (#790) (by [@IanKemp](https://github.com/IanKemp))
-* [44ea0f](https://github.com/dotnet/BenchmarkDotNet/commit/44ea0f54ea6a9bfdc16efcfeb804a33dc60c5f09) docs: add changelog (#789) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [8a31aa](https://github.com/dotnet/BenchmarkDotNet/commit/8a31aa0664cac0d66d6ba76682d7f945d06211bc) docs: save changelog details for old versions in repo (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [edd0a3](https://github.com/dotnet/BenchmarkDotNet/commit/edd0a30660c96916bb1984eee1263e1fafba7d68) docs: customizing-runtime.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [edf7f6](https://github.com/dotnet/BenchmarkDotNet/commit/edf7f65d825ecd206b3dbec903a2492220dbb1e7) Improve filtering from console args (#785) (by [@adamsitnik](https://github.com/adamsitnik))
-* [d9e18d](https://github.com/dotnet/BenchmarkDotNet/commit/d9e18db5574637f440161b0b7a4e4e5ce874d796) a type can have no namespace (by [@adamsitnik](https://github.com/adamsitnik))
-* [4bbffe](https://github.com/dotnet/BenchmarkDotNet/commit/4bbffea4e85acd74622ea5ae176f7e8d470f89ed) docs: update docfx version (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [52e769](https://github.com/dotnet/BenchmarkDotNet/commit/52e76985773261f13cd4a92937e075f98cf9588b) Don't exclude allocation quantum side effects for .NET Core 2.0+, fixes #794 (by [@adamsitnik](https://github.com/adamsitnik))
-* [24f8da](https://github.com/dotnet/BenchmarkDotNet/commit/24f8da7755b81d5ffb5fb245840956d7bcde583d) Cake targets for DocFX (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [db0724](https://github.com/dotnet/BenchmarkDotNet/commit/db0724bdfa3bfb376b8fe2642181bafe656ef3ed) docs: add api/index.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [026c00](https://github.com/dotnet/BenchmarkDotNet/commit/026c00e5fb16f71cbd16843133fde720ba60780e) docs: statistics (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [ae5baf](https://github.com/dotnet/BenchmarkDotNet/commit/ae5baf6050c6cd8e87dd7788ba12374f9dfa4313) docs: misc fixes (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [fa5cf5](https://github.com/dotnet/BenchmarkDotNet/commit/fa5cf57dd79b1cc24367db0b40264969e1a2ae53) docs: multiversion combobox (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [a49cf9](https://github.com/dotnet/BenchmarkDotNet/commit/a49cf979aec1be98b7e12dfd90eed64c3f899112) docs: add full contributor list (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [803686](https://github.com/dotnet/BenchmarkDotNet/commit/8036869e32af7d05d328ad1973a1029c73fc20d4) always use FQDN to avoid any possible duplicates, #529 strikes back after a year (by [@adamsitnik](https://github.com/adamsitnik))
-* [315530](https://github.com/dotnet/BenchmarkDotNet/commit/3155305e890ee61fecf6a43c3878a7788f0f3814) make sure DisassemblyDiagnoser output is exported, fixes bug introduced in #785 (by [@adamsitnik](https://github.com/adamsitnik))
-* [167476](https://github.com/dotnet/BenchmarkDotNet/commit/1674762424b0ec8ccea8e571308074dbea3157aa) docs: improved diagnosers.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [b7f9aa](https://github.com/dotnet/BenchmarkDotNet/commit/b7f9aaac92866e0a2d132e88523c5bdf570407ae) docs: improved choosing-run-strategy (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5da534](https://github.com/dotnet/BenchmarkDotNet/commit/5da53425294ad8c7742cd85848cedf22211da378) remove MultimodalDistributionAnalyzer hint introduced in #763 (by [@adamsitnik](https://github.com/adamsitnik))
-* [376339](https://github.com/dotnet/BenchmarkDotNet/commit/376339bb76d4fb97ce64a04c1761b37c736ce245) Merge pull request #796 from dotnet/docs-versions (by [@adamsitnik](https://github.com/adamsitnik))
-* [57005f](https://github.com/dotnet/BenchmarkDotNet/commit/57005f05e7464ff5151ccdb81caef037dca6abac) Extend exported json file with FullName using xunit naming convention for int... (by [@adamsitnik](https://github.com/adamsitnik))
-* [9c0a2e](https://github.com/dotnet/BenchmarkDotNet/commit/9c0a2ece1976aade6e3818bdd67f87545583abd7) docs: improved exporters.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [22f553](https://github.com/dotnet/BenchmarkDotNet/commit/22f553af11b7dd9a91dcbe90d134b5d845502962) docs: better sample generation (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [734635](https://github.com/dotnet/BenchmarkDotNet/commit/734635050f6b042850495338a66a4f6cbdbc8e29) docs: improved columns.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [a82562](https://github.com/dotnet/BenchmarkDotNet/commit/a82562dc3ce3b4b1181c5213ce667aa37d7d8950) docs: improved configs.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [e7a458](https://github.com/dotnet/BenchmarkDotNet/commit/e7a458dc3ebe09aafe1cc8974b16e5bc616703af) docs: InProcess samples (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [602562](https://github.com/dotnet/BenchmarkDotNet/commit/602562dce89559892faab19857e25ec9604514d7) docs: imrpovded order-providers.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [8576c5](https://github.com/dotnet/BenchmarkDotNet/commit/8576c5f9ed2f87ad11c6cee74833b2e9eb5c4bbe) docs: fix the rest of WithoutDocs samples (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [13b44e](https://github.com/dotnet/BenchmarkDotNet/commit/13b44ec13cb7b35d4717369702496f7cdf7d3df9) docs: rename changelog-generator to _changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [9a9648](https://github.com/dotnet/BenchmarkDotNet/commit/9a9648c0be7830e2ad0d312bde85a9ef0a685753) docs: fix link to InProcessToolchain (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5716c1](https://github.com/dotnet/BenchmarkDotNet/commit/5716c1440223930e9677c36035886178c0722857) escape tabs and enters in the exported benchmark id (to keep it in sync with ... (by [@adamsitnik](https://github.com/adamsitnik))
-* [4be9bf](https://github.com/dotnet/BenchmarkDotNet/commit/4be9bf3f6ecb991c1d9f3910425519773d120830) MemoryDiagnoser handles IterationSetup and Cleanup since #606, removing old i... (by [@adamsitnik](https://github.com/adamsitnik))
-* [f92532](https://github.com/dotnet/BenchmarkDotNet/commit/f925321e3480ad53afdc6a53316a4775c041f306) add --job=core to command line arguments, fixes #793 (by [@adamsitnik](https://github.com/adamsitnik))
-* [1c656d](https://github.com/dotnet/BenchmarkDotNet/commit/1c656d104647b3c9c5ad6506b6560ee014aa6983) update the docs with the change in IterationSetup behavior, #764 (by [@adamsitnik](https://github.com/adamsitnik))
-* [6fd39b](https://github.com/dotnet/BenchmarkDotNet/commit/6fd39bdae1ad15d8f5deb69eeaa8c613c8951d81) job Mutators (#800)fixes #713 (by [@adamsitnik](https://github.com/adamsitnik))
-* [8954dc](https://github.com/dotnet/BenchmarkDotNet/commit/8954dc55be038054e6a45196a3555779d6bfb68f) Rename: OrderProvider -> Orderer (#787) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [7b47c6](https://github.com/dotnet/BenchmarkDotNet/commit/7b47c66f25786298179929c1205646bcdc1e838a) Rename: Benchmark -> BenchmarkCase (#787) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [cc6f1b](https://github.com/dotnet/BenchmarkDotNet/commit/cc6f1b617f4fdc5c4ca75bebfb30f7cea1e825be) Rename: Target -> Descriptor (#787) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [17bb68](https://github.com/dotnet/BenchmarkDotNet/commit/17bb6855727cf8e3df9398b567db446555ed4f25) Rename: EnvMode -> EnvironmentMode (#787) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [73a6cc](https://github.com/dotnet/BenchmarkDotNet/commit/73a6ccbc3cf1b1bfb9e5504fde91b522c4c8820d) Rename: Infrastructure.EnvironmentVariables -> Environment.EnvironmentVariabl... (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [6118f1](https://github.com/dotnet/BenchmarkDotNet/commit/6118f1b59c7a299d26566214b4ca84e4926bcf44) Huge IterationMode renaming (#787) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [035452](https://github.com/dotnet/BenchmarkDotNet/commit/0354528ad4cfbd01dfb09eee1f878d1f30e6f21f) Handle super narrow distributions in AdaptiveHistogramBuilder, fixes #802 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [b705b3](https://github.com/dotnet/BenchmarkDotNet/commit/b705b38501b4b884a1c6a64a1e108fe2c3bc027a) print Processor Affinity as a bitmask in the summary (by [@adamsitnik](https://github.com/adamsitnik))
-* [0db126](https://github.com/dotnet/BenchmarkDotNet/commit/0db12621e1b887e7487e169ca7baa897372b2f42) fix MacOs build where the default affinity is 0 or we can't read it for some ... (by [@adamsitnik](https://github.com/adamsitnik))
-* [5e6e33](https://github.com/dotnet/BenchmarkDotNet/commit/5e6e331b9fe1bbb5ef77c9bb025978e0dcf80aa4) make sure the characteristic names match the properties names + rename Target... (by [@adamsitnik](https://github.com/adamsitnik))
-* [f4cd0d](https://github.com/dotnet/BenchmarkDotNet/commit/f4cd0d27691c66c2d35a94c77beb5ef210ff3df5) Baseline improvements (#787) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [124a52](https://github.com/dotnet/BenchmarkDotNet/commit/124a52698a0aca21472ead029cf1f399e6af8c47) Fix tests (#787) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [e8bf99](https://github.com/dotnet/BenchmarkDotNet/commit/e8bf99272bc410601863bda338b57d0c46baad70) fix mac test, make sure IsMutator does not flow to applied job (by [@adamsitnik](https://github.com/adamsitnik))
-* [95750c](https://github.com/dotnet/BenchmarkDotNet/commit/95750c2734b966fd6db2124440f4a9cca61a4127) Make it possible to configure Min and Max Warmup Iteration Count, fixes #809 (by [@adamsitnik](https://github.com/adamsitnik))
-* [99e753](https://github.com/dotnet/BenchmarkDotNet/commit/99e75377d18e53327855635c75fee9ed404fd8e6) handle new *Ansi events to make Inlining and TailCall Diagnosers work with .N... (by [@adamsitnik](https://github.com/adamsitnik))
-* [62e75c](https://github.com/dotnet/BenchmarkDotNet/commit/62e75c104ff6490b0591a1b5ff40cc6c8d37f71a) docs: update articles/contributing/documentation (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [41c5f9](https://github.com/dotnet/BenchmarkDotNet/commit/41c5f9c6fc6f944faf3d389c0631ca31c428282a) Cake: update DocFX (2.36.2->2.37) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [e4b37c](https://github.com/dotnet/BenchmarkDotNet/commit/e4b37cdaad5e14cfbb08d5fb3fc538b1dcfe5f2f) Cake: update .NET Core SDK (2.1.300-rc1-008673->2.1.300) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [ad1645](https://github.com/dotnet/BenchmarkDotNet/commit/ad16450f101f5dc3ef8caf28359819565c7cf53f) Cpu info improvement (#799) (by [@Rizzen](https://github.com/Rizzen))
-* [61e95e](https://github.com/dotnet/BenchmarkDotNet/commit/61e95eea8ed945c2adad2455ec5fe3582d6aaba3) [Params] exported to json should be delimited by ", " #701 (by [@adamsitnik](https://github.com/adamsitnik))
-* [4cd1df](https://github.com/dotnet/BenchmarkDotNet/commit/4cd1df1c54ba2ad834658f63a2f811884b43446c) handle the types as arguments to match xunit naming convention for porting pu... (by [@adamsitnik](https://github.com/adamsitnik))
-* [ff6613](https://github.com/dotnet/BenchmarkDotNet/commit/ff6613bface0d94f3bcb194671937d0b4b013578) for type parameters we should display non-trimmed type name without namespace... (by [@adamsitnik](https://github.com/adamsitnik))
-* [89f195](https://github.com/dotnet/BenchmarkDotNet/commit/89f195745885c0f1703ab602e929af0565626f3f) explain how we measure GC stats in the docs, fixes #811 (by [@adamsitnik](https://github.com/adamsitnik))
-* [c7731c](https://github.com/dotnet/BenchmarkDotNet/commit/c7731c2dd662d7a5a6c85c2ccd07d0f24e833251) Arguments should be passed to asynchronous benchmarks, fixes #818 (by [@adamsitnik](https://github.com/adamsitnik))
-* [0f9c48](https://github.com/dotnet/BenchmarkDotNet/commit/0f9c48d3eac1cce3122bc53c7d6bd6c9331a1176) add info about Min/Max counts to docs (by [@adamsitnik](https://github.com/adamsitnik))
-* [33e568](https://github.com/dotnet/BenchmarkDotNet/commit/33e5686eb656d6b9e4c7ac54d791b62cbc9e2a9b) fix MemoryDiagnoserTests issues, fixes #813 (by [@adamsitnik](https://github.com/adamsitnik))
-* [844e95](https://github.com/dotnet/BenchmarkDotNet/commit/844e959e81c881fdcb7ac174e4c5c18f0e5ce804) set DOTNET_MULTILEVEL_LOOKUP=0 to get customDotNetCli path working, fixes #820 (by [@adamsitnik](https://github.com/adamsitnik))
-* [7e2d54](https://github.com/dotnet/BenchmarkDotNet/commit/7e2d54ed6f354869fc24f2e5506bd2791bbbb382) if iteration cleanup is provided, the benchmark should be executed once per i... (by [@adamsitnik](https://github.com/adamsitnik))
-* [2132d0](https://github.com/dotnet/BenchmarkDotNet/commit/2132d0b27b9438f57a02e956012b14e2bf9fe552) allow to set summary style in fluent way (by [@adamsitnik](https://github.com/adamsitnik))
-* [dfea69](https://github.com/dotnet/BenchmarkDotNet/commit/dfea69ac9d4ef364aa08815b6395a11e41c9e62d) allow to set multuple targets for attributes without string concatenation, fi... (by [@adamsitnik](https://github.com/adamsitnik))
-* [6267b2](https://github.com/dotnet/BenchmarkDotNet/commit/6267b27b2ba9eecac22295f0d4aa8f159f56b551) Use 3rd party lib for console args parsing + support globs for filtering (#824) (by [@adamsitnik](https://github.com/adamsitnik))
-* [9c269f](https://github.com/dotnet/BenchmarkDotNet/commit/9c269f4ac6ccff9603264667aeb23c5d6bbc7f2d) make sure the generic type arguments are displayed in the summary, not `1 (by [@adamsitnik](https://github.com/adamsitnik))
-* [c7d0b9](https://github.com/dotnet/BenchmarkDotNet/commit/c7d0b9dee49e28bb51e07cc9a0655f85ae299d3f) don't duplicate the jobs when parsing config (by [@adamsitnik](https://github.com/adamsitnik))
-* [d7825e](https://github.com/dotnet/BenchmarkDotNet/commit/d7825eac467a3b1b55d0e8bee69ac88277d0f772) show generic type name in a joined summary (by [@adamsitnik](https://github.com/adamsitnik))
-* [528c9c](https://github.com/dotnet/BenchmarkDotNet/commit/528c9c59cb6a0e0fa20b2f4bdcb9fdc578dfe75a) make sure the config parsing and job merging works as expected (by [@adamsitnik](https://github.com/adamsitnik))
-* [a7426e](https://github.com/dotnet/BenchmarkDotNet/commit/a7426e84fde075503f489fdf096a95f694f77b85) LLVM support in MonoDisassembler (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [c724e9](https://github.com/dotnet/BenchmarkDotNet/commit/c724e9487fa8a2987712adc42c59edd0e4357d1b) Fix typos (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [cdbb37](https://github.com/dotnet/BenchmarkDotNet/commit/cdbb3735dbcde445224017266e1fcb041810131c) allow to filter benchmarks by simple type name, fixes #827 (by [@adamsitnik](https://github.com/adamsitnik))
-* [eac833](https://github.com/dotnet/BenchmarkDotNet/commit/eac83367ebf1821a34f14e8477551719905a38fa) Read StandardOutput in a smart way to avoid infinite loops (#830), #828 (by [@houseofcat](https://github.com/houseofcat))
-* [a298c2](https://github.com/dotnet/BenchmarkDotNet/commit/a298c2ea0e7602e0312b4cbd2eff43f7f8d1e45b) Error message for wrong command line filter, fixes #829 (by [@adamsitnik](https://github.com/adamsitnik))
-* [a7ecda](https://github.com/dotnet/BenchmarkDotNet/commit/a7ecdae39aa476fc29a2129702284ae1d9c09a64) initial release notes (#833) (by [@adamsitnik](https://github.com/adamsitnik))
-* [36bf7c](https://github.com/dotnet/BenchmarkDotNet/commit/36bf7c4ee053134d0bfeaf5d757c12afa332f1c2) Rename: General -> Actual (#787) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [a1ec4b](https://github.com/dotnet/BenchmarkDotNet/commit/a1ec4be4baf7321d97cafa8ad003a79de5df26af) Add _changelog/details/v0.11.0.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [558cae](https://github.com/dotnet/BenchmarkDotNet/commit/558cae3d9b5558a16c28f08be2a72aebe7b73f0d) Improved docs for v0.11.0 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [e45f69](https://github.com/dotnet/BenchmarkDotNet/commit/e45f698429952316038500134894d2806737b81c) docs: update main.js (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [53e576](https://github.com/dotnet/BenchmarkDotNet/commit/53e5767f62b3da8e4a5e7672664129cc28c9165d) Update links to docs in README (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [3a8990](https://github.com/dotnet/BenchmarkDotNet/commit/3a89906e4c5ba34d09f2f1314f399719b0df6156) update links in docs/index.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5ad710](https://github.com/dotnet/BenchmarkDotNet/commit/5ad71014f9834d0397cb6faf8cbfb36e74ace341) Repair obsolete logo link (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [e38afb](https://github.com/dotnet/BenchmarkDotNet/commit/e38afb1c8e47c856f7bd15f90642a61b72a5a055) Cake: update DocFX (2.37->2.37.1) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5b8f91](https://github.com/dotnet/BenchmarkDotNet/commit/5b8f916be8dc783b35f11d5483cf67a6012dd0f8) docs: add analytics scripts in template (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [3ec8f7](https://github.com/dotnet/BenchmarkDotNet/commit/3ec8f7f92659535f850c1bfa2646c4c164091d5a) docs: add redirects to v0.10.14 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [a00bf6](https://github.com/dotnet/BenchmarkDotNet/commit/a00bf697fe9359b8bdcf5352811e62b1886de1d5) docs: update how-it-works (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [73980e](https://github.com/dotnet/BenchmarkDotNet/commit/73980ebcb8ed8fd93ea80f492e3e50f5e01dd559) docs: add redirect for index.htm (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [fad583](https://github.com/dotnet/BenchmarkDotNet/commit/fad583d8b78c1fdf9bb7b217422102c9b8246cd0) docs: update changelog for v0.11.0 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [74d552](https://github.com/dotnet/BenchmarkDotNet/commit/74d552a9273ff8dad05c6dceb0c5aadb3b089337) Update list of NuGet packages in changelog/footer/v0.11.0 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [74084f](https://github.com/dotnet/BenchmarkDotNet/commit/74084fe1580702e566783630147de9b41d2fc6c7) Set library version: 0.11.0 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Contributors (11)
-
-* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik))
-* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* Evgeny Peshkov ([@epeshk](https://github.com/epeshk))
-* Ian Kemp ([@IanKemp](https://github.com/IanKemp))
-* Irina Ananeva ([@morgan-kn](https://github.com/morgan-kn))
-* Lucas Trzesniewski ([@ltrzesniewski](https://github.com/ltrzesniewski))
-* Mark Tkachenko ([@Rizzen](https://github.com/Rizzen))
-* Paul Ness ([@paulness](https://github.com/paulness))
-* Stefan ([@Tornhoof](https://github.com/Tornhoof))
-* Tony Morris ([@afmorris](https://github.com/afmorris))
-* Tristan Hyams ([@houseofcat](https://github.com/houseofcat))
-
-Thank you very much!
-
diff --git a/docs/_changelog/details/v0.11.1.md b/docs/_changelog/details/v0.11.1.md
deleted file mode 100644
index da6570dbd7..0000000000
--- a/docs/_changelog/details/v0.11.1.md
+++ /dev/null
@@ -1,62 +0,0 @@
-## Milestone details
-
-In the [v0.11.1](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.11.1) scope,
-7 issues were resolved and 2 pull requests were merged.
-This release includes 29 commits by 4 contributors.
-
-## Resolved issues (7)
-
-* [#840](https://github.com/dotnet/BenchmarkDotNet/issues/840) ArgumentsSource doesn't work with System.RuntimeType (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#850](https://github.com/dotnet/BenchmarkDotNet/issues/850) Handle BigIntegers arguments properly (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#851](https://github.com/dotnet/BenchmarkDotNet/issues/851) Handle double special values like NaN etc (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#852](https://github.com/dotnet/BenchmarkDotNet/issues/852) BuildPlots script generates empty pictures (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#853](https://github.com/dotnet/BenchmarkDotNet/issues/853) ArgumentsSource containing IFormattable leads to Compile Exceptions (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#855](https://github.com/dotnet/BenchmarkDotNet/issues/855) Empty plot (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#857](https://github.com/dotnet/BenchmarkDotNet/issues/857) Improve user experience for working with local CoreFX builds (assignee: [@adamsitnik](https://github.com/adamsitnik))
-
-## Merged pull requests (2)
-
-* [#839](https://github.com/dotnet/BenchmarkDotNet/pull/839) Small Typo in changelog (by [@Tornhoof](https://github.com/Tornhoof))
-* [#854](https://github.com/dotnet/BenchmarkDotNet/pull/854) Exclude Directory.Build.props/targets from generated csproj files (by [@agocke](https://github.com/agocke))
-
-## Commits (29)
-
-* [c37aa8](https://github.com/dotnet/BenchmarkDotNet/commit/c37aa8680bc6fde2f3a0eb300ca2f2234dbbcf8d) Postrelease update of v0.11.0 changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [b7f7fc](https://github.com/dotnet/BenchmarkDotNet/commit/b7f7fcdb8a3ba0e5e32c4cbe5f65b5add8642e0b) Handle private types in GetCorrectCSharpTypeName, fixes #840 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [522158](https://github.com/dotnet/BenchmarkDotNet/commit/52215889370659058ff0ed9a70f018c41c527bb1) Handle private types in GetCorrectCSharpTypeName (part 2), fixes #840 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [64acde](https://github.com/dotnet/BenchmarkDotNet/commit/64acde9dbb1507a1423750888f74e9014a7f62a8) small typo (#839) (by [@Tornhoof](https://github.com/Tornhoof))
-* [521c22](https://github.com/dotnet/BenchmarkDotNet/commit/521c2289c5956bbd2a14eacac6303dfb557cb68a) Add travis_wait for build.sh (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [a8a0da](https://github.com/dotnet/BenchmarkDotNet/commit/a8a0da9a147b4dd7eab2320cea351ad8fdbb1f30) Update BenchmarkDotNet.sln.DotSettings (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [9ab58a](https://github.com/dotnet/BenchmarkDotNet/commit/9ab58a96f87eb2781a8bcc360bf88846d3985a05) Introduce BenchmarkDotNet.Samples.csproj.DotSettings (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [3ce9fe](https://github.com/dotnet/BenchmarkDotNet/commit/3ce9fe9e311b56a573e521c76ea9f6a4dfcdc298) BenchmarkDotNet.Samples Cleanup (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [a04a23](https://github.com/dotnet/BenchmarkDotNet/commit/a04a23aee9cf0df038083d2fad998097cb57d2de) Cleanup: spelling issues in BenchmarkDotNet (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [c37784](https://github.com/dotnet/BenchmarkDotNet/commit/c377844397375bd835358c2526672c6fb90497cb) Cleanup: code style issues in BenchmarkDotNet (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5f8452](https://github.com/dotnet/BenchmarkDotNet/commit/5f84526b97acb99ef13248d8762fcedfdcaa38ff) Cleanup: Redundancies in Code issues in BenchmarkDotNet (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [a76f43](https://github.com/dotnet/BenchmarkDotNet/commit/a76f438a81e3e0235a2e9b1249a5280038189689) Cleanup: Common Practices and Code Improvements in BenchmarkDotNet (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [2d0629](https://github.com/dotnet/BenchmarkDotNet/commit/2d062972eacb6f1106a7863036bf9512c3c3d0e6) Cleanup: Redundancies in Symbol Declarations Issues in BenchmarkDotNet (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5a7689](https://github.com/dotnet/BenchmarkDotNet/commit/5a76897b4d5c3501750bf266111706faf974cc7e) Cleanup: Constraints Violations Issues in BenchmarkDotNet (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [02df24](https://github.com/dotnet/BenchmarkDotNet/commit/02df24538062851041e933ac0fe511ad8db20e77) Cleanup: Language Usage Opportunities in BenchmarkDotNet (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [93ed39](https://github.com/dotnet/BenchmarkDotNet/commit/93ed395caee38c592de079d57e22644ebecd1bfd) Cleanup: Potential Code Quality Issues in BenchmarkDotNet (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [538f56](https://github.com/dotnet/BenchmarkDotNet/commit/538f568fc6d55ad05951f72a46049fcef6f27321) Cleanup: more issues in BenchmarkDotNet (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [559773](https://github.com/dotnet/BenchmarkDotNet/commit/559773646b56a0dbf9887a90ffad373a904d8bc5) Cleanup: more issues in BenchmarkDotNet (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [29471e](https://github.com/dotnet/BenchmarkDotNet/commit/29471e8a6a800bf389590b9ac76df6c1845b2f2f) add support for BigIntegers + include namespace of the arugments, fixes #850 (by [@adamsitnik](https://github.com/adamsitnik))
-* [2aff9f](https://github.com/dotnet/BenchmarkDotNet/commit/2aff9f3ac32dd06fe2ef029b0016935ad4f94ee7) Handle double and float special values like NaN, PositiveInfinity etc, fixes ... (by [@adamsitnik](https://github.com/adamsitnik))
-* [1a68ed](https://github.com/dotnet/BenchmarkDotNet/commit/1a68edb73c5db791f4ecc5dec0869545aa446b5c) properties of SummaryStyle must have public setter (by [@adamsitnik](https://github.com/adamsitnik))
-* [5cfb5b](https://github.com/dotnet/BenchmarkDotNet/commit/5cfb5b6650168af7f368062ca552fd125d739a5d) support DateTimes for [Arguments/Params Source], fixes #853 (by [@adamsitnik](https://github.com/adamsitnik))
-* [2be698](https://github.com/dotnet/BenchmarkDotNet/commit/2be698ba3893610c698ff6aa0f0a6f0aa8fbd669) Fix RPlots, fixes #852 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [7ee3cf](https://github.com/dotnet/BenchmarkDotNet/commit/7ee3cf3151def1cc302e02c73a4fcd1303da8b29) Exclude Directory.Build.props/targets from generated csproj files (by [@agocke](https://github.com/agocke))
-* [20e901](https://github.com/dotnet/BenchmarkDotNet/commit/20e901502756df4d96ee3d148c542a1b374af364) Merge pull request #854 from agocke/fix-csproj-template (by [@adamsitnik](https://github.com/adamsitnik))
-* [de152c](https://github.com/dotnet/BenchmarkDotNet/commit/de152c7acc71eddeaa304c846cc67e6a54ca7a0f) allow the users to run benchmarks with CoreRun, #857 (by [@adamsitnik](https://github.com/adamsitnik))
-* [f00ac0](https://github.com/dotnet/BenchmarkDotNet/commit/f00ac05c82cf0ca98a4adfca98049ea53fe8a092) Increase travis timeout (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [071e58](https://github.com/dotnet/BenchmarkDotNet/commit/071e58d882084dcc9196c9dd8065a5bd1101cdd5) docs: add changelog for v0.11.1 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [c5e586](https://github.com/dotnet/BenchmarkDotNet/commit/c5e58679dfb793165cc3ca66c761306228ac3b73) Set library version: 0.11.1 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Contributors (4)
-
-* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik))
-* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* Andy Gocke ([@agocke](https://github.com/agocke))
-* Stefan ([@Tornhoof](https://github.com/Tornhoof))
-
-Thank you very much!
-
diff --git a/docs/_changelog/details/v0.11.2.md b/docs/_changelog/details/v0.11.2.md
deleted file mode 100644
index ffe3e09ca7..0000000000
--- a/docs/_changelog/details/v0.11.2.md
+++ /dev/null
@@ -1,185 +0,0 @@
-## Milestone details
-
-In the [v0.11.2](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.11.2) scope,
-28 issues were resolved and 33 pull requests were merged.
-This release includes 84 commits by 20 contributors.
-
-## Resolved issues (28)
-
-* [#221](https://github.com/dotnet/BenchmarkDotNet/issues/221) Investigate why CanEnableServerGcMode test fails for Core on appveyor
-* [#290](https://github.com/dotnet/BenchmarkDotNet/issues/290) Question: Any official way to benchmark same method between different assembly versions?
-* [#447](https://github.com/dotnet/BenchmarkDotNet/issues/447) Implement ColoredLogger for LinqPad
-* [#521](https://github.com/dotnet/BenchmarkDotNet/issues/521) Support async Setup/Cleanup
-* [#544](https://github.com/dotnet/BenchmarkDotNet/issues/544) Diff view for disassembler output (assignee: [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#560](https://github.com/dotnet/BenchmarkDotNet/issues/560) Suggestion: markdown output for DisassemblyDiagnoser (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#601](https://github.com/dotnet/BenchmarkDotNet/issues/601) Surprising results
-* [#658](https://github.com/dotnet/BenchmarkDotNet/issues/658) [Params] for enums should include all values by default
-* [#731](https://github.com/dotnet/BenchmarkDotNet/issues/731) Add constant folding analyser
-* [#788](https://github.com/dotnet/BenchmarkDotNet/issues/788) Detect correct version of .NET Core in Docket container
-* [#842](https://github.com/dotnet/BenchmarkDotNet/issues/842) Benchmark filter: wildcards on *nix CLI (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#858](https://github.com/dotnet/BenchmarkDotNet/issues/858) Should the Engine iterate over and consume IEnumerable and IQueryable results? (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#859](https://github.com/dotnet/BenchmarkDotNet/issues/859) Strange max frequency values on Windows (assignee: [@Rizzen](https://github.com/Rizzen))
-* [#862](https://github.com/dotnet/BenchmarkDotNet/issues/862) Don't print parse errors to the output (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#863](https://github.com/dotnet/BenchmarkDotNet/issues/863) Make it easier to understand which process belongs to which benchmark (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#864](https://github.com/dotnet/BenchmarkDotNet/issues/864) Make the filter case insensitive (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#874](https://github.com/dotnet/BenchmarkDotNet/issues/874) .NET Core 3.0 support (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#879](https://github.com/dotnet/BenchmarkDotNet/issues/879) Benchmark attributed with "HardwareCounters" throws an exception (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#880](https://github.com/dotnet/BenchmarkDotNet/issues/880) Select Baseline across Methods and Jobs (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#889](https://github.com/dotnet/BenchmarkDotNet/issues/889) ArgumentsSource doesn't work if method takes 1 arg (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#891](https://github.com/dotnet/BenchmarkDotNet/issues/891) Add docs about debugging BDN issues (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#904](https://github.com/dotnet/BenchmarkDotNet/issues/904) Implement `--info`
-* [#905](https://github.com/dotnet/BenchmarkDotNet/issues/905) Implement `--list`
-* [#909](https://github.com/dotnet/BenchmarkDotNet/issues/909) Improve CPU Brand Strings without frequency
-* [#911](https://github.com/dotnet/BenchmarkDotNet/issues/911) Excluding specific namespaces from disassembly (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#925](https://github.com/dotnet/BenchmarkDotNet/issues/925) Make it possible to run the benchmark with multiple CoreRun.exe (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#931](https://github.com/dotnet/BenchmarkDotNet/issues/931) Same NuGet version used when benchmarking different packages
-* [#936](https://github.com/dotnet/BenchmarkDotNet/issues/936) Producing the asm diff reports on demand
-
-## Merged pull requests (33)
-
-* [#860](https://github.com/dotnet/BenchmarkDotNet/pull/860) Fix strange CPU Frequency values (by [@Rizzen](https://github.com/Rizzen))
-* [#878](https://github.com/dotnet/BenchmarkDotNet/pull/878) EtwProfiler Diagnoser (by [@adamsitnik](https://github.com/adamsitnik))
-* [#886](https://github.com/dotnet/BenchmarkDotNet/pull/886) Enabled GcModeTests.CanEnableServerGcMode (by [@dlemstra](https://github.com/dlemstra))
-* [#887](https://github.com/dotnet/BenchmarkDotNet/pull/887) Dependencies update (by [@adamsitnik](https://github.com/adamsitnik))
-* [#888](https://github.com/dotnet/BenchmarkDotNet/pull/888) Fix duplicate example in RunStrategy guide (by [@SteveDesmond-ca](https://github.com/SteveDesmond-ca))
-* [#890](https://github.com/dotnet/BenchmarkDotNet/pull/890) RPlotExporter: use https to download dependencies (by [@xavero](https://github.com/xavero))
-* [#892](https://github.com/dotnet/BenchmarkDotNet/pull/892) Added support for async GlobalSetup. (by [@dlemstra](https://github.com/dlemstra))
-* [#894](https://github.com/dotnet/BenchmarkDotNet/pull/894) Fix GlobalCleanupAttributeTest.GlobalCleanupMethodRunsTest (by [@dlemstra](https://github.com/dlemstra))
-* [#898](https://github.com/dotnet/BenchmarkDotNet/pull/898) Add workaround for Full framework on *NIX (by [@mfilippov](https://github.com/mfilippov))
-* [#900](https://github.com/dotnet/BenchmarkDotNet/pull/900) Fixing aspnet/KestrelHttpServer url (by [@facundofarias](https://github.com/facundofarias))
-* [#901](https://github.com/dotnet/BenchmarkDotNet/pull/901) Fixing SignalR and EntityFrameworkCore url as well (by [@facundofarias](https://github.com/facundofarias))
-* [#902](https://github.com/dotnet/BenchmarkDotNet/pull/902) More command line args (by [@adamsitnik](https://github.com/adamsitnik))
-* [#903](https://github.com/dotnet/BenchmarkDotNet/pull/903) Add LINQPad logging (by [@bgrainger](https://github.com/bgrainger))
-* [#906](https://github.com/dotnet/BenchmarkDotNet/pull/906) Zero measurement analyser (by [@Rizzen](https://github.com/Rizzen))
-* [#907](https://github.com/dotnet/BenchmarkDotNet/pull/907) fixes #904 Implement `--info` (by [@lahma](https://github.com/lahma))
-* [#908](https://github.com/dotnet/BenchmarkDotNet/pull/908) Added [ParamsAllValues] (by [@gsomix](https://github.com/gsomix))
-* [#910](https://github.com/dotnet/BenchmarkDotNet/pull/910) Simplify AMD Ryzen CPU brand info (by [@lahma](https://github.com/lahma))
-* [#913](https://github.com/dotnet/BenchmarkDotNet/pull/913) .NET Core Toolchains improvements (by [@adamsitnik](https://github.com/adamsitnik))
-* [#914](https://github.com/dotnet/BenchmarkDotNet/pull/914) Implement `--list` - fixes #905 (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#915](https://github.com/dotnet/BenchmarkDotNet/pull/915) Use a monospaced font for LINQPad logging output (by [@bgrainger](https://github.com/bgrainger))
-* [#916](https://github.com/dotnet/BenchmarkDotNet/pull/916) Update console-args.md - add information about `--list` option (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#917](https://github.com/dotnet/BenchmarkDotNet/pull/917) Add Azure Pipelines support (by [@Ky7m](https://github.com/Ky7m))
-* [#920](https://github.com/dotnet/BenchmarkDotNet/pull/920) OCD Whitespace and tabs cleanup (by [@dlemstra](https://github.com/dlemstra))
-* [#922](https://github.com/dotnet/BenchmarkDotNet/pull/922) Enables benchmarking betweeen different Nuget packages (by [@Shazwazza](https://github.com/Shazwazza))
-* [#923](https://github.com/dotnet/BenchmarkDotNet/pull/923) async GlobalCleanup support (by [@dlemstra](https://github.com/dlemstra))
-* [#926](https://github.com/dotnet/BenchmarkDotNet/pull/926) Added support for async GlobalCleanup. (by [@dlemstra](https://github.com/dlemstra))
-* [#927](https://github.com/dotnet/BenchmarkDotNet/pull/927) Improve Disassembly exporters and add PrettyGithubMarkdownDiffDisassemblyExporter (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#929](https://github.com/dotnet/BenchmarkDotNet/pull/929) Add build status badges for Azure Pipelines (by [@Ky7m](https://github.com/Ky7m))
-* [#930](https://github.com/dotnet/BenchmarkDotNet/pull/930) Fix minor spelling issues and typos (by [@KonH](https://github.com/KonH))
-* [#932](https://github.com/dotnet/BenchmarkDotNet/pull/932) Partition benchmark run info based on added nuget packages (by [@blairconrad](https://github.com/blairconrad))
-* [#934](https://github.com/dotnet/BenchmarkDotNet/pull/934) Detect correct version of .NET Core in Docker (by [@Rizzen](https://github.com/Rizzen))
-* [#935](https://github.com/dotnet/BenchmarkDotNet/pull/935) Add Timeout for dotnet cli build commands to our toolchains (by [@adamsitnik](https://github.com/adamsitnik))
-* [#937](https://github.com/dotnet/BenchmarkDotNet/pull/937) Producing the asm diff reports on demand - fix for #936 (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-
-## Commits (84)
-
-* [22b020](https://github.com/dotnet/BenchmarkDotNet/commit/22b0208781fbea7ba1871c7cc9850105e1f70b01) Postrelease update of v0.11.1 changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [3e26df](https://github.com/dotnet/BenchmarkDotNet/commit/3e26dfe75df4cbd05e3bbe68f1aac44f22abde4a) docs: fix NuGet package lists in footers (v0.11.x) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [cebe2a](https://github.com/dotnet/BenchmarkDotNet/commit/cebe2a0f84fa21acb6db9613fe3a4326d635f129) Deferred Execution Validator, fixes #858 (by [@adamsitnik](https://github.com/adamsitnik))
-* [50fd57](https://github.com/dotnet/BenchmarkDotNet/commit/50fd57ddb367d3e9e804a6814e22f8d771da3681) exported json file should contain correct type name for generic types, not Ge... (by [@adamsitnik](https://github.com/adamsitnik))
-* [30b885](https://github.com/dotnet/BenchmarkDotNet/commit/30b885be96dd2ff2725bd61dc005962578132120) benchmarked code can be defining IHost so we need to provide full name (examp... (by [@adamsitnik](https://github.com/adamsitnik))
-* [b7104e](https://github.com/dotnet/BenchmarkDotNet/commit/b7104ecdf7d29512af0e54430d54b15a0479af90) Don't print parse errors to the output, fixes #862 (by [@adamsitnik](https://github.com/adamsitnik))
-* [3a21b4](https://github.com/dotnet/BenchmarkDotNet/commit/3a21b4d3e81e9bd0092f3e80a33e2e05ca9ba48c) Make it easier to understand which process belongs to which benchmark, fixes ... (by [@adamsitnik](https://github.com/adamsitnik))
-* [99ea2d](https://github.com/dotnet/BenchmarkDotNet/commit/99ea2d5c6dde9946862caf0a9bd26f38839dcc08) Fix behavior of Baseline property of Benchmark attribute in integration with ... (by [@Caballero77](https://github.com/Caballero77))
-* [2e398c](https://github.com/dotnet/BenchmarkDotNet/commit/2e398c89561b3b1c89ec64b94f656ae20236efd1) detect .NET Core 3.0 and use the appropriate target framework moniker, fixes ... (by [@adamsitnik](https://github.com/adamsitnik))
-* [ff1214](https://github.com/dotnet/BenchmarkDotNet/commit/ff1214bc81bdadae2bca0e2523ab27ae4cf59729) Update IntroSetupCleanupTarget.md (#876) (by [@fredeil](https://github.com/fredeil))
-* [1721b4](https://github.com/dotnet/BenchmarkDotNet/commit/1721b42d6bed5eaa016dfeaffb15f8b19d91a122) Fixed typo in the NodaTime name (#877) (by [@YohDeadfall](https://github.com/YohDeadfall))
-* [f411a5](https://github.com/dotnet/BenchmarkDotNet/commit/f411a54ac4e6b6e06996477f6f0f3730ba4bdb96) Fix typo in example code (#869) (by [@NRKirby](https://github.com/NRKirby))
-* [21a007](https://github.com/dotnet/BenchmarkDotNet/commit/21a0073cc8b486f41b2e84deafacd00a1303013a) Support method-job baseline pairs, fixes #880 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [a78b38](https://github.com/dotnet/BenchmarkDotNet/commit/a78b38b0e89d04ad3fe8934162c7adb42f81eabe) Fix strange CPU Frequency values (#860) (by [@Rizzen](https://github.com/Rizzen))
-* [60eca0](https://github.com/dotnet/BenchmarkDotNet/commit/60eca005326970202a33891e5aecd2ef6b7e4cd0) Threshold API for WelchTTest; Improve Student accuracy for small n (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [05cc8d](https://github.com/dotnet/BenchmarkDotNet/commit/05cc8d15ef88e382bbb1827d766d7275c3e42abd) Statistical testing improvements (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [557752](https://github.com/dotnet/BenchmarkDotNet/commit/5577524567fc498958c3aadc2cff137bcaaab2d2) Fix compilation (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [a03307](https://github.com/dotnet/BenchmarkDotNet/commit/a033075a6af65276c56ad7948fef40d233088080) Enabled GcModeTests.CanEnableServerGcMode (#886) fixes #221 (by [@dlemstra](https://github.com/dlemstra))
-* [add585](https://github.com/dotnet/BenchmarkDotNet/commit/add585f48e7b9c5a0dec29c451df6c629eca0ab6) Fix duplicate example in RunStrategy guide (#888) (by [@SteveDesmond-ca](https://github.com/SteveDesmond-ca))
-* [d8b008](https://github.com/dotnet/BenchmarkDotNet/commit/d8b0084ac8e05482edc0a2d84b91a5d1a90c031d) Use NoInlining for CommonExporterApprovalTests (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [eacfd7](https://github.com/dotnet/BenchmarkDotNet/commit/eacfd7769e53b540f2870981598f93d5eb18f00f) Dependencies update (#887) (by [@adamsitnik](https://github.com/adamsitnik))
-* [579986](https://github.com/dotnet/BenchmarkDotNet/commit/579986274b17d7a8e27a4d150406ffe7edda310b) improve the docs, explain how to use ArgumentsSource for single arugment, fix... (by [@adamsitnik](https://github.com/adamsitnik))
-* [1ceee3](https://github.com/dotnet/BenchmarkDotNet/commit/1ceee3f314c857f85bf43b115f8660402146ca39) Fix compilation after merge (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [9ff772](https://github.com/dotnet/BenchmarkDotNet/commit/9ff7725d2d35449cb36a1623ef7e398086b92a99) RPlotExporter: use https to download dependencies (#890) (by [@xavero](https://github.com/xavero))
-* [41d6b8](https://github.com/dotnet/BenchmarkDotNet/commit/41d6b825d10fb1fffdb99275590e98fff0f83e09) added xml docs, made some methods virtual/public to make it easier to write y... (by [@adamsitnik](https://github.com/adamsitnik))
-* [cd0791](https://github.com/dotnet/BenchmarkDotNet/commit/cd07912c5a8c143416189f72ec48b2e9949ea689) restore --no-dependencies was good when we were generating multiple projects,... (by [@adamsitnik](https://github.com/adamsitnik))
-* [ad1feb](https://github.com/dotnet/BenchmarkDotNet/commit/ad1feb5d83d7c7fa7f7262bf6d40db8ffca89b50) expose KeepBenchmarkFiles as --keepFiles command line argument, #891 (by [@adamsitnik](https://github.com/adamsitnik))
-* [6880b5](https://github.com/dotnet/BenchmarkDotNet/commit/6880b58c2c51299408f66d09c2e50501459ea00a) add DebugInProcessConfig and DebugBuildConfig to make troubleshooting easier,... (by [@adamsitnik](https://github.com/adamsitnik))
-* [12e01a](https://github.com/dotnet/BenchmarkDotNet/commit/12e01a52166502b11180673e2be369c08b118ba8) add Troubleshooting docs, fixes #891 (by [@adamsitnik](https://github.com/adamsitnik))
-* [106777](https://github.com/dotnet/BenchmarkDotNet/commit/106777f7f575a8535f16292f1de80e8ffba2853a) make the filter case insensitive invariant culture, fixes #864 (by [@adamsitnik](https://github.com/adamsitnik))
-* [1b8051](https://github.com/dotnet/BenchmarkDotNet/commit/1b805115f6e4558208b69fa2e55edc8d46a0f556) wrap * in '*' on Unix when showing users the help, fixes #842 (by [@adamsitnik](https://github.com/adamsitnik))
-* [382a4a](https://github.com/dotnet/BenchmarkDotNet/commit/382a4af4f1a1d057077c69eb37026545910b966e) Fix GlobalCleanupAttributeTest.GlobalCleanupMethodRunsTest (#894) (by [@dlemstra](https://github.com/dlemstra))
-* [0f721c](https://github.com/dotnet/BenchmarkDotNet/commit/0f721c8e0e100fc951a54b6045eb7b58c55c2a1f) make it possible to specify runtimes using explicit tfms like net472 or netco... (by [@adamsitnik](https://github.com/adamsitnik))
-* [1e3df7](https://github.com/dotnet/BenchmarkDotNet/commit/1e3df74b2f927f541bed723f65c2d571fa850c53) make it possible to specify hardware counters from command line (by [@adamsitnik](https://github.com/adamsitnik))
-* [ba0d22](https://github.com/dotnet/BenchmarkDotNet/commit/ba0d22b41fd25022e3a945fe5ef1ae8aea697cf7) allow to configure the number of invocations and iterations from command line (by [@adamsitnik](https://github.com/adamsitnik))
-* [b90be6](https://github.com/dotnet/BenchmarkDotNet/commit/b90be66428555816f50207c48da53ef4d3fdc9f4) Add workaround for Full framework on *NIX (#898) (by [@mfilippov](https://github.com/mfilippov))
-* [4afdb8](https://github.com/dotnet/BenchmarkDotNet/commit/4afdb800805c165b7e022b3c2c720dc6c1a9b530) Fixing aspnet/KestrelHttpServer url (#900) (by [@facundofarias](https://github.com/facundofarias))
-* [3319ab](https://github.com/dotnet/BenchmarkDotNet/commit/3319ab870288a69456074fbbe7bcd79b013514b3) Fixing SignalR and EntityFrameworkCore url as well (#901) (by [@facundofarias](https://github.com/facundofarias))
-* [b72aab](https://github.com/dotnet/BenchmarkDotNet/commit/b72aabf82bb34c212b0f8c4312c1905ad8e667aa) allow the users to specify programmatically custom default job settings and o... (by [@adamsitnik](https://github.com/adamsitnik))
-* [2e7042](https://github.com/dotnet/BenchmarkDotNet/commit/2e7042f7f7b7d5852455f8935d4631ce46ea94db) Merge pull request #902 from dotnet/moreCommandLineArgs (by [@adamsitnik](https://github.com/adamsitnik))
-* [04a715](https://github.com/dotnet/BenchmarkDotNet/commit/04a71586206a822bca56f0abdacefdc2e5fc1b01) EtwProfiler Diagnoser (#878) (by [@adamsitnik](https://github.com/adamsitnik))
-* [220bae](https://github.com/dotnet/BenchmarkDotNet/commit/220bae1559a06e5d98b5eecb9256bef601e2c083) DotNetCliGenerator.TargetFrameworkMoniker must be public (by [@adamsitnik](https://github.com/adamsitnik))
-* [4e64c9](https://github.com/dotnet/BenchmarkDotNet/commit/4e64c94cfe7b49bbdc06aabb6ee1f262bd370862) Ratio/RatioSD columns (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [177c07](https://github.com/dotnet/BenchmarkDotNet/commit/177c07de56b27ad55d5be475d46e27abd4c048f5) Add Windows 10 (1809) in OsBrandStringHelper (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [4be28d](https://github.com/dotnet/BenchmarkDotNet/commit/4be28d25fa9ab79ca194c615783148042738bdad) fixes #904 Implement `--info` (#907) (by [@lahma](https://github.com/lahma))
-* [c3b609](https://github.com/dotnet/BenchmarkDotNet/commit/c3b6095b933b132c1773ced3af126f282465b980) Add LINQPad logging (#903) (by [@bgrainger](https://github.com/bgrainger))
-* [922dff](https://github.com/dotnet/BenchmarkDotNet/commit/922dfff62d6cf6fd808865e705a09eee63690a2e) Added [ParamsAllValues] (#908), fixes #658 (by [@gsomix](https://github.com/gsomix))
-* [1e6235](https://github.com/dotnet/BenchmarkDotNet/commit/1e62355f209a25c7a33f9ab7e7e03b0afe7d851f) github markdown exporter for Disassembler, fixes #560 (by [@adamsitnik](https://github.com/adamsitnik))
-* [330f66](https://github.com/dotnet/BenchmarkDotNet/commit/330f66c3a3d94d1369d5c0b629bbb0085d5db8eb) Implement `--list` - fixes #905 (#914) (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [10fdd0](https://github.com/dotnet/BenchmarkDotNet/commit/10fdd0998b46c4358f6fa38aacc21e57a7730724) Use a monospaced font for LINQPad logging output. (#915) (by [@bgrainger](https://github.com/bgrainger))
-* [846d08](https://github.com/dotnet/BenchmarkDotNet/commit/846d0863b6456d3e1e6ccab06d8e61c5cd064194) ParamsAllValuesValidator fixes (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [1c581e](https://github.com/dotnet/BenchmarkDotNet/commit/1c581e5bf5b4ba9f40d113ae09e0731a60523a60) .NET Core Toolchains improvements (#913) (by [@adamsitnik](https://github.com/adamsitnik))
-* [8949df](https://github.com/dotnet/BenchmarkDotNet/commit/8949df478a04fb257802cb1711ceb05c77c76a95) BenchmarkSwitcher should ask the user for choosing the benchmarks when the gl... (by [@adamsitnik](https://github.com/adamsitnik))
-* [fb8f89](https://github.com/dotnet/BenchmarkDotNet/commit/fb8f8939888515b2ec20c8d509f9b561c91e5437) Make WindowsDisassembler public to allow for late resutls filtering in diagno... (by [@adamsitnik](https://github.com/adamsitnik))
-* [0bcbce](https://github.com/dotnet/BenchmarkDotNet/commit/0bcbceb22a6de419763ea91d321b8316aa2ed3b4) allow configuring disasm recursive depth from console line arguments; --todo; (by [@adamsitnik](https://github.com/adamsitnik))
-* [5e3cee](https://github.com/dotnet/BenchmarkDotNet/commit/5e3cee10bd4a8aaedb646ca2f30144c9c4cff040) make sure BenchmarkSwitcher handles all possible cases and gives nice errors (by [@adamsitnik](https://github.com/adamsitnik))
-* [6c7521](https://github.com/dotnet/BenchmarkDotNet/commit/6c7521d4fd6776098667944321c8a65848382ae5) Update console-args.md - add information about `--list` option (#916) (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [8773ff](https://github.com/dotnet/BenchmarkDotNet/commit/8773ff25096744a39d4ee54b1da0d695c88e8d54) when user provides categories via command line to benchmark switcher we don't... (by [@adamsitnik](https://github.com/adamsitnik))
-* [901616](https://github.com/dotnet/BenchmarkDotNet/commit/90161654725efd5639e0190638a3383d6a49e34c) when user provides CoreRun path and runtime in explicit way, we should use th... (by [@adamsitnik](https://github.com/adamsitnik))
-* [5df1e6](https://github.com/dotnet/BenchmarkDotNet/commit/5df1e6434b791eb5da6f6ef42505fc6a94ebd008) Simplify AMD Ryzen CPU brand info (#910) (by [@lahma](https://github.com/lahma))
-* [1b4c7f](https://github.com/dotnet/BenchmarkDotNet/commit/1b4c7fa45fa70ae4af604e74feae8a10fa84fc68) OCD Whitespace and tabs cleanup (#920) (by [@dlemstra](https://github.com/dlemstra))
-* [d917e6](https://github.com/dotnet/BenchmarkDotNet/commit/d917e63b23408a3d56842488f51a47d288573f50) don't parse the trace file if there are no counters configured, wait for dela... (by [@adamsitnik](https://github.com/adamsitnik))
-* [e0f7a6](https://github.com/dotnet/BenchmarkDotNet/commit/e0f7a67681860ead87cef76fa0db349460b34eb0) Added support for async GlobalSetup. (#892) (by [@dlemstra](https://github.com/dlemstra))
-* [46bebf](https://github.com/dotnet/BenchmarkDotNet/commit/46bebf1497d4e9314c6dfd2d4e10df81332aa4fa) allow the users to run the same benchmarks using few different CoreRun.exe, f... (by [@adamsitnik](https://github.com/adamsitnik))
-* [a4f91a](https://github.com/dotnet/BenchmarkDotNet/commit/a4f91a392675e4851a785095af162b977d249ba3) better handling of edge cases for parsing hardware counters from the console ... (by [@adamsitnik](https://github.com/adamsitnik))
-* [98925b](https://github.com/dotnet/BenchmarkDotNet/commit/98925b3f8e987c6b92eddf55702cde0d2ba23e45) initial 0.11.2 release notes (by [@adamsitnik](https://github.com/adamsitnik))
-* [a971a4](https://github.com/dotnet/BenchmarkDotNet/commit/a971a435ce6e6ca25d246e5e2cd56c5b2cf4739d) async GlobalCleanup support (#923) (by [@dlemstra](https://github.com/dlemstra))
-* [e4c7b8](https://github.com/dotnet/BenchmarkDotNet/commit/e4c7b852e5593bb280881e28ece51d26687c5ba9) Added support for async GlobalCleanup. (#926), fixes #521 (by [@dlemstra](https://github.com/dlemstra))
-* [92a786](https://github.com/dotnet/BenchmarkDotNet/commit/92a7869aaa30aeacaf1da2dcc45bc65c8333ae73) Enables benchmarking betweeen different Nuget packages (#922) fixes #290 (by [@Shazwazza](https://github.com/Shazwazza))
-* [601c66](https://github.com/dotnet/BenchmarkDotNet/commit/601c66175fb9b1949ae2f32a743bd2bbe47a37cf) Add Azure Pipelines support (#917) (by [@Ky7m](https://github.com/Ky7m))
-* [f9ac68](https://github.com/dotnet/BenchmarkDotNet/commit/f9ac688886f9ffe424de88172da9c03796cf60dd) Add build status badges (#929) (by [@Ky7m](https://github.com/Ky7m))
-* [8a2eec](https://github.com/dotnet/BenchmarkDotNet/commit/8a2eecd9297fa01d4639d952f3dd6c43a646b66c) Fix minor spelling issues and typos (#930) (by [@KonH](https://github.com/KonH))
-* [510685](https://github.com/dotnet/BenchmarkDotNet/commit/510685f48ce2baf57682aa82e18c6486989e9625) Partition benchmark run info based on added nuget packages (#932) (by [@blairconrad](https://github.com/blairconrad))
-* [1903a1](https://github.com/dotnet/BenchmarkDotNet/commit/1903a1bd96d207ed51611d1dc546920f5bfb0d86) Improve Disassembly exporters and add PrettyGithubMarkdownDiffDisassemblyExpo... (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [48d193](https://github.com/dotnet/BenchmarkDotNet/commit/48d193e30c780eb43e65b21f892c48db5dab6f6b) Zero measurement analyser (#906) (by [@Rizzen](https://github.com/Rizzen))
-* [cf84a4](https://github.com/dotnet/BenchmarkDotNet/commit/cf84a44d108d5bf3860129e0a2a78cace9c95626) NuGet casing fix (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [fd459f](https://github.com/dotnet/BenchmarkDotNet/commit/fd459f7434017788d6236924f736500385e636e5) Remove remark about prerelease version in etwprofiler.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [db444c](https://github.com/dotnet/BenchmarkDotNet/commit/db444c75e75bae2a782cbaedc8dc83f61bc23295) Add Timeout for dotnet cli build commands to our toolchains (#935) fixes #933 (by [@adamsitnik](https://github.com/adamsitnik))
-* [bb0b18](https://github.com/dotnet/BenchmarkDotNet/commit/bb0b184f9ae19d95c89b1317f4fde0d6f518635e) Detect correct version of .NET Core in Docker (#934), fixes #788 (by [@Rizzen](https://github.com/Rizzen))
-* [dd103b](https://github.com/dotnet/BenchmarkDotNet/commit/dd103b60a4af0d3b9e7efb523c0923e7cbd8b62d) Producing the asm diff reports on demand - fixes #936 (#937) (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [864400](https://github.com/dotnet/BenchmarkDotNet/commit/8644004de1de5d81389ff3e7cd8d3317d2871a1a) Update v0.11.2 changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [15c035](https://github.com/dotnet/BenchmarkDotNet/commit/15c035a3bed640933473e8637323727a61426fdc) Minor IntroSamples fixes (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [a5b692](https://github.com/dotnet/BenchmarkDotNet/commit/a5b69295c22498cd14f3a1c192d9c5aecf285c78) Update v0.11.2 changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [2341c7](https://github.com/dotnet/BenchmarkDotNet/commit/2341c7e06c46f8bc084071ebe9fcdfc6a1102ed7) Set library version: 0.11.2 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Contributors (20)
-
-* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik))
-* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* Blair Conrad ([@blairconrad](https://github.com/blairconrad))
-* Bradley Grainger ([@bgrainger](https://github.com/bgrainger))
-* Caballero77 ([@Caballero77](https://github.com/Caballero77))
-* Dirk Lemstra ([@dlemstra](https://github.com/dlemstra))
-* Evgeniy Andreev ([@gsomix](https://github.com/gsomix))
-* Facundo Farias ([@facundofarias](https://github.com/facundofarias))
-* Flavio Coelho ([@xavero](https://github.com/xavero))
-* Fredrik Eilertsen ([@fredeil](https://github.com/fredeil))
-* Igor Fesenko ([@Ky7m](https://github.com/Ky7m))
-* KonH ([@KonH](https://github.com/KonH))
-* Mark Tkachenko ([@Rizzen](https://github.com/Rizzen))
-* Marko Lahma ([@lahma](https://github.com/lahma))
-* Mikhail Filippov ([@mfilippov](https://github.com/mfilippov))
-* Nick Kirby ([@NRKirby](https://github.com/NRKirby))
-* Shannon Deminick ([@Shazwazza](https://github.com/Shazwazza))
-* Steve Desmond ([@SteveDesmond-ca](https://github.com/SteveDesmond-ca))
-* Wojciech Nagórski ([@WojciechNagorski](https://github.com/WojciechNagorski))
-* Yoh Deadfall ([@YohDeadfall](https://github.com/YohDeadfall))
-
-Thank you very much!
-
diff --git a/docs/_changelog/details/v0.11.3.md b/docs/_changelog/details/v0.11.3.md
deleted file mode 100644
index 74a2f72775..0000000000
--- a/docs/_changelog/details/v0.11.3.md
+++ /dev/null
@@ -1,72 +0,0 @@
-## Milestone details
-
-In the [v0.11.3](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.11.3) scope,
-10 issues were resolved and 10 pull requests were merged.
-This release includes 26 commits by 6 contributors.
-
-## Resolved issues (10)
-
-* [#870](https://github.com/dotnet/BenchmarkDotNet/issues/870) Error after adding OperationsPerInvoke (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#885](https://github.com/dotnet/BenchmarkDotNet/issues/885) Closing application dot't stop benchmark (assignee: [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#933](https://github.com/dotnet/BenchmarkDotNet/issues/933) Investigate hanging SingleBenchmarkCanBeExecutedForMultipleRuntimes test (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#939](https://github.com/dotnet/BenchmarkDotNet/issues/939) We need an option to stop running when the first benchmark fails. (assignee: [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#943](https://github.com/dotnet/BenchmarkDotNet/issues/943) Dry mode doesn't work because of the ZeroMeasurementHelper (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#948](https://github.com/dotnet/BenchmarkDotNet/issues/948) BenchmarkDotNet.Mathematics.StatisticalTesting.MannWhitneyTest.PValueForSmallN(int n, int m, double u) (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#950](https://github.com/dotnet/BenchmarkDotNet/issues/950) MannWhitneyTest fails when comparing statistics of different sample size (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#955](https://github.com/dotnet/BenchmarkDotNet/issues/955) Improve the dynamic loading of Diagnostics package (assignee: [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#961](https://github.com/dotnet/BenchmarkDotNet/issues/961) BenchmarkRunner.RunUrl throws NRE when Config is not provided
-* [#964](https://github.com/dotnet/BenchmarkDotNet/issues/964) Concurrency Visualizer Profiler (assignee: [@adamsitnik](https://github.com/adamsitnik))
-
-## Merged pull requests (10)
-
-* [#941](https://github.com/dotnet/BenchmarkDotNet/pull/941) Fix example code (isBaseline -> baseline) (by [@PathogenDavid](https://github.com/PathogenDavid))
-* [#944](https://github.com/dotnet/BenchmarkDotNet/pull/944) Fixed typo in IntroTagColumn sample (by [@ahmedalejo](https://github.com/ahmedalejo))
-* [#947](https://github.com/dotnet/BenchmarkDotNet/pull/947) Add option to stop running when the first benchmark fails (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#949](https://github.com/dotnet/BenchmarkDotNet/pull/949) Add printDiff in DisassemblyDiagnoserAttribute (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#951](https://github.com/dotnet/BenchmarkDotNet/pull/951) Add failing test for #948 (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#958](https://github.com/dotnet/BenchmarkDotNet/pull/958) Use DependencyContext to load diagnostics assembly (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#960](https://github.com/dotnet/BenchmarkDotNet/pull/960) Expose StatisticalTestColumn via command line arguments (by [@adamsitnik](https://github.com/adamsitnik))
-* [#962](https://github.com/dotnet/BenchmarkDotNet/pull/962) Don't require the users to do manual installation of TraceEvent when using Diagnostics package (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#963](https://github.com/dotnet/BenchmarkDotNet/pull/963) Stop benchmark after closing application + Flush log after stopping benchmark. (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#966](https://github.com/dotnet/BenchmarkDotNet/pull/966) Fix typos in ConfigParser and CommandLineOptions (by [@morgan-kn](https://github.com/morgan-kn))
-
-## Commits (26)
-
-* [d85a7e](https://github.com/dotnet/BenchmarkDotNet/commit/d85a7efc1836bd5ecc2bc4f25a0531519a5ad207) Postrelease update of v0.11.2 changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [8b2015](https://github.com/dotnet/BenchmarkDotNet/commit/8b2015ba3872b6db4a019de0c4544223ebfe4e7e) Fix ZeroMeasurementHelper for dry mode case, fixes #943 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [ab8543](https://github.com/dotnet/BenchmarkDotNet/commit/ab85430af5011c9c27ec805a248796014c708014) Fix example code (#941) (by [@PathogenDavid](https://github.com/PathogenDavid))
-* [ec5fb2](https://github.com/dotnet/BenchmarkDotNet/commit/ec5fb24bd810edbfcb6a8d6f61de7c40f10098b4) Enable default analysers in BenchmarkTestExecutor (see #943) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [fb251d](https://github.com/dotnet/BenchmarkDotNet/commit/fb251d5ca34d3c9f4368d1d9a2a0fb546e3d38a5) Remove [DryJob] from IntroBasic (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [1c1bdf](https://github.com/dotnet/BenchmarkDotNet/commit/1c1bdffc34010b94ce7204cc729236da27de111f) Fix another problem in ZeroMeasurementAnalyser (see #943) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [348f87](https://github.com/dotnet/BenchmarkDotNet/commit/348f87661e25ddbcefa729b6dc724cef8e72347f) make sure we prevent from inlining the benchmarks also in the dummy method ge... (by [@adamsitnik](https://github.com/adamsitnik))
-* [80ecec](https://github.com/dotnet/BenchmarkDotNet/commit/80ecec26e4b8b223d6d9e3e4652f05ed89b06b9d) when the parallel build fails, always try one more time in sequential way, ho... (by [@adamsitnik](https://github.com/adamsitnik))
-* [042291](https://github.com/dotnet/BenchmarkDotNet/commit/042291647ad811e465f0bd38d40d98c49ffd07a7) set the metrics unit to "Count", they should not be empty /cc @jorive (by [@adamsitnik](https://github.com/adamsitnik))
-* [5b3657](https://github.com/dotnet/BenchmarkDotNet/commit/5b36576f67bc65c1b9fb25f062e841a243d31305) Fixed typo in IntroTagColumn sample (#944) (by [@ahmedalejo](https://github.com/ahmedalejo))
-* [60ea17](https://github.com/dotnet/BenchmarkDotNet/commit/60ea1705d7d8e31eb1292e5bf785f818b9cbd0a2) Add printDiff in DisassemblyDiagnoserAttribute (#949) (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [b6e8b1](https://github.com/dotnet/BenchmarkDotNet/commit/b6e8b1311f5018d430a717534cf5f8d9954625a3) Add failing test for #948 (#951) (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [3e9f73](https://github.com/dotnet/BenchmarkDotNet/commit/3e9f732d45ddba0615284e0325a011c2e87aa8bc) Fix IndexOutOfRangeException in MannWhitneyTest, fixes #948 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [9f33f0](https://github.com/dotnet/BenchmarkDotNet/commit/9f33f0dc30ce95c577a273baeaf4176789631c40) Add option to stop running when the first benchmark fails (#947) (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [376a97](https://github.com/dotnet/BenchmarkDotNet/commit/376a97e16c41f75bc6cec16f4cfa7a288276326f) Improve dynamic assembly loading fixes #955 (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [7dffd4](https://github.com/dotnet/BenchmarkDotNet/commit/7dffd41353105f15f4e4508d442d9f854d7a74fc) Handle another corner case in AdaptiveHistogramBuilder, fixes #870 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [dfb3c8](https://github.com/dotnet/BenchmarkDotNet/commit/dfb3c8912505799a76b0eb5ae0c082bb44599fa7) ConcurrencyVisualizerProfiler diagnoser! (by [@adamsitnik](https://github.com/adamsitnik))
-* [7e7dde](https://github.com/dotnet/BenchmarkDotNet/commit/7e7ddebed9acbf258c957c47afcf3332124d62ee) Fix NRE in BenchmarkRunner.RunUrl, fixes #961 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [4e6531](https://github.com/dotnet/BenchmarkDotNet/commit/4e653114d8382a4b4c7f6781ad0813c50a515a21) Improve diagnostics dll (#962) (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [6c4a59](https://github.com/dotnet/BenchmarkDotNet/commit/6c4a593fdb0528781bb4386d762540ee261bf0b3) Stop benchmark after closing application + Flush log after stopping benchmark... (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [51a965](https://github.com/dotnet/BenchmarkDotNet/commit/51a96595a896769a257f7018b04b1f8049c67646) Expose StatisticalTestColumn via command line arguments (#960) (by [@adamsitnik](https://github.com/adamsitnik))
-* [ca188d](https://github.com/dotnet/BenchmarkDotNet/commit/ca188d9bfec1abec0611ecf50a31567cf39fdd21) 0.11.3 initial release notes (by [@adamsitnik](https://github.com/adamsitnik))
-* [adde64](https://github.com/dotnet/BenchmarkDotNet/commit/adde64cbbcde01938d6b2772066852c4f6c0e88d) Fix typos in ConfigParser and CommandLineOptions (#966) (by [@morgan-kn](https://github.com/morgan-kn))
-* [ab96ab](https://github.com/dotnet/BenchmarkDotNet/commit/ab96abe2858a96d82898e7d898eeae75c0843258) make sure we cleanup the Logger after running the benchmark, otherwise AppDom... (by [@adamsitnik](https://github.com/adamsitnik))
-* [91362d](https://github.com/dotnet/BenchmarkDotNet/commit/91362dc1e04e30300132c78a5842dc6deda04197) Update v0.11.3 changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [e7e4b5](https://github.com/dotnet/BenchmarkDotNet/commit/e7e4b58aba89a025fa6bfac69955a48d49d919f9) Set library version: 0.11.3 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Contributors (6)
-
-* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik))
-* Ahmed Alejo ([@ahmedalejo](https://github.com/ahmedalejo))
-* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* David Maas ([@PathogenDavid](https://github.com/PathogenDavid))
-* Irina Ananeva ([@morgan-kn](https://github.com/morgan-kn))
-* Wojciech Nagórski ([@WojciechNagorski](https://github.com/WojciechNagorski))
-
-Thank you very much!
-
diff --git a/docs/_changelog/details/v0.11.4.md b/docs/_changelog/details/v0.11.4.md
deleted file mode 100644
index 95021a6baa..0000000000
--- a/docs/_changelog/details/v0.11.4.md
+++ /dev/null
@@ -1,220 +0,0 @@
-## Milestone details
-
-In the [v0.11.4](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.11.4) scope,
-42 issues were resolved and 41 pull requests were merged.
-This release includes 99 commits by 18 contributors.
-
-## Resolved issues (42)
-
-* [#213](https://github.com/dotnet/BenchmarkDotNet/issues/213) Add a "benchmark" cmd to dotnet
-* [#343](https://github.com/dotnet/BenchmarkDotNet/issues/343) FileNotFoundException on mono (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#360](https://github.com/dotnet/BenchmarkDotNet/issues/360) Duplicates handling for IConfig (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#385](https://github.com/dotnet/BenchmarkDotNet/issues/385) Consider using S.R.InteropServices.RuntimeInformation.ProcessArchitecture instead pointer based detection of platform (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#387](https://github.com/dotnet/BenchmarkDotNet/issues/387) Add a mode to BenchmarkSwitcher that allows to run a method inline for profiling (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#463](https://github.com/dotnet/BenchmarkDotNet/issues/463) Review interface IConfig (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#660](https://github.com/dotnet/BenchmarkDotNet/issues/660) [Params] should not change the order of provided values
-* [#667](https://github.com/dotnet/BenchmarkDotNet/issues/667) Does BenchMarkDotnet supports 4.7.1 Dotnet framework (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#687](https://github.com/dotnet/BenchmarkDotNet/issues/687) Implement [Arguments] support for InProcessToolchain (assignee: [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [#714](https://github.com/dotnet/BenchmarkDotNet/issues/714) Test BenchmarkDotNet against unstable/multimodal benchmarks from CoreCLR/CoreFX repo (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#780](https://github.com/dotnet/BenchmarkDotNet/issues/780) ARM support (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#834](https://github.com/dotnet/BenchmarkDotNet/issues/834) Better list of suggested benchmarks for wrong filter (assignee: [@morgan-kn](https://github.com/morgan-kn))
-* [#843](https://github.com/dotnet/BenchmarkDotNet/issues/843) Exception when returning a stackonly structure in a benchmark case using in-process toolchain (assignee: [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [#849](https://github.com/dotnet/BenchmarkDotNet/issues/849) C# keywords are prohibited as benchmark names (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#895](https://github.com/dotnet/BenchmarkDotNet/issues/895) Could not load file or assembly 'System.ValueTuple, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#896](https://github.com/dotnet/BenchmarkDotNet/issues/896) .NET 4.7.1 console app tries to use BenchmarkRunner, gets "Could not load file or assembly 'System.Runtime, Version=4.1.2.0" (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#919](https://github.com/dotnet/BenchmarkDotNet/issues/919) Feature proposal: full-featured inprocess toolchain (assignee: [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [#928](https://github.com/dotnet/BenchmarkDotNet/issues/928) Remove CustomCoreClrToolchain (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#938](https://github.com/dotnet/BenchmarkDotNet/issues/938) Run benchmark with DisasemblyDiagnoser with `--disasam` option from console (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#942](https://github.com/dotnet/BenchmarkDotNet/issues/942) System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime, Version=4.1.0.0' after adding BenchmarkDotNet.Diagnostics.Windows (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#967](https://github.com/dotnet/BenchmarkDotNet/issues/967) Publish a snupkg to the NuGet.org symbol server (assignee: [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#970](https://github.com/dotnet/BenchmarkDotNet/issues/970) False alarm bug report
-* [#981](https://github.com/dotnet/BenchmarkDotNet/issues/981) File names should be consistent across all OSes (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#982](https://github.com/dotnet/BenchmarkDotNet/issues/982) Invalid string representaiton of CPU Affinity on a machine with more than 32 cores on ARM64 (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#983](https://github.com/dotnet/BenchmarkDotNet/issues/983) Give a warning when the [Benchmark] method is static (assignee: [@Rizzen](https://github.com/Rizzen))
-* [#986](https://github.com/dotnet/BenchmarkDotNet/issues/986) NRE in `Summary` ctor
-* [#988](https://github.com/dotnet/BenchmarkDotNet/issues/988) Make it possible to disable OptimizationsValidator (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#998](https://github.com/dotnet/BenchmarkDotNet/issues/998) Missing images in docs (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#1002](https://github.com/dotnet/BenchmarkDotNet/issues/1002) Multiple build/publish failure with `--coreRun` toolchain (assignee: [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#1007](https://github.com/dotnet/BenchmarkDotNet/issues/1007) benchmark cannot have type Action (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1010](https://github.com/dotnet/BenchmarkDotNet/issues/1010) Write unit tests which check that BenchmarkProgram.txt doesn't contain usings (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1018](https://github.com/dotnet/BenchmarkDotNet/issues/1018) ArgumentNullException when running benchmarks from published .NET Core app
-* [#1039](https://github.com/dotnet/BenchmarkDotNet/issues/1039) Some tests are broken on Net 461 (culture-dependent thing) (assignee: [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [#1045](https://github.com/dotnet/BenchmarkDotNet/issues/1045) Dry jobs can eat iteration failures (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1046](https://github.com/dotnet/BenchmarkDotNet/issues/1046) NullReferenceException in BenchmarkDotNet.Reports.SummaryTable after iteration failure (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1048](https://github.com/dotnet/BenchmarkDotNet/issues/1048) Display the number of benchmarks to run (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1049](https://github.com/dotnet/BenchmarkDotNet/issues/1049) Running the example throws NullReference (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1051](https://github.com/dotnet/BenchmarkDotNet/issues/1051) Fix race condition in process output reader (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1056](https://github.com/dotnet/BenchmarkDotNet/issues/1056) Fails to build when targeting .NET Core 3.0 and .NET Framework (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1059](https://github.com/dotnet/BenchmarkDotNet/issues/1059) Disassembly diagnoser should be kept in a separate directory to avoid dependency conflicts (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1062](https://github.com/dotnet/BenchmarkDotNet/issues/1062) Write the GitHub table format to the console by default (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1065](https://github.com/dotnet/BenchmarkDotNet/issues/1065) Allow benchmarking .NET Core Desktop apps (assignee: [@adamsitnik](https://github.com/adamsitnik))
-
-## Merged pull requests (41)
-
-* [#912](https://github.com/dotnet/BenchmarkDotNet/pull/912) Duplicates handling for IConfig = big refactor, fixes #360 (by [@adamsitnik](https://github.com/adamsitnik))
-* [#921](https://github.com/dotnet/BenchmarkDotNet/pull/921) InProcessEmitToolchain (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [#940](https://github.com/dotnet/BenchmarkDotNet/pull/940) Add support for mono AOT pass (by [@alexanderkyte](https://github.com/alexanderkyte))
-* [#957](https://github.com/dotnet/BenchmarkDotNet/pull/957) Better list of suggested benchmarks for wrong filter #834 (by [@morgan-kn](https://github.com/morgan-kn))
-* [#968](https://github.com/dotnet/BenchmarkDotNet/pull/968) Support Nuget symbol server (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#969](https://github.com/dotnet/BenchmarkDotNet/pull/969) Disable batch mode and explicitly enable build trigger for master branch (by [@Ky7m](https://github.com/Ky7m))
-* [#977](https://github.com/dotnet/BenchmarkDotNet/pull/977) sort enum parameters by value instead of name (by [@kayle](https://github.com/kayle))
-* [#979](https://github.com/dotnet/BenchmarkDotNet/pull/979) ARM support (by [@adamsitnik](https://github.com/adamsitnik))
-* [#980](https://github.com/dotnet/BenchmarkDotNet/pull/980) Detect .NET Core benchmark failures from LINQPad (by [@Turnerj](https://github.com/Turnerj))
-* [#984](https://github.com/dotnet/BenchmarkDotNet/pull/984) Introduce StoppingCriteria (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#985](https://github.com/dotnet/BenchmarkDotNet/pull/985) Give a warning when the [Benchmark] method is static (by [@Rizzen](https://github.com/Rizzen))
-* [#987](https://github.com/dotnet/BenchmarkDotNet/pull/987) Fix NRE in MetricColumn (#986) (by [@qbit86](https://github.com/qbit86))
-* [#991](https://github.com/dotnet/BenchmarkDotNet/pull/991) Fix typos (by [@0x6a62](https://github.com/0x6a62))
-* [#992](https://github.com/dotnet/BenchmarkDotNet/pull/992) Use .NET Standard 2.0 CommandLineParser, Update to net461 for NS2.0 support (by [@glennawatson](https://github.com/glennawatson))
-* [#996](https://github.com/dotnet/BenchmarkDotNet/pull/996) Rephrase Notes section and fix markdown (by [@Maximusya](https://github.com/Maximusya))
-* [#997](https://github.com/dotnet/BenchmarkDotNet/pull/997) Remove obsolete info from the docs (by [@Maximusya](https://github.com/Maximusya))
-* [#999](https://github.com/dotnet/BenchmarkDotNet/pull/999) Synchronize benchmark output with the code in docs (by [@Maximusya](https://github.com/Maximusya))
-* [#1001](https://github.com/dotnet/BenchmarkDotNet/pull/1001) CoreRT toolchain update (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1006](https://github.com/dotnet/BenchmarkDotNet/pull/1006) BenchmarkDotNet as global tool (by [@CodeTherapist](https://github.com/CodeTherapist))
-* [#1008](https://github.com/dotnet/BenchmarkDotNet/pull/1008) Improve error logging to diagnose unstable tests (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1009](https://github.com/dotnet/BenchmarkDotNet/pull/1009) Use only full names in the auto-generated code to avoid any possible conflicts with user code (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1012](https://github.com/dotnet/BenchmarkDotNet/pull/1012) Changed TargetCount to IterationCount in docs (by [@Sitiritis](https://github.com/Sitiritis))
-* [#1013](https://github.com/dotnet/BenchmarkDotNet/pull/1013) Improve restore, build and publish projects - Fix for #1002 (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#1014](https://github.com/dotnet/BenchmarkDotNet/pull/1014) Update IntroRatioSD.md (by [@fredeil](https://github.com/fredeil))
-* [#1022](https://github.com/dotnet/BenchmarkDotNet/pull/1022) Improve diff disassembly (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#1032](https://github.com/dotnet/BenchmarkDotNet/pull/1032) Target .NET Standard 2.0 only (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1033](https://github.com/dotnet/BenchmarkDotNet/pull/1033) BenchmarkDotNet as global tool (#1006), fixes #213 (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1035](https://github.com/dotnet/BenchmarkDotNet/pull/1035) Improve global tool (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#1036](https://github.com/dotnet/BenchmarkDotNet/pull/1036) Remove InternalsVisibleTo for Samples application (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#1038](https://github.com/dotnet/BenchmarkDotNet/pull/1038) Change the name of the global tool (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#1040](https://github.com/dotnet/BenchmarkDotNet/pull/1040) Making the new InProcessEmitToolchain work after my recent refactor and .NET Standard 2.0 port (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1041](https://github.com/dotnet/BenchmarkDotNet/pull/1041) InProcessEmitToolchain (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1042](https://github.com/dotnet/BenchmarkDotNet/pull/1042) Use invariant culture for csc messages (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [#1043](https://github.com/dotnet/BenchmarkDotNet/pull/1043) minor InProcess fix: diff now checks for implementation flags (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [#1052](https://github.com/dotnet/BenchmarkDotNet/pull/1052) dotnet cli version update + reducing the number of long running tests (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1053](https://github.com/dotnet/BenchmarkDotNet/pull/1053) read the process output in a thread safe way, fixes #1051 (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1054](https://github.com/dotnet/BenchmarkDotNet/pull/1054) update Travis Ubuntu image from 14.04 to 16.04 (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1055](https://github.com/dotnet/BenchmarkDotNet/pull/1055) Allow reflecting on DebuggableAttribute on CoreRT (by [@MichalStrehovsky](https://github.com/MichalStrehovsky))
-* [#1057](https://github.com/dotnet/BenchmarkDotNet/pull/1057) CoreRT toolchain improvements (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1061](https://github.com/dotnet/BenchmarkDotNet/pull/1061) Proper cleanup on Ctrl+C/console Window exit (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1066](https://github.com/dotnet/BenchmarkDotNet/pull/1066) Add experimental support for .NET Core 3.0 WPF benchmarks (by [@adamsitnik](https://github.com/adamsitnik))
-
-## Commits (99)
-
-* [1fac9b](https://github.com/dotnet/BenchmarkDotNet/commit/1fac9b656d9aa3635e7c36f1b758027e3c2ec436) Postrelease update of v0.11.3 changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [40fae8](https://github.com/dotnet/BenchmarkDotNet/commit/40fae86553ac06c21f7974e633095f8488afc6fc) Support Nuget symbol server (#968) (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [69b01f](https://github.com/dotnet/BenchmarkDotNet/commit/69b01fb2bf21a35af56634f9840e9e78cab544b8) remove batch and explicitly enable build for master (#969) (by [@Ky7m](https://github.com/Ky7m))
-* [01992c](https://github.com/dotnet/BenchmarkDotNet/commit/01992c8f9619858891fe2f1f2e12b46f71abe0f8) better error messages for lack of Cli and invalid CoreRun path (by [@adamsitnik](https://github.com/adamsitnik))
-* [767e02](https://github.com/dotnet/BenchmarkDotNet/commit/767e0284a4e042eace97e409eb343916692e7f0d) sort enum parameters by value instead of name (#977), fixes #660 (by [@kayle](https://github.com/kayle))
-* [128e11](https://github.com/dotnet/BenchmarkDotNet/commit/128e118890b34935ba2ce56c2d56007c41c6f0a9) Better list of suggested benchmarks for wrong filter #834 (#957) (by [@morgan-kn](https://github.com/morgan-kn))
-* [c0910a](https://github.com/dotnet/BenchmarkDotNet/commit/c0910a9fcdde96431071087675ec7d2126c5db52) Fix NRE in BaselineRatioColumn.GetRatioStatistics, fixes #970 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [67b675](https://github.com/dotnet/BenchmarkDotNet/commit/67b675408996b27428729af7a6c6fc6f08560918) Fix TimeSpan calculations in DotNetCliCommand.AddPackages (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [847c27](https://github.com/dotnet/BenchmarkDotNet/commit/847c270db8dac927da730ca2d77ed95e116e27d1) Fix a few typos (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [6fb830](https://github.com/dotnet/BenchmarkDotNet/commit/6fb83099144462986bf9b9455c16bfd4a128e01e) ARM support (#979) (by [@adamsitnik](https://github.com/adamsitnik))
-* [410d14](https://github.com/dotnet/BenchmarkDotNet/commit/410d149c5cd8ad22aa5e541142add03a44547f8f) Detect .NET Core benchmark failures from LINQPad (#980), #975 (by [@Turnerj](https://github.com/Turnerj))
-* [138325](https://github.com/dotnet/BenchmarkDotNet/commit/13832524c29053d7eaccb862cbe507bbeb8a2fff) File names should be consistent across all OSes, fixes #981 (by [@adamsitnik](https://github.com/adamsitnik))
-* [add308](https://github.com/dotnet/BenchmarkDotNet/commit/add308d3554691593b071753a7f01fd988adfd8a) test fix for #981 (by [@adamsitnik](https://github.com/adamsitnik))
-* [77ed41](https://github.com/dotnet/BenchmarkDotNet/commit/77ed411bb391f6c36ef1001cd41833913b8d609b) expose OriginalValues and SortedValues in the Statistics type so they get exp... (by [@adamsitnik](https://github.com/adamsitnik))
-* [c0aac1](https://github.com/dotnet/BenchmarkDotNet/commit/c0aac17c323850b2519da7df7f0175ca5a0ce13a) More tests for FolderNameHelper (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [3497ae](https://github.com/dotnet/BenchmarkDotNet/commit/3497ae57ae9748f29f6ce01cc3092fc1cb0f7b55) Better message in MinIterationTimeAnalyser (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [91e16a](https://github.com/dotnet/BenchmarkDotNet/commit/91e16a9fa4e01b744c2a884e13b104990e525a7f) Fix duplication of IsLinqPad check (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [89255c](https://github.com/dotnet/BenchmarkDotNet/commit/89255c9fceb1b27c475a93d08c152349be4199e9) Refactoring xUnit tests to avoid non-serializable objects in MemberData (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [2cd06a](https://github.com/dotnet/BenchmarkDotNet/commit/2cd06aaab6351b46f0b5699728b1b9831f3f8d47) Give a warning when the [Benchmark] method is static (#985) (by [@Rizzen](https://github.com/Rizzen))
-* [5070af](https://github.com/dotnet/BenchmarkDotNet/commit/5070af4fac0299d6f27ce02a71f9093cf780f3c5) Fix NRE in MetricColumn (#986) (#987) (by [@qbit86](https://github.com/qbit86))
-* [17378d](https://github.com/dotnet/BenchmarkDotNet/commit/17378d69e4f24a27b232927fb6c307ca982fe17e) Fix typos (#991) (by [@0x6a62](https://github.com/0x6a62))
-* [2ce35a](https://github.com/dotnet/BenchmarkDotNet/commit/2ce35ac6c972f34003802f0b32111b41b94f5320) Fix path to logo in README (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [a20e4b](https://github.com/dotnet/BenchmarkDotNet/commit/a20e4bc832bdcccf8ea2e2d74aa0eb580ea8b500) always print the path, args and working dir of the auto-generated executable,... (by [@adamsitnik](https://github.com/adamsitnik))
-* [27dd87](https://github.com/dotnet/BenchmarkDotNet/commit/27dd870e196b1a9586cceb62bdd958f35a4d4dc5) CoreRunToolchain: when the file exists, overwrite it (by [@adamsitnik](https://github.com/adamsitnik))
-* [1b01f3](https://github.com/dotnet/BenchmarkDotNet/commit/1b01f372a8224ecd1c43ab97af926bbcc96b16db) Remove obsolete info from the docs (#997) (by [@Maximusya](https://github.com/Maximusya))
-* [299e1f](https://github.com/dotnet/BenchmarkDotNet/commit/299e1f4fa6d28d5a3428495361504c86bc011849) Synchronized benchmark output with the code in docs (#999) (by [@Maximusya](https://github.com/Maximusya))
-* [0da14b](https://github.com/dotnet/BenchmarkDotNet/commit/0da14b4d74c6e1ee51ce747fa267d74e5c7fe54e) Rephrase Notes section and fix markdown (#996) (by [@Maximusya](https://github.com/Maximusya))
-* [9e791f](https://github.com/dotnet/BenchmarkDotNet/commit/9e791f3cd7a77b70684acff875f6cdf56bbe756a) CoreRT toolchain update (#1001) (by [@adamsitnik](https://github.com/adamsitnik))
-* [04747a](https://github.com/dotnet/BenchmarkDotNet/commit/04747a34fb03f2752b51f27fc233d8672c82248b) Use only full names in the auto-generated code to avoid any possible conflict... (by [@adamsitnik](https://github.com/adamsitnik))
-* [f35465](https://github.com/dotnet/BenchmarkDotNet/commit/f354659bcfe4b043d69b7812cc69c63c26676da9) add unit test that prevents from adding using statements to the code, fixes #... (by [@adamsitnik](https://github.com/adamsitnik))
-* [fd0b8c](https://github.com/dotnet/BenchmarkDotNet/commit/fd0b8c03f089e490fcefd3aa14b4ff74167d7d95) Improve build error logging, increase the default timeout (by [@adamsitnik](https://github.com/adamsitnik))
-* [8276be](https://github.com/dotnet/BenchmarkDotNet/commit/8276be8bbec50c897a4b173971a0d6c154eb75b7) Changed TargetCount to IterationCount in docs (#1012) (by [@Sitiritis](https://github.com/Sitiritis))
-* [3c98da](https://github.com/dotnet/BenchmarkDotNet/commit/3c98da98407140420f383cbba359fc7f511949fc) Update IntroRatioSD.md (#1014) (by [@fredeil](https://github.com/fredeil))
-* [286996](https://github.com/dotnet/BenchmarkDotNet/commit/286996612933cbb4102479a33e0ac0f8aebc658d) Improve restore, build and publish projects - Fix for #1002 (#1013) (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [923b23](https://github.com/dotnet/BenchmarkDotNet/commit/923b23cbd380156d688f0010c434966db2cf1704) BenchmarkDotNet as global tool (#1006), fixes #213 (by [@CodeTherapist](https://github.com/CodeTherapist))
-* [7ef5f6](https://github.com/dotnet/BenchmarkDotNet/commit/7ef5f659ea92ccf355d06b576a5b505f3c3e1cf4) Introduce StoppingCriteria (#984) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5e4428](https://github.com/dotnet/BenchmarkDotNet/commit/5e44289541a51ebde9769510e2f4901971717600) make SortedValues internal property, don't export it! (by [@adamsitnik](https://github.com/adamsitnik))
-* [5c519f](https://github.com/dotnet/BenchmarkDotNet/commit/5c519fb19c10607139a88627b08f79f6dd00440f) Use .NET Standard 2.0 CommandLineParser, Update to net461 for NS2.0 support (... (by [@glennawatson](https://github.com/glennawatson))
-* [6ee21b](https://github.com/dotnet/BenchmarkDotNet/commit/6ee21bb6356f7199425edb788a6acd85aec95b7b) if we fail to do the full build, we try with --no-dependencies (by [@adamsitnik](https://github.com/adamsitnik))
-* [8d9714](https://github.com/dotnet/BenchmarkDotNet/commit/8d971412a8e3344a9fb7fda722db49dbdbb32709) Support machines without .NET DevPack, fix #1018 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [573566](https://github.com/dotnet/BenchmarkDotNet/commit/573566b70f0ff27572b9268002fe9748be4de6ea) Add support for mono AOT pass (#940) (by [@alexanderkyte](https://github.com/alexanderkyte))
-* [011c79](https://github.com/dotnet/BenchmarkDotNet/commit/011c794f00406ca6d67c38110b928bda06511dda) + InProcessEmitToolchain (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [862e6e](https://github.com/dotnet/BenchmarkDotNet/commit/862e6e3907a1e36c39e4b907393b4cd52beb1adb) InProcessEmitToolchain cleanup (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [252d7a](https://github.com/dotnet/BenchmarkDotNet/commit/252d7a700ac6935dbf57656f0c69782e28484e14) Fix StringCanBePassedToBenchmarkAsReadOnlySpan (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [7ec2f3](https://github.com/dotnet/BenchmarkDotNet/commit/7ec2f3f3c4601e8981933d4c54aabdf97f1270f1) Check if there's something wrong with RoslynToolchain on .Net Core (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [57acd6](https://github.com/dotnet/BenchmarkDotNet/commit/57acd6a4a47ec84f07000de11690818a2b512a90) No NOPs (thanks to @Warpten!) (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [bf362a](https://github.com/dotnet/BenchmarkDotNet/commit/bf362a8810a05f58dfb1465879ce574ddefbaaba) Diff now compares nops (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [aa9ff8](https://github.com/dotnet/BenchmarkDotNet/commit/aa9ff82e41f5174c4355d9f6dfdd86df80acaa42) + emit correct IL (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [351ca5](https://github.com/dotnet/BenchmarkDotNet/commit/351ca51f27644923fe05d74cb6a0b5a25ccebc9b) Ignore NOPs for ldarg too (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [fc530f](https://github.com/dotnet/BenchmarkDotNet/commit/fc530fc568b8d6dda89616b404f8eddfa7444963) Fix build after rebase (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [1577ba](https://github.com/dotnet/BenchmarkDotNet/commit/1577ba1ffe50cb838c4b3b1231d0464cc0c49e2e) MonoAotToolchain refactoring, post #940 (by [@adamsitnik](https://github.com/adamsitnik))
-* [6ccf45](https://github.com/dotnet/BenchmarkDotNet/commit/6ccf453aa19ca7f1ea5d5858cd05eacb4750468c) Improve diff disassembly (#1022) (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [ef090d](https://github.com/dotnet/BenchmarkDotNet/commit/ef090df48943ff6692aa83537b90d040d72d54f9) if we fail to do the full build, we try with --no-dependencies (for the publi... (by [@adamsitnik](https://github.com/adamsitnik))
-* [c69934](https://github.com/dotnet/BenchmarkDotNet/commit/c69934f50b0b170a3d84f827028cd10be75d50cd) Give a warning when the [Benchmark] method is static: handle some edge-cases,... (by [@adamsitnik](https://github.com/adamsitnik))
-* [935ead](https://github.com/dotnet/BenchmarkDotNet/commit/935ead0dd02f43594fe12b5ece355795a575face) use .NET 4.6.1 everywhere, we don't support 4.6 anymore. Cleanup after #992 (by [@adamsitnik](https://github.com/adamsitnik))
-* [20a011](https://github.com/dotnet/BenchmarkDotNet/commit/20a0110e06e2da9de68427729cda03381a4c9420) C# keywords are prohibited for benchmark names, print nice error message, fix... (by [@adamsitnik](https://github.com/adamsitnik))
-* [2aec75](https://github.com/dotnet/BenchmarkDotNet/commit/2aec75f0e9f3f9a75be60f08b2beada9a3c7064e) remove CustomCoreClrToolchain, it was causing too much trouble. We can run th... (by [@adamsitnik](https://github.com/adamsitnik))
-* [f10752](https://github.com/dotnet/BenchmarkDotNet/commit/f10752ace1bf4c5e4316c6f9b7b34ca25ac46c19) Duplicates handling for IConfig = big refactor, fixes #360, closes #464 and f... (by [@adamsitnik](https://github.com/adamsitnik))
-* [f9c8cc](https://github.com/dotnet/BenchmarkDotNet/commit/f9c8cc5b835a3635adf1606440f10873015f5058) Target .NET Standard 2.0 (#1032), apply a workaround for assembly binding red... (by [@adamsitnik](https://github.com/adamsitnik))
-* [aa1ded](https://github.com/dotnet/BenchmarkDotNet/commit/aa1ded5b805163b2fca1b7093f8e6fa7583afe10) Merge branch 'master' into tools (by [@adamsitnik](https://github.com/adamsitnik))
-* [ccee3e](https://github.com/dotnet/BenchmarkDotNet/commit/ccee3e8a1f111914bbbf0a4370ef8452f08431d0) Merge pull request #1033 from dotnet/tools (by [@adamsitnik](https://github.com/adamsitnik))
-* [1b9f9f](https://github.com/dotnet/BenchmarkDotNet/commit/1b9f9f579a40e351476ee12d5d796ec244ec1983) almost no warnings ;) (by [@adamsitnik](https://github.com/adamsitnik))
-* [3bd18f](https://github.com/dotnet/BenchmarkDotNet/commit/3bd18fc1fd84c70eedde1ced821df8777c710ec2) introduce ConfigOptions - an enum flag which make it easier to introduce new ... (by [@adamsitnik](https://github.com/adamsitnik))
-* [66c264](https://github.com/dotnet/BenchmarkDotNet/commit/66c2640e632c5f60ccd73e139924cccfcb740a61) reverting things that should not introduce problems but did... (by [@adamsitnik](https://github.com/adamsitnik))
-* [33eaeb](https://github.com/dotnet/BenchmarkDotNet/commit/33eaebbcc0c85bfe3cb9619fc12412a2f89bb98d) Merge branch 'master' into feature-inprocessemit (by [@adamsitnik](https://github.com/adamsitnik))
-* [a1df27](https://github.com/dotnet/BenchmarkDotNet/commit/a1df2783a1540f65c79175343ce65d0d8493d1f4) Merge pull request #921 from ig-sinicyn/feature-inprocessemit (by [@adamsitnik](https://github.com/adamsitnik))
-* [aac7a6](https://github.com/dotnet/BenchmarkDotNet/commit/aac7a69c97be1051bd98609bcd756f949e8e205d) Improve global tool (#1035) (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [c01bc5](https://github.com/dotnet/BenchmarkDotNet/commit/c01bc57151ae38c7b2ce57ed843d40bb705b2301) Remove InternalsVisibleTo for Samples application (#1036) (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [f6dbe4](https://github.com/dotnet/BenchmarkDotNet/commit/f6dbe4bdcda83456ccb18dc7aeaa59f4f5ae5d86) Change the name of the global tool (#1038) (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [11d8cb](https://github.com/dotnet/BenchmarkDotNet/commit/11d8cb73d8eda9436cc791f7a3e106064ea92c3f) Making the new InProcessEmitToolchain work after my recent refactor and .NET ... (by [@adamsitnik](https://github.com/adamsitnik))
-* [e935b5](https://github.com/dotnet/BenchmarkDotNet/commit/e935b5866c6c94b51013733a7429afa7f245b525) minor InProcess fix: diff now checks for implementation flags, (#1043) (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [da4128](https://github.com/dotnet/BenchmarkDotNet/commit/da4128f252ad61c696c7c0023898f4023878dd42) Merge pull request #1041 from dotnet/newInProcess (by [@adamsitnik](https://github.com/adamsitnik))
-* [82170f](https://github.com/dotnet/BenchmarkDotNet/commit/82170f86bf313810df96cdaf1eeb724e1f33be8d) if global cleanup throws, we should report the problem but don't rethrow beca... (by [@adamsitnik](https://github.com/adamsitnik))
-* [904ddd](https://github.com/dotnet/BenchmarkDotNet/commit/904dddc9bd37edb53ec7c3930d1a96d2aa064d9a) tests that ensure that when a benchmark throws the runner does not throw, fix... (by [@adamsitnik](https://github.com/adamsitnik))
-* [cbdf7b](https://github.com/dotnet/BenchmarkDotNet/commit/cbdf7b41e7d52ce6d4fe82806f880d307a645d4e) Use invariant culture for csc messages (#1042) (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [5215ee](https://github.com/dotnet/BenchmarkDotNet/commit/5215eeb39fab6cdaf6f698e78978d58f46acb82d) Display the number of benchmarks to run, fixes #1048 (by [@adamsitnik](https://github.com/adamsitnik))
-* [84cc3e](https://github.com/dotnet/BenchmarkDotNet/commit/84cc3e0dadcf2392698bdfdf558afa878b38585f) dotnet cli version update + reducing the number of long running tests (#1052)... (by [@adamsitnik](https://github.com/adamsitnik))
-* [1c431a](https://github.com/dotnet/BenchmarkDotNet/commit/1c431a9fb71141fa63479a53713029e3c3661b0b) read the process output in a thread safe way, fixes #1051 (#1053) (by [@adamsitnik](https://github.com/adamsitnik))
-* [41a367](https://github.com/dotnet/BenchmarkDotNet/commit/41a367bd6dddf827c118ffc6a10893d7be7d3726) update Travis Ubuntu image from 14.04 to 16.04 (by [@adamsitnik](https://github.com/adamsitnik))
-* [20744e](https://github.com/dotnet/BenchmarkDotNet/commit/20744eaa4f38622f5350b582ec4c44a906341db7) allow the user to choose the strategy from console line arguments (by [@adamsitnik](https://github.com/adamsitnik))
-* [190b9b](https://github.com/dotnet/BenchmarkDotNet/commit/190b9be0f4e1b1919943ae07c91dc2fbfd087fe0) Allow reflecting on DebuggableAttribute on CoreRT (#1055) (by [@MichalStrehovsky](https://github.com/MichalStrehovsky))
-* [9dd9e7](https://github.com/dotnet/BenchmarkDotNet/commit/9dd9e77ddc1327a10e732fe2c757cceeab5f1667) Ctlr+C: we should kill the entire process tree, not only for the benchmarks b... (by [@adamsitnik](https://github.com/adamsitnik))
-* [d4249f](https://github.com/dotnet/BenchmarkDotNet/commit/d4249f7e42da4f96fdea15eac611238a77b312f6) Disassembly diagnoser should be kept in a separate directory to avoid depende... (by [@adamsitnik](https://github.com/adamsitnik))
-* [0b83c9](https://github.com/dotnet/BenchmarkDotNet/commit/0b83c934e5f983ff2aa43c82e63d242216d330bf) CoreRT toolchain improvements (#1057) (by [@adamsitnik](https://github.com/adamsitnik))
-* [9bc8f3](https://github.com/dotnet/BenchmarkDotNet/commit/9bc8f3cdc4818b14ee4575574a1ca824088fd89c) 0.11.4 initial release notes (by [@adamsitnik](https://github.com/adamsitnik))
-* [13bb97](https://github.com/dotnet/BenchmarkDotNet/commit/13bb9727ff06adb57de750d4b37813ceba564eef) if the user provide a custom value, we should use it, post #1057 (by [@adamsitnik](https://github.com/adamsitnik))
-* [ea3036](https://github.com/dotnet/BenchmarkDotNet/commit/ea3036810ef60b483d766a097e6f3edfde28a834) fix a rare but really annoying bug where for some reason we were sometimes se... (by [@adamsitnik](https://github.com/adamsitnik))
-* [cf3f8c](https://github.com/dotnet/BenchmarkDotNet/commit/cf3f8c382a6aab8fbc5c7ce804ef7451a4fdfac7) Proper cleanup on Ctrl+C/console Window exit (#1061) (by [@adamsitnik](https://github.com/adamsitnik))
-* [61f563](https://github.com/dotnet/BenchmarkDotNet/commit/61f56318ba53d5ad4ef8ea6cf62ba8e77b65fbdb) Write the GitHub table format to the console by default, fixes #1062 (by [@adamsitnik](https://github.com/adamsitnik))
-* [87d281](https://github.com/dotnet/BenchmarkDotNet/commit/87d281d7dbf52036819efff52e6661e436648b73) StopOnFirstError must be respected (by [@adamsitnik](https://github.com/adamsitnik))
-* [413d31](https://github.com/dotnet/BenchmarkDotNet/commit/413d3133e70fa43725a35cd2bbf937d7bbf88da0) Add experimental support for .NET Core 3.0 WPF benchmarks (#1066), fixes #1065 (by [@adamsitnik](https://github.com/adamsitnik))
-* [69a8aa](https://github.com/dotnet/BenchmarkDotNet/commit/69a8aa51d823c6e3cf92a1fd252504d4b6d1bb3b) copy UseWindowsForms too (thanks @onovotny for pointing this out), post #1066 (by [@adamsitnik](https://github.com/adamsitnik))
-* [d3379e](https://github.com/dotnet/BenchmarkDotNet/commit/d3379e4bfb3ac808ca58b15bdc5b11900e96f54f) Bump DocFX version (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [423204](https://github.com/dotnet/BenchmarkDotNet/commit/4232047db349e4d8aadde5b3c6b7f3b3fc1800f8) Remove Version ComboBox in docs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [1a8826](https://github.com/dotnet/BenchmarkDotNet/commit/1a8826ba7ce30910cb7c6f527054957dc96b8284) Update build-and-pack.cmd (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [9068d6](https://github.com/dotnet/BenchmarkDotNet/commit/9068d6139455c480fd1c62959715a19f3450f720) Update copyrights in docs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [c0c2bf](https://github.com/dotnet/BenchmarkDotNet/commit/c0c2bfea2b30349cd28ddcf88a43504e543bc4d6) Update v0.11.4 changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [e26441](https://github.com/dotnet/BenchmarkDotNet/commit/e2644128b2a555571a0ddda701888f120c82d2e5) Highlight the first column separator in the console summary table (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [a704a4](https://github.com/dotnet/BenchmarkDotNet/commit/a704a4388828e28f953de8459c5e87ea845cb883) Set library version: 0.11.4 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Contributors (18)
-
-* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik))
-* Alexander Kyte ([@alexanderkyte](https://github.com/alexanderkyte))
-* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* Code Therapist ([@CodeTherapist](https://github.com/CodeTherapist))
-* Fredrik Eilertsen ([@fredeil](https://github.com/fredeil))
-* Glenn ([@glennawatson](https://github.com/glennawatson))
-* ig-sinicyn ([@ig-sinicyn](https://github.com/ig-sinicyn))
-* Igor Fesenko ([@Ky7m](https://github.com/Ky7m))
-* Irina Ananeva ([@morgan-kn](https://github.com/morgan-kn))
-* James Turner ([@Turnerj](https://github.com/Turnerj))
-* Jeff B. ([@0x6a62](https://github.com/0x6a62))
-* kayle ([@kayle](https://github.com/kayle))
-* Maksim Yakimets ([@Maximusya](https://github.com/Maximusya))
-* Mark Tkachenko ([@Rizzen](https://github.com/Rizzen))
-* Michal Strehovský ([@MichalStrehovsky](https://github.com/MichalStrehovsky))
-* Tymur Lysenko ([@Sitiritis](https://github.com/Sitiritis))
-* Viktor Ptitselov ([@qbit86](https://github.com/qbit86))
-* Wojciech Nagórski ([@WojciechNagorski](https://github.com/WojciechNagorski))
-
-Thank you very much!
-
diff --git a/docs/_changelog/details/v0.11.5.md b/docs/_changelog/details/v0.11.5.md
deleted file mode 100644
index 09fd2ce2b6..0000000000
--- a/docs/_changelog/details/v0.11.5.md
+++ /dev/null
@@ -1,108 +0,0 @@
-## Milestone details
-
-In the [v0.11.5](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.11.5) scope,
-16 issues were resolved and 16 pull requests were merged.
-This release includes 44 commits by 12 contributors.
-
-## Resolved issues (16)
-
-* [#68](https://github.com/dotnet/BenchmarkDotNet/issues/68) Power management
-* [#826](https://github.com/dotnet/BenchmarkDotNet/issues/826) MarkdownExporter.StackOverflow fails to indent jobs' runtime descriptions (assignee: [@alinasmirnova](https://github.com/alinasmirnova))
-* [#976](https://github.com/dotnet/BenchmarkDotNet/issues/976) System.NotSupportedException: Line must start with GC (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1020](https://github.com/dotnet/BenchmarkDotNet/issues/1020) Errors using undefined enum values as benchmark arguments (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1068](https://github.com/dotnet/BenchmarkDotNet/issues/1068) The csproj setting CopyLocalLockFileAssemblies is ignored
-* [#1070](https://github.com/dotnet/BenchmarkDotNet/issues/1070) System.InvalidOperationException: Sequence contains more than one matching element after 0.11.4 (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#1071](https://github.com/dotnet/BenchmarkDotNet/issues/1071) Enum flags results into compiler errors (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1073](https://github.com/dotnet/BenchmarkDotNet/issues/1073) The error message for users who want to Debug benchmarks is not clear (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1074](https://github.com/dotnet/BenchmarkDotNet/issues/1074) Results should be exported to a file with unique name
-* [#1079](https://github.com/dotnet/BenchmarkDotNet/issues/1079) Dont display the same Validation Error many times (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1086](https://github.com/dotnet/BenchmarkDotNet/issues/1086) XmlExporter.Full fails with StackOverflowException
-* [#1107](https://github.com/dotnet/BenchmarkDotNet/issues/1107) Unhandled Exception: System.InvalidOperationException: Benchmark method '' has incorrect signature. Method shouldn't have any arguments. (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#1109](https://github.com/dotnet/BenchmarkDotNet/issues/1109) Issue with DefaultOrderer
-* [#1110](https://github.com/dotnet/BenchmarkDotNet/issues/1110) DisassemblyDiagnoser assumes indentation uses spaces (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#1116](https://github.com/dotnet/BenchmarkDotNet/issues/1116) Use Median instead of Mean whe deducing Overhead (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#1119](https://github.com/dotnet/BenchmarkDotNet/issues/1119) MemoryDiagnoserAttribute on methods (assignee: [@Rizzen](https://github.com/Rizzen))
-
-## Merged pull requests (16)
-
-* [#952](https://github.com/dotnet/BenchmarkDotNet/pull/952) Implemented power-management, add docs (#68) (by [@MarekM25](https://github.com/MarekM25))
-* [#1080](https://github.com/dotnet/BenchmarkDotNet/pull/1080) Improved Environment Variables API, resolves #1069 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#1081](https://github.com/dotnet/BenchmarkDotNet/pull/1081) Shortify MemoryDiagnoser column titles (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#1082](https://github.com/dotnet/BenchmarkDotNet/pull/1082) Make it so that the code analysis settings are disabled. (by [@glennawatson](https://github.com/glennawatson))
-* [#1083](https://github.com/dotnet/BenchmarkDotNet/pull/1083) make it possible to Don't Overwrite Results, fixes #1074 (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1084](https://github.com/dotnet/BenchmarkDotNet/pull/1084) introduce BenchmarkDotNet.Annotations (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1088](https://github.com/dotnet/BenchmarkDotNet/pull/1088) Typo (by [@Stromberg90](https://github.com/Stromberg90))
-* [#1090](https://github.com/dotnet/BenchmarkDotNet/pull/1090) XmlExporter.Full fails (by [@daveMueller](https://github.com/daveMueller))
-* [#1093](https://github.com/dotnet/BenchmarkDotNet/pull/1093) make InProcessEmitToolchain the default one (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1096](https://github.com/dotnet/BenchmarkDotNet/pull/1096) move more simple Attributes to BenchmarkDotNet.Annotations (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1104](https://github.com/dotnet/BenchmarkDotNet/pull/1104) fix #826 (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [#1105](https://github.com/dotnet/BenchmarkDotNet/pull/1105) Just spell check (by [@sungam3r](https://github.com/sungam3r))
-* [#1108](https://github.com/dotnet/BenchmarkDotNet/pull/1108) Fix #1068 - Copy value of CopyLocalLockFileAssemblies (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#1112](https://github.com/dotnet/BenchmarkDotNet/pull/1112) Fixed event wire-up before Session acquisition (by [@jzabroski](https://github.com/jzabroski))
-* [#1122](https://github.com/dotnet/BenchmarkDotNet/pull/1122) Restrict MemoryDiagnoserAttribute usage to class (by [@Rizzen](https://github.com/Rizzen))
-* [#1126](https://github.com/dotnet/BenchmarkDotNet/pull/1126) Styling in docfx fashion (by [@robertmuehsig](https://github.com/robertmuehsig))
-
-## Commits (44)
-
-* [0a63e4](https://github.com/dotnet/BenchmarkDotNet/commit/0a63e456189e010968bb034605c646dea282d7ce) Postrelease update of v0.11.4 changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [f94616](https://github.com/dotnet/BenchmarkDotNet/commit/f9461690384209ca441adce4b25e820ceb2fd385) Fix namespace for JobTests (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [995e05](https://github.com/dotnet/BenchmarkDotNet/commit/995e053d14a61cdadc417149480f23ebf679bcb7) Support modern CPUs in ProcessorBrandStringHelper (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [f946ba](https://github.com/dotnet/BenchmarkDotNet/commit/f946baccc8f2a2f962568388a2459b9e8378944f) Repair custom orderers, fixes #1070 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [1d3783](https://github.com/dotnet/BenchmarkDotNet/commit/1d3783f4a8de1cf95bb6ca7317e55b39dc5db5f3) allow passing Enum Flags and undefined enum values as benchmarks arguments/pa... (by [@adamsitnik](https://github.com/adamsitnik))
-* [dfe9ca](https://github.com/dotnet/BenchmarkDotNet/commit/dfe9ca30e43d0fdc4f751eeafd4121794368d0ff) make sure that we can pass undefined enum values and the bug never comes back... (by [@adamsitnik](https://github.com/adamsitnik))
-* [76b467](https://github.com/dotnet/BenchmarkDotNet/commit/76b46767e925b8e1e5b25662c35aa0d53c8a876e) improve the error message when users try to run the benchmarks in Debug, fixe... (by [@adamsitnik](https://github.com/adamsitnik))
-* [98d9f8](https://github.com/dotnet/BenchmarkDotNet/commit/98d9f83adc9817b5f5a15b0f75a3e8efb7c3b18c) Dont display the same Validation Error many times, fixes #1079 (by [@adamsitnik](https://github.com/adamsitnik))
-* [03981c](https://github.com/dotnet/BenchmarkDotNet/commit/03981c5efeb6199be2fb09eec329ae980002051a) fix the unit test that I broke when I was fixing #1071 (by [@adamsitnik](https://github.com/adamsitnik))
-* [877aba](https://github.com/dotnet/BenchmarkDotNet/commit/877aba8b621b643ed3f2de22c3f63a3e035ab4d5) Throw exception about private benchmark method (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [e983cd](https://github.com/dotnet/BenchmarkDotNet/commit/e983cd3126e64f82fe59bc1bc45d1a870a615e87) Print some outlier values in OutliersAnalyser (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [b5d324](https://github.com/dotnet/BenchmarkDotNet/commit/b5d3246d466c7c3086a68d52b0c80aab97338c26) Shortify MemoryDiagnoser column titles (#1081) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [c5c4c4](https://github.com/dotnet/BenchmarkDotNet/commit/c5c4c4dab89c1842f06fe45fdddbdf3271255137) handle undefined negative enum values, #1020 (thanks @TylerBrinkley) (by [@adamsitnik](https://github.com/adamsitnik))
-* [2f273c](https://github.com/dotnet/BenchmarkDotNet/commit/2f273c067196d068d96d8debabe21f95b49fb10c) Improved Environment Variables API, resolves #1069 (#1080) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [ff2847](https://github.com/dotnet/BenchmarkDotNet/commit/ff284739a76576b68b69767f651b023f42624220) Implement FrequencyTests.ParseTest (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [5e25da](https://github.com/dotnet/BenchmarkDotNet/commit/5e25da8be81bf7e1f9cbab62f18e6a3ec9f93c0c) Make it so that the code analysis settings are disabled for compiled builds (... (by [@glennawatson](https://github.com/glennawatson))
-* [db701e](https://github.com/dotnet/BenchmarkDotNet/commit/db701e255950c333ca378517b460429d9b805740) make it possible to Don't Overwrite Results, fixes #1074 (#1083) (by [@adamsitnik](https://github.com/adamsitnik))
-* [a12d8c](https://github.com/dotnet/BenchmarkDotNet/commit/a12d8c7f8ed4fa73483dcb240c5f71a6fc367504) introduce BenchmarkDotNet.Annotations (#1084) (by [@adamsitnik](https://github.com/adamsitnik))
-* [dcc40a](https://github.com/dotnet/BenchmarkDotNet/commit/dcc40ac11a0e88c9c22abb281521f97078215bc1) Typo (#1088) (by [@Stromberg90](https://github.com/Stromberg90))
-* [2c392a](https://github.com/dotnet/BenchmarkDotNet/commit/2c392a1b9edc0b692c81475236aab5a681441402) XmlExporter.Full fails #1090 (by [@daveMueller](https://github.com/daveMueller))
-* [8968bb](https://github.com/dotnet/BenchmarkDotNet/commit/8968bbd10708b93f069c435393682b9c462a2c86) make InProcessEmitToolchain the default one (#1093) (by [@adamsitnik](https://github.com/adamsitnik))
-* [4c9136](https://github.com/dotnet/BenchmarkDotNet/commit/4c91368454b0cc8e06eebdff64c8d84f6746ceb0) move more simple Attributes to BenchmarkDotNet.Annotations (#1096) (by [@adamsitnik](https://github.com/adamsitnik))
-* [6f524f](https://github.com/dotnet/BenchmarkDotNet/commit/6f524fae432159fc17af44c240db0e7e851d8d10) Added extra output lines for jobs in test (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [27ed8a](https://github.com/dotnet/BenchmarkDotNet/commit/27ed8a53cb2df612b9262e01af572259ae9407d2) Logger with prefix works correctly with multiline input (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [a846b8](https://github.com/dotnet/BenchmarkDotNet/commit/a846b835b16c8153eb2371d604cf1400b5582b79) just spell check (#1105) (by [@sungam3r](https://github.com/sungam3r))
-* [a2da9a](https://github.com/dotnet/BenchmarkDotNet/commit/a2da9a44b8370eabbd5f6877c997a74b4af6e851) Reverted reporter change (by [@alinasmirnova](https://github.com/alinasmirnova))
-* [e1c9b9](https://github.com/dotnet/BenchmarkDotNet/commit/e1c9b9cbeaaf194d6a64fb8c6c9e5bac79bb531f) Merge pull request #1104 from alinasmirnova/master (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [e45adc](https://github.com/dotnet/BenchmarkDotNet/commit/e45adc1bc417d439e2523c51ff0c01d9751c2af4) Fix #1068 - Copy value of CopyLocalLockFileAssemblies (#1108) (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [2f823c](https://github.com/dotnet/BenchmarkDotNet/commit/2f823cfebba0bcfc6b90582722b16cff5e082d02) don't fail with exception if user has written something to output in GlobalCl... (by [@adamsitnik](https://github.com/adamsitnik))
-* [8bc2cc](https://github.com/dotnet/BenchmarkDotNet/commit/8bc2cc9761884fe07c09972c0715c974e3748949) Fixed event wire-up before Session acquisition (#1112) (by [@jzabroski](https://github.com/jzabroski))
-* [db3a8f](https://github.com/dotnet/BenchmarkDotNet/commit/db3a8fc0e74229f14ffcc532e3d655256e38d559) Better handling of benchmark with incorrect signature, fixes #1107 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [8a8e01](https://github.com/dotnet/BenchmarkDotNet/commit/8a8e01759a89cf52a4fac009fc9236db9f797977) Fix GlobalSetupAttributeMethodsMustHaveNoParameters (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [52eca7](https://github.com/dotnet/BenchmarkDotNet/commit/52eca7a626599fc1a2fab68b37c8aca77a65b6f2) Better disasm indentation, fixes #1110 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [d9901b](https://github.com/dotnet/BenchmarkDotNet/commit/d9901baacd89a212ee6d1e46fc6ec5dabc0e9d77) Use Median instead of Mean for overhead calculations, fixes #1116 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [1c1913](https://github.com/dotnet/BenchmarkDotNet/commit/1c1913a63c75136f2fbcb7e79b479e0224ffe25c) add dotnet/performance to the list of users (by [@adamsitnik](https://github.com/adamsitnik))
-* [e1d4d2](https://github.com/dotnet/BenchmarkDotNet/commit/e1d4d2f53dcd099ca9b19cdfabe6b9b011890e88) Restrict MemoryDiagnoserAttribute usage to class (#1122), fixes #1119 (by [@Rizzen](https://github.com/Rizzen))
-* [8aa6ad](https://github.com/dotnet/BenchmarkDotNet/commit/8aa6ade6d53015ae39fe48503f9c63be64828ce1) Implemented power-management, add docs (#68) (#952) (by [@MarekM25](https://github.com/MarekM25))
-* [9c6cad](https://github.com/dotnet/BenchmarkDotNet/commit/9c6cad9031acf1b24299085e4e53985a3349c9b1) Improve ApplyUserPowerPlan message (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [d12414](https://github.com/dotnet/BenchmarkDotNet/commit/d124143e6bf85094660cf3c6835c37192865c408) Initial v0.11.5 changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [1babcb](https://github.com/dotnet/BenchmarkDotNet/commit/1babcbded078e9574827abfa578397af42a704bf) styling in docfx fashion (by [@robertmuehsig](https://github.com/robertmuehsig))
-* [fb1286](https://github.com/dotnet/BenchmarkDotNet/commit/fb1286eddee885c205ac8d8ae34e03ec97b8b228) Add netstandard2.0 target framework in BenchmarkDotNet.Annotations (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [b7118e](https://github.com/dotnet/BenchmarkDotNet/commit/b7118e826929fe883b9ca1ff99537d4d0329f1a1) Add BenchmarkDotNet.Annotations in build-and-pack.cmd (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [8721a9](https://github.com/dotnet/BenchmarkDotNet/commit/8721a97ac56f4b7ddc1dd8f269165976f2e18ebb) Prepare v0.11.5 changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [31ea3d](https://github.com/dotnet/BenchmarkDotNet/commit/31ea3db2e24f21bfd86e11bd29b4477a127be535) Set library version: 0.11.5 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-
-## Contributors (12)
-
-* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik))
-* Alina Smirnova ([@alinasmirnova](https://github.com/alinasmirnova))
-* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* David Müller ([@daveMueller](https://github.com/daveMueller))
-* Glenn ([@glennawatson](https://github.com/glennawatson))
-* Ivan Maximov ([@sungam3r](https://github.com/sungam3r))
-* John Zabroski ([@jzabroski](https://github.com/jzabroski))
-* Marek Moraczyński ([@MarekM25](https://github.com/MarekM25))
-* Mark Tkachenko ([@Rizzen](https://github.com/Rizzen))
-* Robert Muehsig ([@robertmuehsig](https://github.com/robertmuehsig))
-* Strømberg ([@Stromberg90](https://github.com/Stromberg90))
-* Wojciech Nagórski ([@WojciechNagorski](https://github.com/WojciechNagorski))
-
-Thank you very much!
-
diff --git a/docs/_changelog/details/v0.12.0.md b/docs/_changelog/details/v0.12.0.md
deleted file mode 100644
index d3482a4657..0000000000
--- a/docs/_changelog/details/v0.12.0.md
+++ /dev/null
@@ -1,255 +0,0 @@
-## Milestone details
-
-In the [v0.12.0](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.12.0) scope,
-44 issues were resolved and 56 pull requests were merged.
-This release includes 110 commits by 25 contributors.
-
-## Resolved issues (44)
-
-* [#198](https://github.com/dotnet/BenchmarkDotNet/issues/198) [Feature request] No logger for benchmark run? (assignee: [@CodeTherapist](https://github.com/CodeTherapist))
-* [#311](https://github.com/dotnet/BenchmarkDotNet/issues/311) How to debug benchmarks that fail with exception on file system access operations (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#457](https://github.com/dotnet/BenchmarkDotNet/issues/457) Track Native Memory Allocations and more informations with our ETW Memory Diagnoser
-* [#600](https://github.com/dotnet/BenchmarkDotNet/issues/600) Scaling issue
-* [#723](https://github.com/dotnet/BenchmarkDotNet/issues/723) MemoryDiagnoser should include memory allocated by all Threads that were live during benchmark execution (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#995](https://github.com/dotnet/BenchmarkDotNet/issues/995) Running benchmark fails when targeting netcoreapp2.2 (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1028](https://github.com/dotnet/BenchmarkDotNet/issues/1028) Add new template for "dotnet new benchmark" (assignee: [@CodeTherapist](https://github.com/CodeTherapist))
-* [#1072](https://github.com/dotnet/BenchmarkDotNet/issues/1072) EtwProfiler exports trace file only for a single runtime when Runtimes are controlled via attributes (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1106](https://github.com/dotnet/BenchmarkDotNet/issues/1106) Allow user defined namespace filter for InliningDiagnoser
-* [#1111](https://github.com/dotnet/BenchmarkDotNet/issues/1111) Change the format of printed Full .NET Framework Version (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1115](https://github.com/dotnet/BenchmarkDotNet/issues/1115) Running using dotnet benchmark uses wrong core runtime
-* [#1132](https://github.com/dotnet/BenchmarkDotNet/issues/1132) The power management feature extension
-* [#1134](https://github.com/dotnet/BenchmarkDotNet/issues/1134) StreamLogger is not properly flushed on shutdown (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#1135](https://github.com/dotnet/BenchmarkDotNet/issues/1135) The default file logger and summary title are out of sync (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1137](https://github.com/dotnet/BenchmarkDotNet/issues/1137) [Discussion] Improve search experience in the documentation
-* [#1144](https://github.com/dotnet/BenchmarkDotNet/issues/1144) Incorrect CPU info for .NET Core applications
-* [#1146](https://github.com/dotnet/BenchmarkDotNet/issues/1146) Only the first of multiple custom columns is included in the summary table (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#1147](https://github.com/dotnet/BenchmarkDotNet/issues/1147) Update benchmark switcher instructions to work on Linux (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#1149](https://github.com/dotnet/BenchmarkDotNet/issues/1149) Ambiguous hour component in log file name timestamp (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#1152](https://github.com/dotnet/BenchmarkDotNet/issues/1152) Failed to test Roslyn. (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1153](https://github.com/dotnet/BenchmarkDotNet/issues/1153) Use GC.GetTotalAllocatedBytes when available in MemoryDiagnoser (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1154](https://github.com/dotnet/BenchmarkDotNet/issues/1154) Add a ConcurrencyDiagnoser? (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1156](https://github.com/dotnet/BenchmarkDotNet/issues/1156) Crash when BenchmarkDotNet.Diagnostics.Windows.Session.GetFilePath throws NRE (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1158](https://github.com/dotnet/BenchmarkDotNet/issues/1158) 🔍 Improving search on docs with Algolia's DocSearch
-* [#1162](https://github.com/dotnet/BenchmarkDotNet/issues/1162) Incorrect value of BenchmarkDotNet.Toolchains.DotNetCli.NetCoreAppSettings.Default
-* [#1168](https://github.com/dotnet/BenchmarkDotNet/issues/1168) Consider using default value instead of hardcoded '-' in MetricColumn.GetValue()
-* [#1179](https://github.com/dotnet/BenchmarkDotNet/issues/1179) Add System.Buffers.ArrayPoolEventSource to the list of default .NET Providers of EtwProfiler (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1181](https://github.com/dotnet/BenchmarkDotNet/issues/1181) Log shows a wrong name for plot images
-* [#1182](https://github.com/dotnet/BenchmarkDotNet/issues/1182) Benchingmarking .NET 4.8 Causes Errors
-* [#1183](https://github.com/dotnet/BenchmarkDotNet/issues/1183) Plots of benchmarks without params have a double dash (--) in the name
-* [#1186](https://github.com/dotnet/BenchmarkDotNet/issues/1186) Add support for --runtimes net48 (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1187](https://github.com/dotnet/BenchmarkDotNet/issues/1187) When user uses --packages $path, the $path should be sent to dotnet build command as well (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1194](https://github.com/dotnet/BenchmarkDotNet/issues/1194) RunAll with ToolChains (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1195](https://github.com/dotnet/BenchmarkDotNet/issues/1195) LatestCoreRtVersionIsSupported fails on Mac Os
-* [#1202](https://github.com/dotnet/BenchmarkDotNet/issues/1202) BenchmarkDotNet Not Recognizing CPU
-* [#1220](https://github.com/dotnet/BenchmarkDotNet/issues/1220) [Docs] RScript / R_HOME setup
-* [#1235](https://github.com/dotnet/BenchmarkDotNet/issues/1235) NativeMemoryProfiler exception (assignee: [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#1236](https://github.com/dotnet/BenchmarkDotNet/issues/1236) Rework new API for target runtimes (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1241](https://github.com/dotnet/BenchmarkDotNet/issues/1241) Can BenchmarkDotNet be enabled for LINQPad 6? (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1269](https://github.com/dotnet/BenchmarkDotNet/issues/1269) Unable to show full param string in the report (assignee: [@adamsitnik](https://github.com/adamsitnik))
-* [#1280](https://github.com/dotnet/BenchmarkDotNet/issues/1280) Improvement in memory statistics (assignee: [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#1285](https://github.com/dotnet/BenchmarkDotNet/issues/1285) Issue with .Net Core version 3.0
-* [#1289](https://github.com/dotnet/BenchmarkDotNet/issues/1289) How to config to not save .log files?
-* [#1291](https://github.com/dotnet/BenchmarkDotNet/issues/1291) MemoryDiagnoser reports weird results for .NET Core 3.0
-
-## Merged pull requests (56)
-
-* [#1044](https://github.com/dotnet/BenchmarkDotNet/pull/1044) Add "dotnet new" benchmark project template (by [@CodeTherapist](https://github.com/CodeTherapist))
-* [#1114](https://github.com/dotnet/BenchmarkDotNet/pull/1114) simplify the reported Full .NET Framework version, fixes 1111 (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1123](https://github.com/dotnet/BenchmarkDotNet/pull/1123) + InProcessNoEmitToolchain (obsoletes the InProcessToolchain) (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [#1129](https://github.com/dotnet/BenchmarkDotNet/pull/1129) Consume CoreRT from the new NuGet feed (by [@MichalStrehovsky](https://github.com/MichalStrehovsky))
-* [#1130](https://github.com/dotnet/BenchmarkDotNet/pull/1130) allow namespace filtering for InliningDiagnoser (#1106) (by [@MarekM25](https://github.com/MarekM25))
-* [#1131](https://github.com/dotnet/BenchmarkDotNet/pull/1131) NativeMemoryDiagnoser (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#1139](https://github.com/dotnet/BenchmarkDotNet/pull/1139) Power-Management extension (#1132) (by [@MarekM25](https://github.com/MarekM25))
-* [#1145](https://github.com/dotnet/BenchmarkDotNet/pull/1145) Added workaround to fix incorrect CPU info when using wmic (by [@YohDeadfall](https://github.com/YohDeadfall))
-* [#1148](https://github.com/dotnet/BenchmarkDotNet/pull/1148) Improve search experience in the documentation (by [@s-pace](https://github.com/s-pace))
-* [#1155](https://github.com/dotnet/BenchmarkDotNet/pull/1155) Use new .NET Core 3.0 API to get the total number of allocated bytes for all threads (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1161](https://github.com/dotnet/BenchmarkDotNet/pull/1161) Warn the user when benchmark baseline value is too close to zero and the columns derived from BaselineCustomColumn cannot be computed (by [@mhmd-azeez](https://github.com/mhmd-azeez))
-* [#1163](https://github.com/dotnet/BenchmarkDotNet/pull/1163) Make netcoreapp2.1 default (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1169](https://github.com/dotnet/BenchmarkDotNet/pull/1169) Fix: broken link in readme.md (by [@Ant-hem](https://github.com/Ant-hem))
-* [#1173](https://github.com/dotnet/BenchmarkDotNet/pull/1173) Updated index.md and fixed Relative performance url (by [@sergey-litvinov](https://github.com/sergey-litvinov))
-* [#1175](https://github.com/dotnet/BenchmarkDotNet/pull/1175) Added information about what a Gen X column means (by [@jigargandhi](https://github.com/jigargandhi))
-* [#1180](https://github.com/dotnet/BenchmarkDotNet/pull/1180) Update docstring for IterationSetup/IterationCleanup (by [@billwert](https://github.com/billwert))
-* [#1185](https://github.com/dotnet/BenchmarkDotNet/pull/1185) Invalid arg passing in StreamLogger constructor (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [#1188](https://github.com/dotnet/BenchmarkDotNet/pull/1188) Enforce the users to provide full target framework moniker when using attributes to define multiple runtime jobs (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1189](https://github.com/dotnet/BenchmarkDotNet/pull/1189) Update HtmlExporter.cs (by [@chuuddo](https://github.com/chuuddo))
-* [#1196](https://github.com/dotnet/BenchmarkDotNet/pull/1196) Update Mac Os for Travis CI (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#1199](https://github.com/dotnet/BenchmarkDotNet/pull/1199) Rename OutlierMode values (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [#1201](https://github.com/dotnet/BenchmarkDotNet/pull/1201) print benchmark process id to the output (better profiler user story) (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1203](https://github.com/dotnet/BenchmarkDotNet/pull/1203) Easier introduction of new benchmarks (by [@Scooletz](https://github.com/Scooletz))
-* [#1204](https://github.com/dotnet/BenchmarkDotNet/pull/1204) Fix casing typo (by [@antondahlin](https://github.com/antondahlin))
-* [#1206](https://github.com/dotnet/BenchmarkDotNet/pull/1206) add *.fsproj to the list of supported project types (by [@JaggerJo](https://github.com/JaggerJo))
-* [#1208](https://github.com/dotnet/BenchmarkDotNet/pull/1208) Support of --profiler NativeMemory command line argument (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#1209](https://github.com/dotnet/BenchmarkDotNet/pull/1209) Sorting examples list and adding missing pages (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#1212](https://github.com/dotnet/BenchmarkDotNet/pull/1212) Plots with a double dash (--) in the names (#1183) (by [@marcnet80](https://github.com/marcnet80))
-* [#1213](https://github.com/dotnet/BenchmarkDotNet/pull/1213) print full architecture name (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1214](https://github.com/dotnet/BenchmarkDotNet/pull/1214) Add documentation to NativeMemoryDiagnoser (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#1217](https://github.com/dotnet/BenchmarkDotNet/pull/1217) Log shows a wrong name for plot images #1181 (by [@marcnet80](https://github.com/marcnet80))
-* [#1218](https://github.com/dotnet/BenchmarkDotNet/pull/1218) NativeMemoryProfiler -add count of allocated object (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#1219](https://github.com/dotnet/BenchmarkDotNet/pull/1219) Add links to blogs. (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#1222](https://github.com/dotnet/BenchmarkDotNet/pull/1222) Enhance rscript location (by [@tebeco](https://github.com/tebeco))
-* [#1225](https://github.com/dotnet/BenchmarkDotNet/pull/1225) Documentation: Fix some typos in the documentation (by [@MSeifert04](https://github.com/MSeifert04))
-* [#1227](https://github.com/dotnet/BenchmarkDotNet/pull/1227) Threading Diagnoser (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1228](https://github.com/dotnet/BenchmarkDotNet/pull/1228) Support IEnumerable as benchmark argument (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1230](https://github.com/dotnet/BenchmarkDotNet/pull/1230) further runtime detection improvements (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1231](https://github.com/dotnet/BenchmarkDotNet/pull/1231) Fix iteration cleanup bug (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1232](https://github.com/dotnet/BenchmarkDotNet/pull/1232) Fixed dots at the end (not used in other places) (by [@cincuranet](https://github.com/cincuranet))
-* [#1233](https://github.com/dotnet/BenchmarkDotNet/pull/1233) try to read .NET Core version from all available information (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1237](https://github.com/dotnet/BenchmarkDotNet/pull/1237) The null ArtifactsPath value causes exception for all EtwProfiler (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#1239](https://github.com/dotnet/BenchmarkDotNet/pull/1239) Add using statement to sample snippet (by [@b8adamson](https://github.com/b8adamson))
-* [#1240](https://github.com/dotnet/BenchmarkDotNet/pull/1240) Amend SummaryStyle to support visualization of '0' in reports (by [@sleemer](https://github.com/sleemer))
-* [#1245](https://github.com/dotnet/BenchmarkDotNet/pull/1245) LINQPad 6 support using InProcessEmitToolchain (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1252](https://github.com/dotnet/BenchmarkDotNet/pull/1252) Add possibility to disable the log file (by [@CodeTherapist](https://github.com/CodeTherapist))
-* [#1255](https://github.com/dotnet/BenchmarkDotNet/pull/1255) Update Build Tools to use .NET Core SDK to 3.0.100 (by [@CodeTherapist](https://github.com/CodeTherapist))
-* [#1257](https://github.com/dotnet/BenchmarkDotNet/pull/1257) Task remove unused nuget packages (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#1259](https://github.com/dotnet/BenchmarkDotNet/pull/1259) Task remove trailing whitespace (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#1260](https://github.com/dotnet/BenchmarkDotNet/pull/1260) Fix ca1825 rule - Avoid zero-length array allocations (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#1261](https://github.com/dotnet/BenchmarkDotNet/pull/1261) Fix CA2000 - Add missing using (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#1265](https://github.com/dotnet/BenchmarkDotNet/pull/1265) make it possible to configure MaxParamterColumnWidth (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1268](https://github.com/dotnet/BenchmarkDotNet/pull/1268) Fix compilation error with post v3.3.1 Roslyn (by [@stanciuadrian](https://github.com/stanciuadrian))
-* [#1277](https://github.com/dotnet/BenchmarkDotNet/pull/1277) change the runtimes API (by [@adamsitnik](https://github.com/adamsitnik))
-* [#1279](https://github.com/dotnet/BenchmarkDotNet/pull/1279) Improve documentation for version 0.12.0 (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-* [#1281](https://github.com/dotnet/BenchmarkDotNet/pull/1281) Print GC and threading stats only if needed (by [@WojciechNagorski](https://github.com/WojciechNagorski))
-
-## Commits (110)
-
-* [881c6d](https://github.com/dotnet/BenchmarkDotNet/commit/881c6d9911ec80aef25f611c73cc00120b088d65) Postrelease update of v0.11.5 changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [a2bddf](https://github.com/dotnet/BenchmarkDotNet/commit/a2bddf3f545f4945f8c6ffc7150e8826af60d305) Fix release date for v0.11.5 in changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [c0c91a](https://github.com/dotnet/BenchmarkDotNet/commit/c0c91a4f7ed52d193eab3e3e60dd0cc74d33c5f4) Consume CoreRT from the new NuGet feed (#1129) (by [@MichalStrehovsky](https://github.com/MichalStrehovsky))
-* [40dcab](https://github.com/dotnet/BenchmarkDotNet/commit/40dcab26f81e416b10b2635caa187f453fc4e7fb) allow namespace filtering for InliningDiagnoser (#1106) (#1130), fixes #1106 (by [@MarekM25](https://github.com/MarekM25))
-* [12fdbe](https://github.com/dotnet/BenchmarkDotNet/commit/12fdbe20430b534bb390d758df821e5b437245d9) + InProcessNoEmitToolchain (#1123) (by [@ig-sinicyn](https://github.com/ig-sinicyn))
-* [62d6af](https://github.com/dotnet/BenchmarkDotNet/commit/62d6af57dd0a9917e3b96d58a6e074430368c36b) Bump docfx version to 2.42.1 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [40901c](https://github.com/dotnet/BenchmarkDotNet/commit/40901c154e1a545536950ed372e6d5004731afc0) Add sitemap generation in docfx.json (see #1137) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [04ec20](https://github.com/dotnet/BenchmarkDotNet/commit/04ec20b5e0c0a514e8d158684864e4f9934ae8cc) add Guid support to code templates (by [@adamsitnik](https://github.com/adamsitnik))
-* [4e9eb4](https://github.com/dotnet/BenchmarkDotNet/commit/4e9eb4335eee05a95a3766f2c81ae260508021af) Better precision calculation in SummaryTable (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [df6f91](https://github.com/dotnet/BenchmarkDotNet/commit/df6f915886788cadd70d8f43c4d9873c1ad9f1d1) Added workaround to fix incorrect CPU info when using wmic (#1145) (by [@YohDeadfall](https://github.com/YohDeadfall))
-* [9065c7](https://github.com/dotnet/BenchmarkDotNet/commit/9065c7305e00881b11d31606a698fda08dc30a7d) Make ids for tag columns unique, fixes #1146 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [527c95](https://github.com/dotnet/BenchmarkDotNet/commit/527c953bb2d46c73cad07342367f79fa52e7bbfe) Improve AskUser prompt message, fixes #1147 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [45253c](https://github.com/dotnet/BenchmarkDotNet/commit/45253c98d6e1bc75e83735f831e27ef625d6722f) Flush custom loggers at the end of benchmark session, fix #1134 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [21175b](https://github.com/dotnet/BenchmarkDotNet/commit/21175bf09e62c044f11e8390ba4c27fb0fc987f4) Make log file datetime format 24-hour, fix #1149 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin))
-* [0dfa37](https://github.com/dotnet/BenchmarkDotNet/commit/0dfa37efbba24f1384f2c9726f2dcce30827bc26) Power-Management extension (#1132) (#1139) (by [@MarekM25](https://github.com/MarekM25))
-* [f54055](https://github.com/dotnet/BenchmarkDotNet/commit/f54055a23bbf8490499166ea90947c966619c26c) Use new .NET Core 3.0 API to get the total number of allocated bytes for all ... (by [@adamsitnik](https://github.com/adamsitnik))
-* [aa17ec](https://github.com/dotnet/BenchmarkDotNet/commit/aa17ecc1ef94216e63532a2bb18fa6bac6145f02) improve the output path of .etl files produced by EtwProfiler, fixes #1156, f... (by [@adamsitnik](https://github.com/adamsitnik))
-* [ec296d](https://github.com/dotnet/BenchmarkDotNet/commit/ec296dc45de798f7407852d5ab7febe2b457eca4) make ArgumentsSource support IEnumerable
@@ -38,6 +36,11 @@
+
+
+ $COPIEDSETTINGS$
+
+
$RUNTIMESETTINGS$
diff --git a/src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt b/src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt
index 8ba013fdac..1db40072d1 100644
--- a/src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt
+++ b/src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt
@@ -1,4 +1,12 @@
+
+ $CSPROJPATH$
+ $([System.IO.Path]::ChangeExtension('$(OriginalCSProjPath)', '.Mono.props'))
+ $([System.IO.Path]::ChangeExtension('$(OriginalCSProjPath)', '.Mono.targets'))
+
+
+
+
Exe
bin
@@ -10,6 +18,8 @@
$PROGRAMNAME$
false
true
+ BenchmarkDotNet.Autogenerated.UniqueProgramName
+ true
@@ -24,6 +34,10 @@
+
+ $COPIEDSETTINGS$
+
+
@@ -70,4 +84,5 @@
+
diff --git a/src/BenchmarkDotNet/Templates/WasmCsProj.txt b/src/BenchmarkDotNet/Templates/WasmCsProj.txt
index 54f137b958..1910911fe0 100644
--- a/src/BenchmarkDotNet/Templates/WasmCsProj.txt
+++ b/src/BenchmarkDotNet/Templates/WasmCsProj.txt
@@ -25,7 +25,7 @@
true
false
false
- $COPIEDSETTINGS$
+ BenchmarkDotNet.Autogenerated.UniqueProgramName
@@ -38,6 +38,10 @@
+
+ $COPIEDSETTINGS$
+
+
PrepareForWasmBuild
diff --git a/src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs b/src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs
index ce4811cb52..d732275d95 100644
--- a/src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs
+++ b/src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs
@@ -6,6 +6,7 @@
using System.Linq;
using System.Reflection;
using System.Text;
+using System.Xml;
using BenchmarkDotNet.Characteristics;
using BenchmarkDotNet.Extensions;
using BenchmarkDotNet.Helpers;
@@ -22,8 +23,19 @@ public class CsProjGenerator : DotNetCliGenerator, IEquatable
{
private const string DefaultSdkName = "Microsoft.NET.Sdk";
- private static readonly ImmutableArray SettingsWeWantToCopy =
- new[] { "NetCoreAppImplicitPackageVersion", "RuntimeFrameworkVersion", "PackageTargetFallback", "LangVersion", "UseWpf", "UseWindowsForms", "CopyLocalLockFileAssemblies", "PreserveCompilationContext", "UserSecretsId", "EnablePreviewFeatures" }.ToImmutableArray();
+ private static readonly ImmutableArray SettingsWeWantToCopy = new[]
+ {
+ "NetCoreAppImplicitPackageVersion",
+ "RuntimeFrameworkVersion",
+ "PackageTargetFallback",
+ "LangVersion",
+ "UseWpf",
+ "UseWindowsForms",
+ "CopyLocalLockFileAssemblies",
+ "PreserveCompilationContext",
+ "UserSecretsId",
+ "EnablePreviewFeatures"
+ }.ToImmutableArray();
public string RuntimeFrameworkVersion { get; }
@@ -57,24 +69,23 @@ protected override void GenerateProject(BuildPartition buildPartition, Artifacts
var benchmark = buildPartition.RepresentativeBenchmarkCase;
var projectFile = GetProjectFilePath(benchmark.Descriptor.Type, logger);
- using (var file = new StreamReader(File.OpenRead(projectFile.FullName)))
- {
- var (customProperties, sdkName) = GetSettingsThatNeedsToBeCopied(file, projectFile);
-
- var content = new StringBuilder(ResourceHelper.LoadTemplate("CsProj.txt"))
- .Replace("$PLATFORM$", buildPartition.Platform.ToConfig())
- .Replace("$CODEFILENAME$", Path.GetFileName(artifactsPaths.ProgramCodePath))
- .Replace("$CSPROJPATH$", projectFile.FullName)
- .Replace("$TFM$", TargetFrameworkMoniker)
- .Replace("$PROGRAMNAME$", artifactsPaths.ProgramName)
- .Replace("$RUNTIMESETTINGS$", GetRuntimeSettings(benchmark.Job.Environment.Gc, buildPartition.Resolver))
- .Replace("$COPIEDSETTINGS$", customProperties)
- .Replace("$CONFIGURATIONNAME$", buildPartition.BuildConfiguration)
- .Replace("$SDKNAME$", sdkName)
- .ToString();
-
- File.WriteAllText(artifactsPaths.ProjectFilePath, content);
- }
+ var xmlDoc = new XmlDocument();
+ xmlDoc.Load(projectFile.FullName);
+ var (customProperties, sdkName) = GetSettingsThatNeedToBeCopied(xmlDoc, projectFile);
+
+ var content = new StringBuilder(ResourceHelper.LoadTemplate("CsProj.txt"))
+ .Replace("$PLATFORM$", buildPartition.Platform.ToConfig())
+ .Replace("$CODEFILENAME$", Path.GetFileName(artifactsPaths.ProgramCodePath))
+ .Replace("$CSPROJPATH$", projectFile.FullName)
+ .Replace("$TFM$", TargetFrameworkMoniker)
+ .Replace("$PROGRAMNAME$", artifactsPaths.ProgramName)
+ .Replace("$RUNTIMESETTINGS$", GetRuntimeSettings(benchmark.Job.Environment.Gc, buildPartition.Resolver))
+ .Replace("$COPIEDSETTINGS$", customProperties)
+ .Replace("$CONFIGURATIONNAME$", buildPartition.BuildConfiguration)
+ .Replace("$SDKNAME$", sdkName)
+ .ToString();
+
+ File.WriteAllText(artifactsPaths.ProjectFilePath, content);
}
///
@@ -97,45 +108,134 @@ protected virtual string GetRuntimeSettings(GcMode gcMode, IResolver resolver)
// the host project or one of the .props file that it imports might contain some custom settings that needs to be copied, sth like
// 2.0.0-beta-001607-00
// 2.0.0-beta-001607-00
- internal (string customProperties, string sdkName) GetSettingsThatNeedsToBeCopied(TextReader streamReader, FileInfo projectFile)
+ internal (string customProperties, string sdkName) GetSettingsThatNeedToBeCopied(XmlDocument xmlDoc, FileInfo projectFile)
{
if (!string.IsNullOrEmpty(RuntimeFrameworkVersion)) // some power users knows what to configure, just do it and copy nothing more
- return ($"{RuntimeFrameworkVersion}", DefaultSdkName);
+ {
+ return (@$"
+ {RuntimeFrameworkVersion}
+", DefaultSdkName);
+ }
+
+ XmlElement projectElement = xmlDoc.DocumentElement;
+ // custom SDKs are not added for non-netcoreapp apps (like net471), so when the TFM != netcoreapp we dont parse "
+ string sdkName = null;
+ if (TargetFrameworkMoniker.StartsWith("netcoreapp", StringComparison.InvariantCultureIgnoreCase))
+ {
+ foreach (XmlElement importElement in projectElement.GetElementsByTagName("Import"))
+ {
+ sdkName = importElement.GetAttribute("Sdk");
+ if (!string.IsNullOrEmpty(sdkName))
+ {
+ break;
+ }
+ }
+ }
+ if (string.IsNullOrEmpty(sdkName))
+ {
+ sdkName = projectElement.GetAttribute("Sdk");
+ }
+ // If Sdk isn't an attribute on the Project element, it could be a child element.
+ if (string.IsNullOrEmpty(sdkName))
+ {
+ foreach (XmlElement sdkElement in projectElement.GetElementsByTagName("Sdk"))
+ {
+ sdkName = sdkElement.GetAttribute("Name");
+ if (string.IsNullOrEmpty(sdkName))
+ {
+ continue;
+ }
+ string version = sdkElement.GetAttribute("Version");
+ // Version is optional
+ if (!string.IsNullOrEmpty(version))
+ {
+ sdkName += $"/{version}";
+ }
+ break;
+ }
+ }
+ if (string.IsNullOrEmpty(sdkName))
+ {
+ sdkName = DefaultSdkName;
+ }
+
+ XmlDocument itemGroupsettings = null;
+ XmlDocument propertyGroupSettings = null;
- var customProperties = new StringBuilder();
- var sdkName = DefaultSdkName;
+ GetSettingsThatNeedToBeCopied(projectElement, ref itemGroupsettings, ref propertyGroupSettings, projectFile);
- string line;
- while ((line = streamReader.ReadLine()) != null)
+ List customSettings = new List(2);
+ if (itemGroupsettings != null)
{
- var trimmedLine = line.Trim();
+ customSettings.Add(GetIndentedXmlString(itemGroupsettings));
+ }
+ if (propertyGroupSettings != null)
+ {
+ customSettings.Add(GetIndentedXmlString(propertyGroupSettings));
+ }
- foreach (string setting in SettingsWeWantToCopy)
- if (trimmedLine.Contains(setting))
- customProperties.AppendLine(trimmedLine);
+ return (string.Join(Environment.NewLine + Environment.NewLine, customSettings), sdkName);
+ }
- if (trimmedLine.StartsWith("
- var directoryName = projectFile.DirectoryName ?? throw new DirectoryNotFoundException(projectFile.DirectoryName);
- string absolutePath = File.Exists(propsFilePath)
- ? propsFilePath // absolute path or relative to current dir
- : Path.Combine(directoryName, propsFilePath); // relative to csproj
-
- if (File.Exists(absolutePath))
- using (var importedFile = new StreamReader(File.OpenRead(absolutePath)))
- customProperties.Append(GetSettingsThatNeedsToBeCopied(importedFile, new FileInfo(absolutePath)).customProperties);
+ var importXmlDoc = new XmlDocument();
+ importXmlDoc.Load(absolutePath);
+ GetSettingsThatNeedToBeCopied(importXmlDoc.DocumentElement, ref itemGroupsettings, ref propertyGroupSettings, projectFile);
}
+ }
+ }
- // custom SDKs are not added for non-netcoreapp apps (like net471), so when the TFM != netcoreapp we dont parse "
- if (trimmedLine.StartsWith("
diff --git a/src/BenchmarkDotNet/Toolchains/DotNetCli/DotNetCliCommand.cs b/src/BenchmarkDotNet/Toolchains/DotNetCli/DotNetCliCommand.cs
index bdcafc06e2..31546d3112 100644
--- a/src/BenchmarkDotNet/Toolchains/DotNetCli/DotNetCliCommand.cs
+++ b/src/BenchmarkDotNet/Toolchains/DotNetCli/DotNetCliCommand.cs
@@ -4,6 +4,7 @@
using System.Text;
using BenchmarkDotNet.Characteristics;
using BenchmarkDotNet.Extensions;
+using BenchmarkDotNet.Helpers;
using BenchmarkDotNet.Jobs;
using BenchmarkDotNet.Loggers;
using BenchmarkDotNet.Portability;
@@ -73,9 +74,24 @@ public BuildResult RestoreThenBuild()
if (!restoreResult.IsSuccess)
return BuildResult.Failure(GenerateResult, restoreResult.AllInformation);
- var buildResult = BuildNoRestore();
- if (!buildResult.IsSuccess && RetryFailedBuildWithNoDeps) // if we fail to do the full build, we try with --no-dependencies
+ // On our CI (Windows+.NET 7), Integration tests take to much time because each benchmark run rebuilds the BenchmarkDotNet itself.
+ // To reduce the total duration of the CI workflows, we build all the projects without dependencies
+ bool forceNoDependencies = XUnitHelper.IsIntegrationTest.Value &&
+ RuntimeInformation.IsWindows() &&
+ RuntimeInformation.IsNetCore;
+
+ DotNetCliCommandResult buildResult;
+ if (forceNoDependencies)
buildResult = BuildNoRestoreNoDependencies();
+ else
+ {
+ buildResult = BuildNoRestore();
+ if (!buildResult.IsSuccess && RetryFailedBuildWithNoDeps) // if we fail to do the full build, we try with --no-dependencies
+ buildResult = BuildNoRestoreNoDependencies();
+ }
+
+ if (!buildResult.IsSuccess)
+ return BuildResult.Failure(GenerateResult, buildResult.AllInformation);
return buildResult.ToBuildResult(GenerateResult);
}
diff --git a/src/BenchmarkDotNet/Toolchains/MonoAotLLVM/MonoAotLLVMGenerator.cs b/src/BenchmarkDotNet/Toolchains/MonoAotLLVM/MonoAotLLVMGenerator.cs
index 496d80d059..d17fad7d00 100644
--- a/src/BenchmarkDotNet/Toolchains/MonoAotLLVM/MonoAotLLVMGenerator.cs
+++ b/src/BenchmarkDotNet/Toolchains/MonoAotLLVM/MonoAotLLVMGenerator.cs
@@ -1,5 +1,6 @@
using System.IO;
using System.Text;
+using System.Xml;
using BenchmarkDotNet.Extensions;
using BenchmarkDotNet.Helpers;
using BenchmarkDotNet.Loggers;
@@ -30,27 +31,26 @@ protected override void GenerateProject(BuildPartition buildPartition, Artifacts
string useLLVM = AotCompilerMode == MonoAotCompilerMode.llvm ? "true" : "false";
- using (var file = new StreamReader(File.OpenRead(projectFile.FullName)))
- {
- var (customProperties, sdkName) = GetSettingsThatNeedsToBeCopied(file, projectFile);
+ var xmlDoc = new XmlDocument();
+ xmlDoc.Load(projectFile.FullName);
+ var (customProperties, sdkName) = GetSettingsThatNeedToBeCopied(xmlDoc, projectFile);
- string content = new StringBuilder(ResourceHelper.LoadTemplate("MonoAOTLLVMCsProj.txt"))
- .Replace("$PLATFORM$", buildPartition.Platform.ToConfig())
- .Replace("$CODEFILENAME$", Path.GetFileName(artifactsPaths.ProgramCodePath))
- .Replace("$CSPROJPATH$", projectFile.FullName)
- .Replace("$TFM$", TargetFrameworkMoniker)
- .Replace("$PROGRAMNAME$", artifactsPaths.ProgramName)
- .Replace("$COPIEDSETTINGS$", customProperties)
- .Replace("$CONFIGURATIONNAME$", buildPartition.BuildConfiguration)
- .Replace("$SDKNAME$", sdkName)
- .Replace("$RUNTIMEPACK$", CustomRuntimePack ?? "")
- .Replace("$COMPILERBINARYPATH$", AotCompilerPath)
- .Replace("$RUNTIMEIDENTIFIER$", CustomDotNetCliToolchainBuilder.GetPortableRuntimeIdentifier())
- .Replace("$USELLVM$", useLLVM)
- .ToString();
+ string content = new StringBuilder(ResourceHelper.LoadTemplate("MonoAOTLLVMCsProj.txt"))
+ .Replace("$PLATFORM$", buildPartition.Platform.ToConfig())
+ .Replace("$CODEFILENAME$", Path.GetFileName(artifactsPaths.ProgramCodePath))
+ .Replace("$CSPROJPATH$", projectFile.FullName)
+ .Replace("$TFM$", TargetFrameworkMoniker)
+ .Replace("$PROGRAMNAME$", artifactsPaths.ProgramName)
+ .Replace("$COPIEDSETTINGS$", customProperties)
+ .Replace("$CONFIGURATIONNAME$", buildPartition.BuildConfiguration)
+ .Replace("$SDKNAME$", sdkName)
+ .Replace("$RUNTIMEPACK$", CustomRuntimePack ?? "")
+ .Replace("$COMPILERBINARYPATH$", AotCompilerPath)
+ .Replace("$RUNTIMEIDENTIFIER$", CustomDotNetCliToolchainBuilder.GetPortableRuntimeIdentifier())
+ .Replace("$USELLVM$", useLLVM)
+ .ToString();
- File.WriteAllText(artifactsPaths.ProjectFilePath, content);
- }
+ File.WriteAllText(artifactsPaths.ProjectFilePath, content);
}
protected override string GetExecutablePath(string binariesDirectoryPath, string programName)
diff --git a/src/BenchmarkDotNet/Toolchains/MonoWasm/WasmGenerator.cs b/src/BenchmarkDotNet/Toolchains/MonoWasm/WasmGenerator.cs
index 9031534249..acc1be303a 100644
--- a/src/BenchmarkDotNet/Toolchains/MonoWasm/WasmGenerator.cs
+++ b/src/BenchmarkDotNet/Toolchains/MonoWasm/WasmGenerator.cs
@@ -1,5 +1,6 @@
using System.IO;
using System.Text;
+using System.Xml;
using BenchmarkDotNet.Environments;
using BenchmarkDotNet.Extensions;
using BenchmarkDotNet.Helpers;
@@ -42,28 +43,27 @@ protected void GenerateProjectFile(BuildPartition buildPartition, ArtifactsPaths
BenchmarkCase benchmark = buildPartition.RepresentativeBenchmarkCase;
var projectFile = GetProjectFilePath(benchmark.Descriptor.Type, logger);
- WasmRuntime runtime = (WasmRuntime)buildPartition.Runtime;
+ WasmRuntime runtime = (WasmRuntime) buildPartition.Runtime;
- using (var file = new StreamReader(File.OpenRead(projectFile.FullName)))
- {
- var (customProperties, sdkName) = GetSettingsThatNeedsToBeCopied(file, projectFile);
+ var xmlDoc = new XmlDocument();
+ xmlDoc.Load(projectFile.FullName);
+ var (customProperties, sdkName) = GetSettingsThatNeedToBeCopied(xmlDoc, projectFile);
- string content = new StringBuilder(ResourceHelper.LoadTemplate("WasmCsProj.txt"))
- .Replace("$PLATFORM$", buildPartition.Platform.ToConfig())
- .Replace("$CODEFILENAME$", Path.GetFileName(artifactsPaths.ProgramCodePath))
- .Replace("$RUN_AOT$", aot.ToString().ToLower())
- .Replace("$CSPROJPATH$", projectFile.FullName)
- .Replace("$TFM$", TargetFrameworkMoniker)
- .Replace("$PROGRAMNAME$", artifactsPaths.ProgramName)
- .Replace("$COPIEDSETTINGS$", customProperties)
- .Replace("$CONFIGURATIONNAME$", buildPartition.BuildConfiguration)
- .Replace("$SDKNAME$", sdkName)
- .Replace("$WASMDATADIR$", runtime.WasmDataDir)
- .Replace("$TARGET$", CustomRuntimePack != null ? "PublishWithCustomRuntimePack" : "Publish")
- .ToString();
+ string content = new StringBuilder(ResourceHelper.LoadTemplate("WasmCsProj.txt"))
+ .Replace("$PLATFORM$", buildPartition.Platform.ToConfig())
+ .Replace("$CODEFILENAME$", Path.GetFileName(artifactsPaths.ProgramCodePath))
+ .Replace("$RUN_AOT$", aot.ToString().ToLower())
+ .Replace("$CSPROJPATH$", projectFile.FullName)
+ .Replace("$TFM$", TargetFrameworkMoniker)
+ .Replace("$PROGRAMNAME$", artifactsPaths.ProgramName)
+ .Replace("$COPIEDSETTINGS$", customProperties)
+ .Replace("$CONFIGURATIONNAME$", buildPartition.BuildConfiguration)
+ .Replace("$SDKNAME$", sdkName)
+ .Replace("$WASMDATADIR$", runtime.WasmDataDir)
+ .Replace("$TARGET$", CustomRuntimePack != null ? "PublishWithCustomRuntimePack" : "Publish")
+ .ToString();
- File.WriteAllText(artifactsPaths.ProjectFilePath, content);
- }
+ File.WriteAllText(artifactsPaths.ProjectFilePath, content);
}
protected override string GetExecutablePath(string binariesDirectoryPath, string programName) => Path.Combine(binariesDirectoryPath, MainJS);
diff --git a/templates/BenchmarkDotNet.Templates.csproj b/templates/BenchmarkDotNet.Templates.csproj
index 9daf0672f8..407c2398f2 100644
--- a/templates/BenchmarkDotNet.Templates.csproj
+++ b/templates/BenchmarkDotNet.Templates.csproj
@@ -24,4 +24,25 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/templates/install-from-source.sh b/templates/install-from-source.sh
new file mode 100755
index 0000000000..d33889da3d
--- /dev/null
+++ b/templates/install-from-source.sh
@@ -0,0 +1,13 @@
+# Run only from the folder where the shell script is located!
+
+dotnet build BenchmarkDotNet.Templates.csproj -c Release
+dotnet pack BenchmarkDotNet.Templates.csproj -c Release
+
+# If we install the templates via a folder path, then it will have a different ID (ID=folder path).
+# It will conflict with BDN templates from nuget.
+# We need to install the templates via a FILE path in order to update the template from nuget.
+
+nupkg_path=$(find . -name "BenchmarkDotNet.Templates*.nupkg")
+
+dotnet new uninstall "BenchmarkDotNet.Templates"
+dotnet new install $nupkg_path
diff --git a/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.CSharp/.template.config/template.json b/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.CSharp/.template.config/template.json
index 66532df32e..af269e8066 100644
--- a/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.CSharp/.template.config/template.json
+++ b/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.CSharp/.template.config/template.json
@@ -131,7 +131,7 @@
"type": "parameter",
"datatype": "string",
"description": "Version of BenchmarkDotNet that will be referenced.",
- "defaultValue": "0.13.5",
+ "defaultValue": "0.1.1729",
"replaces": "$(BenchmarkDotNetVersion)"
}
},
diff --git a/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.FSharp/.template.config/template.json b/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.FSharp/.template.config/template.json
index 161030a7af..001880a491 100644
--- a/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.FSharp/.template.config/template.json
+++ b/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.FSharp/.template.config/template.json
@@ -131,7 +131,7 @@
"type": "parameter",
"datatype": "string",
"description": "Version of BenchmarkDotNet that will be referenced.",
- "defaultValue": "0.13.5",
+ "defaultValue": "0.1.1729",
"replaces": "$(BenchmarkDotNetVersion)"
}
},
diff --git a/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.VB/.template.config/template.json b/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.VB/.template.config/template.json
index c108eb334c..7fed229f21 100644
--- a/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.VB/.template.config/template.json
+++ b/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.VB/.template.config/template.json
@@ -131,7 +131,7 @@
"type": "parameter",
"datatype": "string",
"description": "Version of BenchmarkDotNet that will be referenced.",
- "defaultValue": "0.13.5",
+ "defaultValue": "0.1.1729",
"replaces": "$(BenchmarkDotNetVersion)"
}
},
diff --git a/tests/BenchmarkDotNet.IntegrationTests.ConfigPerAssembly/BenchmarkDotNet.IntegrationTests.ConfigPerAssembly.csproj b/tests/BenchmarkDotNet.IntegrationTests.ConfigPerAssembly/BenchmarkDotNet.IntegrationTests.ConfigPerAssembly.csproj
index e559ace0a9..70ca871259 100644
--- a/tests/BenchmarkDotNet.IntegrationTests.ConfigPerAssembly/BenchmarkDotNet.IntegrationTests.ConfigPerAssembly.csproj
+++ b/tests/BenchmarkDotNet.IntegrationTests.ConfigPerAssembly/BenchmarkDotNet.IntegrationTests.ConfigPerAssembly.csproj
@@ -14,7 +14,7 @@
-
+
\ No newline at end of file
diff --git a/tests/BenchmarkDotNet.IntegrationTests.CustomPaths/BenchmarkDotNet.IntegrationTests.CustomPaths.csproj b/tests/BenchmarkDotNet.IntegrationTests.CustomPaths/BenchmarkDotNet.IntegrationTests.CustomPaths.csproj
index 95eb54181b..cb4df7361e 100644
--- a/tests/BenchmarkDotNet.IntegrationTests.CustomPaths/BenchmarkDotNet.IntegrationTests.CustomPaths.csproj
+++ b/tests/BenchmarkDotNet.IntegrationTests.CustomPaths/BenchmarkDotNet.IntegrationTests.CustomPaths.csproj
@@ -14,7 +14,7 @@
-
+
diff --git a/tests/BenchmarkDotNet.IntegrationTests.DisabledOptimizations/BenchmarkDotNet.IntegrationTests.DisabledOptimizations.csproj b/tests/BenchmarkDotNet.IntegrationTests.DisabledOptimizations/BenchmarkDotNet.IntegrationTests.DisabledOptimizations.csproj
index 15723e07e5..aad9d6ac33 100644
--- a/tests/BenchmarkDotNet.IntegrationTests.DisabledOptimizations/BenchmarkDotNet.IntegrationTests.DisabledOptimizations.csproj
+++ b/tests/BenchmarkDotNet.IntegrationTests.DisabledOptimizations/BenchmarkDotNet.IntegrationTests.DisabledOptimizations.csproj
@@ -16,7 +16,7 @@
-
+
\ No newline at end of file
diff --git a/tests/BenchmarkDotNet.IntegrationTests.EnabledOptimizations/BenchmarkDotNet.IntegrationTests.EnabledOptimizations.csproj b/tests/BenchmarkDotNet.IntegrationTests.EnabledOptimizations/BenchmarkDotNet.IntegrationTests.EnabledOptimizations.csproj
index 593dbbae16..da7558c82e 100644
--- a/tests/BenchmarkDotNet.IntegrationTests.EnabledOptimizations/BenchmarkDotNet.IntegrationTests.EnabledOptimizations.csproj
+++ b/tests/BenchmarkDotNet.IntegrationTests.EnabledOptimizations/BenchmarkDotNet.IntegrationTests.EnabledOptimizations.csproj
@@ -16,7 +16,7 @@
-
+
\ No newline at end of file
diff --git a/tests/BenchmarkDotNet.IntegrationTests.Static/BenchmarkDotNet.IntegrationTests.Static.csproj b/tests/BenchmarkDotNet.IntegrationTests.Static/BenchmarkDotNet.IntegrationTests.Static.csproj
index 8ff856ecb5..4a52743deb 100644
--- a/tests/BenchmarkDotNet.IntegrationTests.Static/BenchmarkDotNet.IntegrationTests.Static.csproj
+++ b/tests/BenchmarkDotNet.IntegrationTests.Static/BenchmarkDotNet.IntegrationTests.Static.csproj
@@ -14,7 +14,7 @@
-
+
\ No newline at end of file
diff --git a/tests/BenchmarkDotNet.IntegrationTests/BenchmarkDotNet.IntegrationTests.csproj b/tests/BenchmarkDotNet.IntegrationTests/BenchmarkDotNet.IntegrationTests.csproj
index f89a10cbda..5d70626536 100644
--- a/tests/BenchmarkDotNet.IntegrationTests/BenchmarkDotNet.IntegrationTests.csproj
+++ b/tests/BenchmarkDotNet.IntegrationTests/BenchmarkDotNet.IntegrationTests.csproj
@@ -2,7 +2,8 @@
BenchmarkDotNet.IntegrationTests
- net462;net7.0
+ net462;net7.0
+ net7.0
true
BenchmarkDotNet.IntegrationTests
BenchmarkDotNet.IntegrationTests
@@ -45,7 +46,7 @@
-
+
diff --git a/tests/BenchmarkDotNet.IntegrationTests/BenchmarkSwitcherTest.cs b/tests/BenchmarkDotNet.IntegrationTests/BenchmarkSwitcherTest.cs
index 9933330bf6..7197e2302d 100644
--- a/tests/BenchmarkDotNet.IntegrationTests/BenchmarkSwitcherTest.cs
+++ b/tests/BenchmarkDotNet.IntegrationTests/BenchmarkSwitcherTest.cs
@@ -289,9 +289,6 @@ public void WhenJobIsDefinedViaAttributeAndArgumentsDontContainJobArgumentOnlySi
[Fact]
public void JobNotDefinedButStillBenchmarkIsExecuted()
{
- if (ContinuousIntegration.IsAppVeyorOnWindows())
- return; // timeouts
-
var types = new[] { typeof(JustBenchmark) };
var switcher = new BenchmarkSwitcher(types);
MockExporter mockExporter = new MockExporter();
diff --git a/tests/BenchmarkDotNet.IntegrationTests/ContinuousIntegration.cs b/tests/BenchmarkDotNet.IntegrationTests/ContinuousIntegration.cs
index 3c94085a5c..0f112aa328 100644
--- a/tests/BenchmarkDotNet.IntegrationTests/ContinuousIntegration.cs
+++ b/tests/BenchmarkDotNet.IntegrationTests/ContinuousIntegration.cs
@@ -7,14 +7,9 @@ internal static class ContinuousIntegration
{
private static bool IsGitHubActions() => !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("GITHUB_ACTION"));
- private static bool IsAppVeyor() => !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("APPVEYOR"));
-
internal static bool IsGitHubActionsOnWindows()
=> RuntimeInformation.IsWindows() && IsGitHubActions();
- internal static bool IsAppVeyorOnWindows()
- => RuntimeInformation.IsWindows() && IsAppVeyor();
-
- internal static bool IsLocalRun() => !IsGitHubActions() && !IsAppVeyor();
+ internal static bool IsLocalRun() => !IsGitHubActions();
}
}
diff --git a/tests/BenchmarkDotNet.IntegrationTests/CustomBuildConfigurationTests.cs b/tests/BenchmarkDotNet.IntegrationTests/CustomBuildConfigurationTests.cs
index 50bf8b67de..249d8d451f 100644
--- a/tests/BenchmarkDotNet.IntegrationTests/CustomBuildConfigurationTests.cs
+++ b/tests/BenchmarkDotNet.IntegrationTests/CustomBuildConfigurationTests.cs
@@ -18,9 +18,6 @@ public CustomBuildConfigurationTests(ITestOutputHelper output) : base(output)
[Fact]
public void UserCanSpecifyCustomBuildConfiguration()
{
- if (ContinuousIntegration.IsAppVeyorOnWindows())
- return; // timeouts
-
var jobWithCustomConfiguration = Job.Dry.WithCustomBuildConfiguration("CUSTOM");
var config = CreateSimpleConfig(job: jobWithCustomConfiguration);
diff --git a/tests/BenchmarkDotNet.IntegrationTests/IntegrationTestSetupTests.cs b/tests/BenchmarkDotNet.IntegrationTests/IntegrationTestSetupTests.cs
new file mode 100644
index 0000000000..06ee69899e
--- /dev/null
+++ b/tests/BenchmarkDotNet.IntegrationTests/IntegrationTestSetupTests.cs
@@ -0,0 +1,10 @@
+using BenchmarkDotNet.Helpers;
+using Xunit;
+
+namespace BenchmarkDotNet.IntegrationTests;
+
+public class IntegrationTestSetupTests
+{
+ [Fact]
+ public void IntegrationTestsAreDetected() => Assert.True(XUnitHelper.IsIntegrationTest.Value);
+}
\ No newline at end of file
diff --git a/tests/BenchmarkDotNet.IntegrationTests/MemoryDiagnoserTests.cs b/tests/BenchmarkDotNet.IntegrationTests/MemoryDiagnoserTests.cs
index bbac40d74d..01ed61197f 100755
--- a/tests/BenchmarkDotNet.IntegrationTests/MemoryDiagnoserTests.cs
+++ b/tests/BenchmarkDotNet.IntegrationTests/MemoryDiagnoserTests.cs
@@ -75,8 +75,6 @@ public void MemoryDiagnoserSupportsNativeAOT()
{
if (RuntimeInformation.IsMacOS())
return; // currently not supported
- if (ContinuousIntegration.IsAppVeyorOnWindows())
- return; // timeouts
MemoryDiagnoserIsAccurate(
NativeAotToolchain.CreateBuilder()
@@ -87,9 +85,6 @@ public void MemoryDiagnoserSupportsNativeAOT()
[FactDotNetCoreOnly("We don't want to test MonoVM twice (for .NET Framework 4.6.2 and .NET 7.0)")]
public void MemoryDiagnoserSupportsModernMono()
{
- if (ContinuousIntegration.IsAppVeyorOnWindows())
- return; // timeouts
-
MemoryDiagnoserIsAccurate(MonoToolchain.Mono70);
}
diff --git a/tests/BenchmarkDotNet.IntegrationTests/MonoTests.cs b/tests/BenchmarkDotNet.IntegrationTests/MonoTests.cs
index 2dfda32f8d..dbb66d79ae 100644
--- a/tests/BenchmarkDotNet.IntegrationTests/MonoTests.cs
+++ b/tests/BenchmarkDotNet.IntegrationTests/MonoTests.cs
@@ -13,9 +13,6 @@ public class MonoTests : BenchmarkTestExecutor
[FactDotNetCoreOnly("UseMonoRuntime option is available in .NET Core only starting from .NET 6")]
public void Mono70IsSupported()
{
- if (ContinuousIntegration.IsAppVeyorOnWindows())
- return; // timeouts
-
var config = ManualConfig.CreateEmpty().AddJob(Job.Dry.WithRuntime(MonoRuntime.Mono70));
CanExecute(config);
}
diff --git a/tests/BenchmarkDotNet.IntegrationTests/NativeAotTests.cs b/tests/BenchmarkDotNet.IntegrationTests/NativeAotTests.cs
index 68a9dbbcdc..706241d93d 100644
--- a/tests/BenchmarkDotNet.IntegrationTests/NativeAotTests.cs
+++ b/tests/BenchmarkDotNet.IntegrationTests/NativeAotTests.cs
@@ -22,8 +22,6 @@ public void LatestNativeAotVersionIsSupported()
return;
if (ContinuousIntegration.IsGitHubActionsOnWindows()) // no native dependencies installed
return;
- if (ContinuousIntegration.IsAppVeyorOnWindows())
- return; // timeouts
if (RuntimeInformation.IsMacOS())
return; // currently not supported
diff --git a/tests/BenchmarkDotNet.IntegrationTests/RunStrategyTests.cs b/tests/BenchmarkDotNet.IntegrationTests/RunStrategyTests.cs
index b9cdbf9f7d..7a5ac84a96 100644
--- a/tests/BenchmarkDotNet.IntegrationTests/RunStrategyTests.cs
+++ b/tests/BenchmarkDotNet.IntegrationTests/RunStrategyTests.cs
@@ -19,9 +19,6 @@ public RunStrategyTests(ITestOutputHelper output) : base(output) { }
[Fact]
public void RunStrategiesAreSupported()
{
- if (ContinuousIntegration.IsAppVeyorOnWindows())
- return; // timeouts
-
var config = ManualConfig.CreateEmpty()
.AddColumnProvider(DefaultColumnProviders.Instance)
.AddLogger(new OutputLogger(Output))
diff --git a/tests/BenchmarkDotNet.IntegrationTests/ThreadingDiagnoserTests.cs b/tests/BenchmarkDotNet.IntegrationTests/ThreadingDiagnoserTests.cs
index 6b4b75dbb3..220991796d 100644
--- a/tests/BenchmarkDotNet.IntegrationTests/ThreadingDiagnoserTests.cs
+++ b/tests/BenchmarkDotNet.IntegrationTests/ThreadingDiagnoserTests.cs
@@ -32,8 +32,7 @@ public static IEnumerable GetToolchains()
yield return new object[] { Job.Default.GetToolchain() };
if (!ContinuousIntegration.IsGitHubActionsOnWindows() // no native dependencies
- && !RuntimeInformation.IsMacOS() // currently not supported
- && !ContinuousIntegration.IsAppVeyorOnWindows()) // timeouts
+ && !RuntimeInformation.IsMacOS()) // currently not supported
{
yield return new object[]{ NativeAotToolchain.CreateBuilder()
.UseNuGet("7.0.0", "https://api.nuget.org/v3/index.json")
diff --git a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfBool.verified.txt b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfBool.verified.txt
index e5ba4a447d..fba519229a 100644
--- a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfBool.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfBool.verified.txt
@@ -1,8 +1,8 @@
=== WithAllValuesOfBool ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
DefaultJob : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfEnum.verified.txt b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfEnum.verified.txt
index 39e9ff160e..0754264ed2 100644
--- a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfEnum.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfEnum.verified.txt
@@ -1,8 +1,8 @@
=== WithAllValuesOfEnum ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
DefaultJob : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfNullableBool.verified.txt b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfNullableBool.verified.txt
index 9a86e3377b..23c73f72bf 100644
--- a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfNullableBool.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfNullableBool.verified.txt
@@ -1,8 +1,8 @@
=== WithAllValuesOfNullableBool ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
DefaultJob : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfNullableEnum.verified.txt b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfNullableEnum.verified.txt
index 713c685280..a74fb9c3e4 100644
--- a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfNullableEnum.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfNullableEnum.verified.txt
@@ -1,8 +1,8 @@
=== WithAllValuesOfNullableEnum ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
DefaultJob : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedFlagsEnumError.verified.txt b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedFlagsEnumError.verified.txt
index 05b9653cbb..de2ba47660 100644
--- a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedFlagsEnumError.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedFlagsEnumError.verified.txt
@@ -1,8 +1,8 @@
=== WithNotAllowedFlagsEnumError ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
DefaultJob : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedNullableTypeError.verified.txt b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedNullableTypeError.verified.txt
index 3dacbeb6a8..61c034243d 100644
--- a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedNullableTypeError.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedNullableTypeError.verified.txt
@@ -1,8 +1,8 @@
=== WithNotAllowedNullableTypeError ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
DefaultJob : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedTypeError.verified.txt b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedTypeError.verified.txt
index a04323e9a7..0e7587f03a 100644
--- a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedTypeError.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedTypeError.verified.txt
@@ -1,8 +1,8 @@
=== WithNotAllowedTypeError ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
DefaultJob : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/BenchmarkDotNet.Tests.csproj b/tests/BenchmarkDotNet.Tests/BenchmarkDotNet.Tests.csproj
index eda55784ad..02e5169197 100755
--- a/tests/BenchmarkDotNet.Tests/BenchmarkDotNet.Tests.csproj
+++ b/tests/BenchmarkDotNet.Tests/BenchmarkDotNet.Tests.csproj
@@ -25,7 +25,7 @@
-
+
diff --git a/tests/BenchmarkDotNet.Tests/Columns/MetricColumnTests.cs b/tests/BenchmarkDotNet.Tests/Columns/MetricColumnTests.cs
index 94913fd1fa..f16c4bd7f6 100644
--- a/tests/BenchmarkDotNet.Tests/Columns/MetricColumnTests.cs
+++ b/tests/BenchmarkDotNet.Tests/Columns/MetricColumnTests.cs
@@ -68,6 +68,7 @@ private LocalMetricDescriptor(UnitType unitType)
public string Unit { get; }
public bool TheGreaterTheBetter { get; }
public int PriorityInCategory => 0;
+ public bool GetIsAvailable(Metric metric) => true;
}
}
}
\ No newline at end of file
diff --git a/tests/BenchmarkDotNet.Tests/CsProjGeneratorTests.cs b/tests/BenchmarkDotNet.Tests/CsProjGeneratorTests.cs
index cd0f48547d..715d7dad64 100644
--- a/tests/BenchmarkDotNet.Tests/CsProjGeneratorTests.cs
+++ b/tests/BenchmarkDotNet.Tests/CsProjGeneratorTests.cs
@@ -11,6 +11,7 @@
using JetBrains.Annotations;
using Xunit;
using BenchmarkDotNet.Extensions;
+using System.Xml;
namespace BenchmarkDotNet.Tests
{
@@ -57,13 +58,17 @@ private void AssertParsedSdkName(string csProjContent, string targetFrameworkMon
{
var sut = new CsProjGenerator(targetFrameworkMoniker, null, null, null, isNetCore);
- using (var reader = new StringReader(csProjContent))
- {
- var (customProperties, sdkName) = sut.GetSettingsThatNeedsToBeCopied(reader, TestAssemblyFileInfo);
+ var xmlDoc = new XmlDocument();
+ xmlDoc.LoadXml(csProjContent);
+ var (customProperties, sdkName) = sut.GetSettingsThatNeedToBeCopied(xmlDoc, TestAssemblyFileInfo);
- Assert.Equal(expectedSdkValue, sdkName);
- Assert.Empty(customProperties);
- }
+ Assert.Equal(expectedSdkValue, sdkName);
+ Assert.Empty(customProperties);
+ }
+
+ private static void AssertCustomProperties(string expected, string actual)
+ {
+ Assert.Equal(expected.Replace(Environment.NewLine, "\n").Replace("\n", Environment.NewLine), actual);
}
[Fact]
@@ -79,13 +84,14 @@ public void UseWpfSettingGetsCopied()
";
var sut = new CsProjGenerator("netcoreapp3.0", null, null, null, true);
- using (var reader = new StringReader(withUseWpfTrue))
- {
- var (customProperties, sdkName) = sut.GetSettingsThatNeedsToBeCopied(reader, TestAssemblyFileInfo);
+ var xmlDoc = new XmlDocument();
+ xmlDoc.LoadXml(withUseWpfTrue);
+ var (customProperties, sdkName) = sut.GetSettingsThatNeedToBeCopied(xmlDoc, TestAssemblyFileInfo);
- Assert.Equal("true" + Environment.NewLine, customProperties);
- Assert.Equal("Microsoft.NET.Sdk", sdkName);
- }
+ AssertCustomProperties(@"
+ true
+", customProperties);
+ Assert.Equal("Microsoft.NET.Sdk", sdkName);
}
[Fact]
@@ -108,13 +114,14 @@ public void SettingsFromPropsFileImportedUsingAbsolutePathGetCopies()
var sut = new CsProjGenerator("netcoreapp3.0", null, null, null, true);
- using (var reader = new StringReader(importingAbsolutePath))
- {
- var (customProperties, sdkName) = sut.GetSettingsThatNeedsToBeCopied(reader, TestAssemblyFileInfo);
+ var xmlDoc = new XmlDocument();
+ xmlDoc.LoadXml(importingAbsolutePath);
+ var (customProperties, sdkName) = sut.GetSettingsThatNeedToBeCopied(xmlDoc, TestAssemblyFileInfo);
- Assert.Equal("9.9" + Environment.NewLine, customProperties);
- Assert.Equal("Microsoft.NET.Sdk", sdkName);
- }
+ AssertCustomProperties(@"
+ 9.9
+", customProperties);
+ Assert.Equal("Microsoft.NET.Sdk", sdkName);
File.Delete(propsFilePath);
}
@@ -139,13 +146,14 @@ public void SettingsFromPropsFileImportedUsingRelativePathGetCopies()
var sut = new CsProjGenerator("netcoreapp3.0", null, null, null, true);
- using (var reader = new StringReader(importingRelativePath))
- {
- var (customProperties, sdkName) = sut.GetSettingsThatNeedsToBeCopied(reader, TestAssemblyFileInfo);
+ var xmlDoc = new XmlDocument();
+ xmlDoc.LoadXml(importingRelativePath);
+ var (customProperties, sdkName) = sut.GetSettingsThatNeedToBeCopied(xmlDoc, TestAssemblyFileInfo);
- Assert.Equal("9.9" + Environment.NewLine, customProperties);
- Assert.Equal("Microsoft.NET.Sdk", sdkName);
- }
+ AssertCustomProperties(@"
+ 9.9
+", customProperties);
+ Assert.Equal("Microsoft.NET.Sdk", sdkName);
File.Delete(propsFilePath);
}
diff --git a/tests/BenchmarkDotNet.Tests/Environments/HostEnvironmentInfoTests.cs b/tests/BenchmarkDotNet.Tests/Environments/HostEnvironmentInfoTests.cs
index ed28e4e489..977be28869 100644
--- a/tests/BenchmarkDotNet.Tests/Environments/HostEnvironmentInfoTests.cs
+++ b/tests/BenchmarkDotNet.Tests/Environments/HostEnvironmentInfoTests.cs
@@ -21,8 +21,8 @@ public void ReturnsHypervisorNameWhenItsDetected(string hypervisorName)
string line = info.ToFormattedString().First();
- string expected = $"{HostEnvironmentInfo.BenchmarkDotNetCaption}=v{info.BenchmarkDotNetVersion}, " +
- $"OS={info.OsVersion.Value}, VM={hypervisor.Name}";
+ string expected = $"{HostEnvironmentInfo.BenchmarkDotNetCaption} v{info.BenchmarkDotNetVersion}, " +
+ $"{info.OsVersion.Value} ({hypervisor.Name})";
Assert.Equal(expected, line);
}
@@ -45,8 +45,8 @@ public void DoesntReturnHypervisorNameWhenItsNotDetected()
string line = info.ToFormattedString().First();
- string expected = $"{HostEnvironmentInfo.BenchmarkDotNetCaption}=v{info.BenchmarkDotNetVersion}, " +
- $"OS={info.OsVersion.Value}";
+ string expected = $"{HostEnvironmentInfo.BenchmarkDotNetCaption} v{info.BenchmarkDotNetVersion}, " +
+ $"{info.OsVersion.Value}";
Assert.Equal(expected, line);
}
}
diff --git a/tests/BenchmarkDotNet.Tests/Environments/OsBrandStringTests.cs b/tests/BenchmarkDotNet.Tests/Environments/OsBrandStringTests.cs
index 2bf425e7b8..8aafe03fba 100644
--- a/tests/BenchmarkDotNet.Tests/Environments/OsBrandStringTests.cs
+++ b/tests/BenchmarkDotNet.Tests/Environments/OsBrandStringTests.cs
@@ -62,6 +62,7 @@ public void WindowsWithUbrIsPrettified(string originalVersion, int ubr, string p
[InlineData("macOS 11.3.1 (20E241)", "Darwin 20.4.0", "macOS Big Sur 11.3.1 (20E241) [Darwin 20.4.0]")]
[InlineData("macOS 12.1 (21C52)", "Darwin 21.2.0", "macOS Monterey 12.1 (21C52) [Darwin 21.2.0]")]
[InlineData("macOS 13.0.1 (22A400)", "Darwin 22.1.0", "macOS Ventura 13.0.1 (22A400) [Darwin 22.1.0]")]
+ [InlineData("macOS 14.0.0", "Darwin 23.0.0", "macOS Sonoma 14.0.0 [Darwin 23.0.0]")]
public void MacOSXIsPrettified(string systemVersion, string kernelVersion, string prettifiedName)
=> Check(OsBrandStringHelper.PrettifyMacOSX(systemVersion, kernelVersion), prettifiedName);
}
diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_Invariant.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_Invariant.verified.txt
index 50556461f8..31d5cec733 100644
--- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_Invariant.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_Invariant.verified.txt
@@ -2,9 +2,9 @@
AsciiDocExporter
############################################
....
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
LongRun : extra output line
@@ -35,9 +35,9 @@ HtmlExporter
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
LongRun : extra output line
@@ -141,7 +141,7 @@ JsonExporter-brief
"Gen1Collections":0,
"Gen2Collections":0,
"TotalOperations":0,
- "BytesAllocatedPerOperation":0
+ "BytesAllocatedPerOperation":null
}
},{
"DisplayInfo":"MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)",
@@ -206,7 +206,7 @@ JsonExporter-brief
"Gen1Collections":0,
"Gen2Collections":0,
"TotalOperations":0,
- "BytesAllocatedPerOperation":0
+ "BytesAllocatedPerOperation":null
}
}
]
@@ -214,7 +214,7 @@ JsonExporter-brief
############################################
JsonExporter-brief-compressed
############################################
-{"Title":"MockSummary","HostEnvironmentInfo":{"BenchmarkDotNetCaption":"BenchmarkDotNet","BenchmarkDotNetVersion":"0.10.x-mock","OsVersion":"Microsoft Windows NT 10.0.x.mock","ProcessorName":"MockIntel Core i7-6700HQ CPU 2.60GHz","PhysicalProcessorCount":1,"PhysicalCoreCount":4,"LogicalCoreCount":8,"RuntimeVersion":"Clr 4.0.x.mock","Architecture":"64mock","HasAttachedDebugger":false,"HasRyuJit":true,"Configuration":"CONFIGURATION","DotNetCliVersion":null,"ChronometerFrequency":{"Hertz":2531248},"HardwareTimerKind":"Tsc"},"Benchmarks":[{"DisplayInfo":"MockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Foo","MethodTitle":"Foo","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Foo","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":0}},{"DisplayInfo":"MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Bar","MethodTitle":"Bar","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Bar","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":0}}]}
+{"Title":"MockSummary","HostEnvironmentInfo":{"BenchmarkDotNetCaption":"BenchmarkDotNet","BenchmarkDotNetVersion":"0.10.x-mock","OsVersion":"Microsoft Windows NT 10.0.x.mock","ProcessorName":"MockIntel Core i7-6700HQ CPU 2.60GHz","PhysicalProcessorCount":1,"PhysicalCoreCount":4,"LogicalCoreCount":8,"RuntimeVersion":"Clr 4.0.x.mock","Architecture":"64mock","HasAttachedDebugger":false,"HasRyuJit":true,"Configuration":"CONFIGURATION","DotNetCliVersion":null,"ChronometerFrequency":{"Hertz":2531248},"HardwareTimerKind":"Tsc"},"Benchmarks":[{"DisplayInfo":"MockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Foo","MethodTitle":"Foo","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Foo","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":null}},{"DisplayInfo":"MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Bar","MethodTitle":"Bar","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Bar","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":null}}]}
############################################
JsonExporter-full
############################################
@@ -303,7 +303,7 @@ JsonExporter-full
"Gen1Collections":0,
"Gen2Collections":0,
"TotalOperations":0,
- "BytesAllocatedPerOperation":0
+ "BytesAllocatedPerOperation":null
},
"Measurements":[
{
@@ -378,7 +378,7 @@ JsonExporter-full
"Gen1Collections":0,
"Gen2Collections":0,
"TotalOperations":0,
- "BytesAllocatedPerOperation":0
+ "BytesAllocatedPerOperation":null
},
"Measurements":[
{
@@ -396,14 +396,14 @@ JsonExporter-full
############################################
JsonExporter-full-compressed
############################################
-{"Title":"MockSummary","HostEnvironmentInfo":{"BenchmarkDotNetCaption":"BenchmarkDotNet","BenchmarkDotNetVersion":"0.10.x-mock","OsVersion":"Microsoft Windows NT 10.0.x.mock","ProcessorName":"MockIntel Core i7-6700HQ CPU 2.60GHz","PhysicalProcessorCount":1,"PhysicalCoreCount":4,"LogicalCoreCount":8,"RuntimeVersion":"Clr 4.0.x.mock","Architecture":"64mock","HasAttachedDebugger":false,"HasRyuJit":true,"Configuration":"CONFIGURATION","DotNetCliVersion":null,"ChronometerFrequency":{"Hertz":2531248},"HardwareTimerKind":"Tsc"},"Benchmarks":[{"DisplayInfo":"MockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Foo","MethodTitle":"Foo","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Foo","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":0},"Measurements":[{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":1}]},{"DisplayInfo":"MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Bar","MethodTitle":"Bar","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Bar","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":0},"Measurements":[{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":1}]}]}
+{"Title":"MockSummary","HostEnvironmentInfo":{"BenchmarkDotNetCaption":"BenchmarkDotNet","BenchmarkDotNetVersion":"0.10.x-mock","OsVersion":"Microsoft Windows NT 10.0.x.mock","ProcessorName":"MockIntel Core i7-6700HQ CPU 2.60GHz","PhysicalProcessorCount":1,"PhysicalCoreCount":4,"LogicalCoreCount":8,"RuntimeVersion":"Clr 4.0.x.mock","Architecture":"64mock","HasAttachedDebugger":false,"HasRyuJit":true,"Configuration":"CONFIGURATION","DotNetCliVersion":null,"ChronometerFrequency":{"Hertz":2531248},"HardwareTimerKind":"Tsc"},"Benchmarks":[{"DisplayInfo":"MockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Foo","MethodTitle":"Foo","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Foo","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":null},"Measurements":[{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":1}]},{"DisplayInfo":"MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Bar","MethodTitle":"Bar","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Bar","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":null},"Measurements":[{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":1}]}]}
############################################
MarkdownExporter-default
############################################
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
LongRun : extra output line
@@ -419,9 +419,9 @@ MarkdownExporter-atlassian
############################################
{noformat}
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
LongRun : extra output line
@@ -436,9 +436,9 @@ WarmupCount=15
MarkdownExporter-console
############################################
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
LongRun : extra output line
@@ -452,11 +452,11 @@ WarmupCount=15
############################################
MarkdownExporter-github
############################################
-``` ini
+```
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
LongRun : extra output line
@@ -472,9 +472,9 @@ WarmupCount=15
MarkdownExporter-stackoverflow
############################################
- BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+ BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
- Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
LongRun : extra output line
@@ -590,7 +590,7 @@ XmlExporter-brief
0
0
0
- 0
+
@@ -644,7 +644,7 @@ XmlExporter-brief
0
0
0
- 0
+
@@ -652,7 +652,7 @@ XmlExporter-brief
############################################
XmlExporter-brief-compressed
############################################
-MockSummaryBenchmarkDotNet0.10.x-mockMicrosoft Windows NT 10.0.x.mockMockIntel Core i7-6700HQ CPU 2.60GHz148Clr 4.0.x.mock64mockFalseTrueCONFIGURATION2531248TscMockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassFooFoo- 1
1111111110000NaNNaN110L999NaNNaNNaN11111111100000MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar- 1
1111111110000NaNNaN110L999NaNNaNNaN11111111100000
+MockSummaryBenchmarkDotNet0.10.x-mockMicrosoft Windows NT 10.0.x.mockMockIntel Core i7-6700HQ CPU 2.60GHz148Clr 4.0.x.mock64mockFalseTrueCONFIGURATION2531248TscMockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassFooFoo- 1
1111111110000NaNNaN110L999NaNNaNNaN1111111110000MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar- 1
1111111110000NaNNaN110L999NaNNaNNaN1111111110000
############################################
XmlExporter-full
############################################
@@ -729,7 +729,7 @@ XmlExporter-full
0
0
0
- 0
+
@@ -793,7 +793,7 @@ XmlExporter-full
0
0
0
- 0
+
@@ -811,4 +811,4 @@ XmlExporter-full
############################################
XmlExporter-full-compressed
############################################
-MockSummaryBenchmarkDotNet0.10.x-mockMicrosoft Windows NT 10.0.x.mockMockIntel Core i7-6700HQ CPU 2.60GHz148Clr 4.0.x.mock64mockFalseTrueCONFIGURATION2531248TscMockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassFooFoo- 1
1111111110000NaNNaN110L999NaNNaNNaN11111111100000WorkloadResult1111MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar- 1
1111111110000NaNNaN110L999NaNNaNNaN11111111100000WorkloadResult1111
+MockSummaryBenchmarkDotNet0.10.x-mockMicrosoft Windows NT 10.0.x.mockMockIntel Core i7-6700HQ CPU 2.60GHz148Clr 4.0.x.mock64mockFalseTrueCONFIGURATION2531248TscMockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassFooFoo- 1
1111111110000NaNNaN110L999NaNNaNNaN1111111110000WorkloadResult1111MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar- 1
1111111110000NaNNaN110L999NaNNaNNaN1111111110000WorkloadResult1111
diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_en-US.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_en-US.verified.txt
index 50556461f8..31d5cec733 100644
--- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_en-US.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_en-US.verified.txt
@@ -2,9 +2,9 @@
AsciiDocExporter
############################################
....
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
LongRun : extra output line
@@ -35,9 +35,9 @@ HtmlExporter
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
LongRun : extra output line
@@ -141,7 +141,7 @@ JsonExporter-brief
"Gen1Collections":0,
"Gen2Collections":0,
"TotalOperations":0,
- "BytesAllocatedPerOperation":0
+ "BytesAllocatedPerOperation":null
}
},{
"DisplayInfo":"MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)",
@@ -206,7 +206,7 @@ JsonExporter-brief
"Gen1Collections":0,
"Gen2Collections":0,
"TotalOperations":0,
- "BytesAllocatedPerOperation":0
+ "BytesAllocatedPerOperation":null
}
}
]
@@ -214,7 +214,7 @@ JsonExporter-brief
############################################
JsonExporter-brief-compressed
############################################
-{"Title":"MockSummary","HostEnvironmentInfo":{"BenchmarkDotNetCaption":"BenchmarkDotNet","BenchmarkDotNetVersion":"0.10.x-mock","OsVersion":"Microsoft Windows NT 10.0.x.mock","ProcessorName":"MockIntel Core i7-6700HQ CPU 2.60GHz","PhysicalProcessorCount":1,"PhysicalCoreCount":4,"LogicalCoreCount":8,"RuntimeVersion":"Clr 4.0.x.mock","Architecture":"64mock","HasAttachedDebugger":false,"HasRyuJit":true,"Configuration":"CONFIGURATION","DotNetCliVersion":null,"ChronometerFrequency":{"Hertz":2531248},"HardwareTimerKind":"Tsc"},"Benchmarks":[{"DisplayInfo":"MockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Foo","MethodTitle":"Foo","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Foo","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":0}},{"DisplayInfo":"MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Bar","MethodTitle":"Bar","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Bar","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":0}}]}
+{"Title":"MockSummary","HostEnvironmentInfo":{"BenchmarkDotNetCaption":"BenchmarkDotNet","BenchmarkDotNetVersion":"0.10.x-mock","OsVersion":"Microsoft Windows NT 10.0.x.mock","ProcessorName":"MockIntel Core i7-6700HQ CPU 2.60GHz","PhysicalProcessorCount":1,"PhysicalCoreCount":4,"LogicalCoreCount":8,"RuntimeVersion":"Clr 4.0.x.mock","Architecture":"64mock","HasAttachedDebugger":false,"HasRyuJit":true,"Configuration":"CONFIGURATION","DotNetCliVersion":null,"ChronometerFrequency":{"Hertz":2531248},"HardwareTimerKind":"Tsc"},"Benchmarks":[{"DisplayInfo":"MockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Foo","MethodTitle":"Foo","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Foo","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":null}},{"DisplayInfo":"MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Bar","MethodTitle":"Bar","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Bar","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":null}}]}
############################################
JsonExporter-full
############################################
@@ -303,7 +303,7 @@ JsonExporter-full
"Gen1Collections":0,
"Gen2Collections":0,
"TotalOperations":0,
- "BytesAllocatedPerOperation":0
+ "BytesAllocatedPerOperation":null
},
"Measurements":[
{
@@ -378,7 +378,7 @@ JsonExporter-full
"Gen1Collections":0,
"Gen2Collections":0,
"TotalOperations":0,
- "BytesAllocatedPerOperation":0
+ "BytesAllocatedPerOperation":null
},
"Measurements":[
{
@@ -396,14 +396,14 @@ JsonExporter-full
############################################
JsonExporter-full-compressed
############################################
-{"Title":"MockSummary","HostEnvironmentInfo":{"BenchmarkDotNetCaption":"BenchmarkDotNet","BenchmarkDotNetVersion":"0.10.x-mock","OsVersion":"Microsoft Windows NT 10.0.x.mock","ProcessorName":"MockIntel Core i7-6700HQ CPU 2.60GHz","PhysicalProcessorCount":1,"PhysicalCoreCount":4,"LogicalCoreCount":8,"RuntimeVersion":"Clr 4.0.x.mock","Architecture":"64mock","HasAttachedDebugger":false,"HasRyuJit":true,"Configuration":"CONFIGURATION","DotNetCliVersion":null,"ChronometerFrequency":{"Hertz":2531248},"HardwareTimerKind":"Tsc"},"Benchmarks":[{"DisplayInfo":"MockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Foo","MethodTitle":"Foo","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Foo","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":0},"Measurements":[{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":1}]},{"DisplayInfo":"MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Bar","MethodTitle":"Bar","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Bar","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":0},"Measurements":[{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":1}]}]}
+{"Title":"MockSummary","HostEnvironmentInfo":{"BenchmarkDotNetCaption":"BenchmarkDotNet","BenchmarkDotNetVersion":"0.10.x-mock","OsVersion":"Microsoft Windows NT 10.0.x.mock","ProcessorName":"MockIntel Core i7-6700HQ CPU 2.60GHz","PhysicalProcessorCount":1,"PhysicalCoreCount":4,"LogicalCoreCount":8,"RuntimeVersion":"Clr 4.0.x.mock","Architecture":"64mock","HasAttachedDebugger":false,"HasRyuJit":true,"Configuration":"CONFIGURATION","DotNetCliVersion":null,"ChronometerFrequency":{"Hertz":2531248},"HardwareTimerKind":"Tsc"},"Benchmarks":[{"DisplayInfo":"MockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Foo","MethodTitle":"Foo","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Foo","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":null},"Measurements":[{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":1}]},{"DisplayInfo":"MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Bar","MethodTitle":"Bar","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Bar","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":null},"Measurements":[{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":1}]}]}
############################################
MarkdownExporter-default
############################################
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
LongRun : extra output line
@@ -419,9 +419,9 @@ MarkdownExporter-atlassian
############################################
{noformat}
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
LongRun : extra output line
@@ -436,9 +436,9 @@ WarmupCount=15
MarkdownExporter-console
############################################
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
LongRun : extra output line
@@ -452,11 +452,11 @@ WarmupCount=15
############################################
MarkdownExporter-github
############################################
-``` ini
+```
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
LongRun : extra output line
@@ -472,9 +472,9 @@ WarmupCount=15
MarkdownExporter-stackoverflow
############################################
- BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+ BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
- Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
LongRun : extra output line
@@ -590,7 +590,7 @@ XmlExporter-brief
0
0
0
- 0
+
@@ -644,7 +644,7 @@ XmlExporter-brief
0
0
0
- 0
+
@@ -652,7 +652,7 @@ XmlExporter-brief
############################################
XmlExporter-brief-compressed
############################################
-MockSummaryBenchmarkDotNet0.10.x-mockMicrosoft Windows NT 10.0.x.mockMockIntel Core i7-6700HQ CPU 2.60GHz148Clr 4.0.x.mock64mockFalseTrueCONFIGURATION2531248TscMockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassFooFoo- 1
1111111110000NaNNaN110L999NaNNaNNaN11111111100000MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar- 1
1111111110000NaNNaN110L999NaNNaNNaN11111111100000
+MockSummaryBenchmarkDotNet0.10.x-mockMicrosoft Windows NT 10.0.x.mockMockIntel Core i7-6700HQ CPU 2.60GHz148Clr 4.0.x.mock64mockFalseTrueCONFIGURATION2531248TscMockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassFooFoo- 1
1111111110000NaNNaN110L999NaNNaNNaN1111111110000MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar- 1
1111111110000NaNNaN110L999NaNNaNNaN1111111110000
############################################
XmlExporter-full
############################################
@@ -729,7 +729,7 @@ XmlExporter-full
0
0
0
- 0
+
@@ -793,7 +793,7 @@ XmlExporter-full
0
0
0
- 0
+
@@ -811,4 +811,4 @@ XmlExporter-full
############################################
XmlExporter-full-compressed
############################################
-MockSummaryBenchmarkDotNet0.10.x-mockMicrosoft Windows NT 10.0.x.mockMockIntel Core i7-6700HQ CPU 2.60GHz148Clr 4.0.x.mock64mockFalseTrueCONFIGURATION2531248TscMockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassFooFoo- 1
1111111110000NaNNaN110L999NaNNaNNaN11111111100000WorkloadResult1111MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar- 1
1111111110000NaNNaN110L999NaNNaNNaN11111111100000WorkloadResult1111
+MockSummaryBenchmarkDotNet0.10.x-mockMicrosoft Windows NT 10.0.x.mockMockIntel Core i7-6700HQ CPU 2.60GHz148Clr 4.0.x.mock64mockFalseTrueCONFIGURATION2531248TscMockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassFooFoo- 1
1111111110000NaNNaN110L999NaNNaNNaN1111111110000WorkloadResult1111MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar- 1
1111111110000NaNNaN110L999NaNNaNNaN1111111110000WorkloadResult1111
diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_ru-RU.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_ru-RU.verified.txt
index b28fd9dd15..6071e78b4d 100644
--- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_ru-RU.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_ru-RU.verified.txt
@@ -2,9 +2,9 @@
AsciiDocExporter
############################################
....
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
LongRun : extra output line
@@ -35,9 +35,9 @@ HtmlExporter
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
LongRun : extra output line
@@ -141,7 +141,7 @@ JsonExporter-brief
"Gen1Collections":0,
"Gen2Collections":0,
"TotalOperations":0,
- "BytesAllocatedPerOperation":0
+ "BytesAllocatedPerOperation":null
}
},{
"DisplayInfo":"MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)",
@@ -206,7 +206,7 @@ JsonExporter-brief
"Gen1Collections":0,
"Gen2Collections":0,
"TotalOperations":0,
- "BytesAllocatedPerOperation":0
+ "BytesAllocatedPerOperation":null
}
}
]
@@ -214,7 +214,7 @@ JsonExporter-brief
############################################
JsonExporter-brief-compressed
############################################
-{"Title":"MockSummary","HostEnvironmentInfo":{"BenchmarkDotNetCaption":"BenchmarkDotNet","BenchmarkDotNetVersion":"0.10.x-mock","OsVersion":"Microsoft Windows NT 10.0.x.mock","ProcessorName":"MockIntel Core i7-6700HQ CPU 2.60GHz","PhysicalProcessorCount":1,"PhysicalCoreCount":4,"LogicalCoreCount":8,"RuntimeVersion":"Clr 4.0.x.mock","Architecture":"64mock","HasAttachedDebugger":false,"HasRyuJit":true,"Configuration":"CONFIGURATION","DotNetCliVersion":null,"ChronometerFrequency":{"Hertz":2531248},"HardwareTimerKind":"Tsc"},"Benchmarks":[{"DisplayInfo":"MockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Foo","MethodTitle":"Foo","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Foo","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":0}},{"DisplayInfo":"MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Bar","MethodTitle":"Bar","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Bar","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":0}}]}
+{"Title":"MockSummary","HostEnvironmentInfo":{"BenchmarkDotNetCaption":"BenchmarkDotNet","BenchmarkDotNetVersion":"0.10.x-mock","OsVersion":"Microsoft Windows NT 10.0.x.mock","ProcessorName":"MockIntel Core i7-6700HQ CPU 2.60GHz","PhysicalProcessorCount":1,"PhysicalCoreCount":4,"LogicalCoreCount":8,"RuntimeVersion":"Clr 4.0.x.mock","Architecture":"64mock","HasAttachedDebugger":false,"HasRyuJit":true,"Configuration":"CONFIGURATION","DotNetCliVersion":null,"ChronometerFrequency":{"Hertz":2531248},"HardwareTimerKind":"Tsc"},"Benchmarks":[{"DisplayInfo":"MockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Foo","MethodTitle":"Foo","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Foo","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":null}},{"DisplayInfo":"MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Bar","MethodTitle":"Bar","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Bar","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":null}}]}
############################################
JsonExporter-full
############################################
@@ -303,7 +303,7 @@ JsonExporter-full
"Gen1Collections":0,
"Gen2Collections":0,
"TotalOperations":0,
- "BytesAllocatedPerOperation":0
+ "BytesAllocatedPerOperation":null
},
"Measurements":[
{
@@ -378,7 +378,7 @@ JsonExporter-full
"Gen1Collections":0,
"Gen2Collections":0,
"TotalOperations":0,
- "BytesAllocatedPerOperation":0
+ "BytesAllocatedPerOperation":null
},
"Measurements":[
{
@@ -396,14 +396,14 @@ JsonExporter-full
############################################
JsonExporter-full-compressed
############################################
-{"Title":"MockSummary","HostEnvironmentInfo":{"BenchmarkDotNetCaption":"BenchmarkDotNet","BenchmarkDotNetVersion":"0.10.x-mock","OsVersion":"Microsoft Windows NT 10.0.x.mock","ProcessorName":"MockIntel Core i7-6700HQ CPU 2.60GHz","PhysicalProcessorCount":1,"PhysicalCoreCount":4,"LogicalCoreCount":8,"RuntimeVersion":"Clr 4.0.x.mock","Architecture":"64mock","HasAttachedDebugger":false,"HasRyuJit":true,"Configuration":"CONFIGURATION","DotNetCliVersion":null,"ChronometerFrequency":{"Hertz":2531248},"HardwareTimerKind":"Tsc"},"Benchmarks":[{"DisplayInfo":"MockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Foo","MethodTitle":"Foo","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Foo","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":0},"Measurements":[{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":1}]},{"DisplayInfo":"MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Bar","MethodTitle":"Bar","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Bar","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":0},"Measurements":[{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":1}]}]}
+{"Title":"MockSummary","HostEnvironmentInfo":{"BenchmarkDotNetCaption":"BenchmarkDotNet","BenchmarkDotNetVersion":"0.10.x-mock","OsVersion":"Microsoft Windows NT 10.0.x.mock","ProcessorName":"MockIntel Core i7-6700HQ CPU 2.60GHz","PhysicalProcessorCount":1,"PhysicalCoreCount":4,"LogicalCoreCount":8,"RuntimeVersion":"Clr 4.0.x.mock","Architecture":"64mock","HasAttachedDebugger":false,"HasRyuJit":true,"Configuration":"CONFIGURATION","DotNetCliVersion":null,"ChronometerFrequency":{"Hertz":2531248},"HardwareTimerKind":"Tsc"},"Benchmarks":[{"DisplayInfo":"MockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Foo","MethodTitle":"Foo","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Foo","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":null},"Measurements":[{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":1}]},{"DisplayInfo":"MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)","Namespace":"BenchmarkDotNet.Tests.Mocks","Type":"MockBenchmarkClass","Method":"Bar","MethodTitle":"Bar","Parameters":"","FullName":"BenchmarkDotNet.Tests.Mocks.MockFactory+MockBenchmarkClass.Bar","HardwareIntrinsics":"","Statistics":{"OriginalValues":[1],"N":1,"Min":1,"LowerFence":1,"Q1":1,"Median":1,"Mean":1,"Q3":1,"UpperFence":1,"Max":1,"InterquartileRange":0,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0,"Variance":0,"StandardDeviation":0,"Skewness":"","Kurtosis":"","ConfidenceInterval":{"N":1,"Mean":1,"StandardError":0,"Level":12,"Margin":"","Lower":"","Upper":""},"Percentiles":{"P0":1,"P25":1,"P50":1,"P67":1,"P80":1,"P85":1,"P90":1,"P95":1,"P100":1}},"Memory":{"Gen0Collections":0,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":0,"BytesAllocatedPerOperation":null},"Measurements":[{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":1}]}]}
############################################
MarkdownExporter-default
############################################
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
LongRun : extra output line
@@ -419,9 +419,9 @@ MarkdownExporter-atlassian
############################################
{noformat}
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
LongRun : extra output line
@@ -436,9 +436,9 @@ WarmupCount=15
MarkdownExporter-console
############################################
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
LongRun : extra output line
@@ -452,11 +452,11 @@ WarmupCount=15
############################################
MarkdownExporter-github
############################################
-``` ini
+```
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
LongRun : extra output line
@@ -472,9 +472,9 @@ WarmupCount=15
MarkdownExporter-stackoverflow
############################################
- BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+ BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
- Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
LongRun : extra output line
@@ -590,7 +590,7 @@ XmlExporter-brief
0
0
0
- 0
+
@@ -644,7 +644,7 @@ XmlExporter-brief
0
0
0
- 0
+
@@ -652,7 +652,7 @@ XmlExporter-brief
############################################
XmlExporter-brief-compressed
############################################
-MockSummaryBenchmarkDotNet0.10.x-mockMicrosoft Windows NT 10.0.x.mockMockIntel Core i7-6700HQ CPU 2.60GHz148Clr 4.0.x.mock64mockFalseTrueCONFIGURATION2531248TscMockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassFooFoo- 1
1111111110000NaNNaN110L999NaNNaNNaN11111111100000MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar- 1
1111111110000NaNNaN110L999NaNNaNNaN11111111100000
+MockSummaryBenchmarkDotNet0.10.x-mockMicrosoft Windows NT 10.0.x.mockMockIntel Core i7-6700HQ CPU 2.60GHz148Clr 4.0.x.mock64mockFalseTrueCONFIGURATION2531248TscMockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassFooFoo- 1
1111111110000NaNNaN110L999NaNNaNNaN1111111110000MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar- 1
1111111110000NaNNaN110L999NaNNaNNaN1111111110000
############################################
XmlExporter-full
############################################
@@ -729,7 +729,7 @@ XmlExporter-full
0
0
0
- 0
+
@@ -793,7 +793,7 @@ XmlExporter-full
0
0
0
- 0
+
@@ -811,4 +811,4 @@ XmlExporter-full
############################################
XmlExporter-full-compressed
############################################
-MockSummaryBenchmarkDotNet0.10.x-mockMicrosoft Windows NT 10.0.x.mockMockIntel Core i7-6700HQ CPU 2.60GHz148Clr 4.0.x.mock64mockFalseTrueCONFIGURATION2531248TscMockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassFooFoo- 1
1111111110000NaNNaN110L999NaNNaNNaN11111111100000WorkloadResult1111MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar- 1
1111111110000NaNNaN110L999NaNNaNNaN11111111100000WorkloadResult1111
+MockSummaryBenchmarkDotNet0.10.x-mockMicrosoft Windows NT 10.0.x.mockMockIntel Core i7-6700HQ CPU 2.60GHz148Clr 4.0.x.mock64mockFalseTrueCONFIGURATION2531248TscMockBenchmarkClass.Foo: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassFooFoo- 1
1111111110000NaNNaN110L999NaNNaNNaN1111111110000WorkloadResult1111MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar- 1
1111111110000NaNNaN110L999NaNNaNNaN1111111110000WorkloadResult1111
diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Escape_ParamsAndArguments.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Escape_ParamsAndArguments.verified.txt
index 5bc80750d2..40bedf0647 100644
--- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Escape_ParamsAndArguments.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Escape_ParamsAndArguments.verified.txt
@@ -1,8 +1,8 @@
=== Escape_ParamsAndArguments ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
DefaultJob : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Invalid_TwoJobBaselines.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Invalid_TwoJobBaselines.verified.txt
index 5bd0d4d330..c2ce72cecb 100644
--- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Invalid_TwoJobBaselines.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Invalid_TwoJobBaselines.verified.txt
@@ -1,8 +1,8 @@
=== Invalid_TwoJobBaselines ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
Job1 : extra output line
Job2 : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Invalid_TwoMethodBaselines.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Invalid_TwoMethodBaselines.verified.txt
index 74b661c893..c7782ee480 100644
--- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Invalid_TwoMethodBaselines.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Invalid_TwoMethodBaselines.verified.txt
@@ -1,8 +1,8 @@
=== Invalid_TwoMethodBaselines ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
DefaultJob : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_JobBaseline_MethodsJobs.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_JobBaseline_MethodsJobs.verified.txt
index aa8444a3d1..af6d5917f2 100644
--- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_JobBaseline_MethodsJobs.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_JobBaseline_MethodsJobs.verified.txt
@@ -1,8 +1,8 @@
=== JobBaseline_MethodsJobs ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
Job1 : extra output line
Job2 : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_JobBaseline_MethodsParamsJobs.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_JobBaseline_MethodsParamsJobs.verified.txt
index 136b7d77b3..cff1ed6d40 100644
--- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_JobBaseline_MethodsParamsJobs.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_JobBaseline_MethodsParamsJobs.verified.txt
@@ -1,8 +1,8 @@
=== JobBaseline_MethodsParamsJobs ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
Job1 : extra output line
Job2 : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_Methods.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_Methods.verified.txt
index 8af224085c..81f3e737f4 100644
--- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_Methods.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_Methods.verified.txt
@@ -1,8 +1,8 @@
=== MethodBaseline_Methods ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
DefaultJob : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsJobs.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsJobs.verified.txt
index f96c82e806..df10b2d226 100644
--- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsJobs.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsJobs.verified.txt
@@ -1,8 +1,8 @@
=== MethodBaseline_MethodsJobs ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
Job1 : extra output line
Job2 : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsParams.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsParams.verified.txt
index 7abc81047b..bd2c4984bd 100644
--- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsParams.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsParams.verified.txt
@@ -1,8 +1,8 @@
=== MethodBaseline_MethodsParams ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
DefaultJob : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsParamsJobs.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsParamsJobs.verified.txt
index f63f8cd50b..f07268e77c 100644
--- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsParamsJobs.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsParamsJobs.verified.txt
@@ -1,8 +1,8 @@
=== MethodBaseline_MethodsParamsJobs ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
Job1 : extra output line
Job2 : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodJobBaseline_MethodsJobs.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodJobBaseline_MethodsJobs.verified.txt
index 228d84f821..00cfea261d 100644
--- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodJobBaseline_MethodsJobs.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodJobBaseline_MethodsJobs.verified.txt
@@ -1,8 +1,8 @@
=== MethodJobBaseline_MethodsJobs ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
Job1 : extra output line
Job2 : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodJobBaseline_MethodsJobsParams.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodJobBaseline_MethodsJobsParams.verified.txt
index d966f4f7c1..90a760d058 100644
--- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodJobBaseline_MethodsJobsParams.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodJobBaseline_MethodsJobsParams.verified.txt
@@ -1,8 +1,8 @@
=== MethodJobBaseline_MethodsJobsParams ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
Job1 : extra output line
Job2 : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs.verified.txt
index ba969a206a..53b548d52c 100644
--- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs.verified.txt
@@ -1,8 +1,8 @@
=== NoBaseline_MethodsParamsJobs ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
Job1 : extra output line
Job2 : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByAll.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByAll.verified.txt
index ba6ec2fa2c..8063d96fe8 100644
--- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByAll.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByAll.verified.txt
@@ -1,8 +1,8 @@
=== NoBaseline_MethodsParamsJobs_GroupByAll ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
Job1 : extra output line
Job2 : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByCategory.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByCategory.verified.txt
index 63a9edf151..9ceee1be91 100644
--- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByCategory.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByCategory.verified.txt
@@ -1,8 +1,8 @@
=== NoBaseline_MethodsParamsJobs_GroupByCategory ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
Job1 : extra output line
Job2 : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByJob.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByJob.verified.txt
index 11dd4b6277..a3b08eb9b9 100644
--- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByJob.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByJob.verified.txt
@@ -1,8 +1,8 @@
=== NoBaseline_MethodsParamsJobs_GroupByJob ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
Job1 : extra output line
Job2 : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByMethod.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByMethod.verified.txt
index ca9783e827..9af19b0c2f 100644
--- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByMethod.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByMethod.verified.txt
@@ -1,8 +1,8 @@
=== NoBaseline_MethodsParamsJobs_GroupByMethod ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
Job1 : extra output line
Job2 : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByParams.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByParams.verified.txt
index 0090ae2c75..2556795c77 100644
--- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByParams.verified.txt
+++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByParams.verified.txt
@@ -1,8 +1,8 @@
=== NoBaseline_MethodsParamsJobs_GroupByParams ===
-BenchmarkDotNet=v0.10.x-mock, OS=Microsoft Windows NT 10.0.x.mock, VM=Hyper-V
+BenchmarkDotNet v0.10.x-mock, Microsoft Windows NT 10.0.x.mock (Hyper-V)
MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores
-Frequency=2531248 Hz, Resolution=395.0620 ns, Timer=TSC
+Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC
[Host] : Clr 4.0.x.mock, 64mock RyuJIT-v4.6.x.mock CONFIGURATION
Job1 : extra output line
Job2 : extra output line
diff --git a/tests/BenchmarkDotNet.Tests/Helpers/LinuxOsReleaseHelperTests.cs b/tests/BenchmarkDotNet.Tests/Helpers/LinuxOsReleaseHelperTests.cs
new file mode 100644
index 0000000000..91749b112e
--- /dev/null
+++ b/tests/BenchmarkDotNet.Tests/Helpers/LinuxOsReleaseHelperTests.cs
@@ -0,0 +1,206 @@
+using System;
+using BenchmarkDotNet.Helpers;
+using Xunit;
+
+namespace BenchmarkDotNet.Tests.Helpers
+{
+ public class LinuxOsReleaseHelperTests
+ {
+ [Theory]
+ [InlineData("""
+ NAME="Ubuntu"
+ VERSION="20.04.1 LTS (Focal Fossa)"
+ ID=ubuntu
+ ID_LIKE=debian
+ PRETTY_NAME="Ubuntu 20.04.1 LTS"
+ VERSION_ID="20.04"
+ HOME_URL="https://www.ubuntu.com/"
+ SUPPORT_URL="https://help.ubuntu.com/"
+ BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
+ PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
+ VERSION_CODENAME=focal
+ UBUNTU_CODENAME=focal
+ """, "Ubuntu 20.04.1 LTS (Focal Fossa)")]
+ [InlineData("""
+ PRETTY_NAME="Debian GNU/Linux 10 (buster)"
+ NAME="Debian GNU/Linux"
+ VERSION_ID="10"
+ VERSION="10 (buster)"
+ VERSION_CODENAME=buster
+ ID=debian
+ HOME_URL="https://www.debian.org/"
+ SUPPORT_URL="https://www.debian.org/support"
+ BUG_REPORT_URL="https://bugs.debian.org/"
+ """, "Debian GNU/Linux 10 (buster)")]
+ [InlineData("""
+ NAME=Fedora
+ VERSION="32 (Thirty Two)"
+ ID=fedora
+ VERSION_ID=32
+ VERSION_CODENAME=""
+ PLATFORM_ID="platform:f32"
+ PRETTY_NAME="Fedora 32 (Thirty Two)"
+ ANSI_COLOR="0;34"
+ LOGO=fedora-logo-icon
+ CPE_NAME="cpe:/o:fedoraproject:fedora:32"
+ HOME_URL="https://fedoraproject.org/"
+ DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f32/system-administrators-guide/"
+ SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
+ BUG_REPORT_URL="https://bugzilla.redhat.com/"
+ REDHAT_BUGZILLA_PRODUCT="Fedora"
+ REDHAT_BUGZILLA_PRODUCT_VERSION=32
+ REDHAT_SUPPORT_PRODUCT="Fedora"
+ REDHAT_SUPPORT_PRODUCT_VERSION=32
+ PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
+ """, "Fedora 32 (Thirty Two)")]
+ [InlineData("""
+ NAME="CentOS Linux"
+ VERSION="8 (Core)"
+ ID="centos"
+ ID_LIKE="rhel fedora"
+ VERSION_ID="8"
+ PLATFORM_ID="platform:el8"
+ PRETTY_NAME="CentOS Linux 8 (Core)"
+ ANSI_COLOR="0;31"
+ CPE_NAME="cpe:/o:centos:centos:8"
+ HOME_URL="https://www.centos.org/"
+ BUG_REPORT_URL="https://bugs.centos.org/"
+
+ CENTOS_MANTISBT_PROJECT="CentOS-8"
+ CENTOS_MANTISBT_PROJECT_VERSION="8"
+ REDHAT_SUPPORT_PRODUCT="centos"
+ REDHAT_SUPPORT_PRODUCT_VERSION="8"
+ """, "CentOS Linux 8 (Core)")]
+ [InlineData("""
+ NAME="Arch Linux"
+ PRETTY_NAME="Arch Linux"
+ ID=arch
+ BUILD_ID=rolling
+ ANSI_COLOR="38;2;23;147;209"
+ HOME_URL="https://archlinux.org/"
+ DOCUMENTATION_URL="https://wiki.archlinux.org/"
+ SUPPORT_URL="https://bbs.archlinux.org/"
+ BUG_REPORT_URL="https://bugs.archlinux.org/"
+ LOGO=archlinux
+ """, "Arch Linux")]
+ [InlineData("""
+ NAME="openSUSE Leap"
+ VERSION="15.2"
+ ID="opensuse-leap"
+ ID_LIKE="suse opensuse"
+ VERSION_ID="15.2"
+ PRETTY_NAME="openSUSE Leap 15.2"
+ ANSI_COLOR="0;32"
+ CPE_NAME="cpe:/o:opensuse:leap:15.2"
+ BUG_REPORT_URL="https://bugs.opensuse.org"
+ HOME_URL="https://www.opensuse.org/"
+ """, "openSUSE Leap 15.2")]
+ [InlineData("""
+ NAME="Manjaro Linux"
+ ID=manjaro
+ PRETTY_NAME="Manjaro Linux"
+ ANSI_COLOR="1;32"
+ HOME_URL="https://manjaro.org/"
+ SUPPORT_URL="https://manjaro.org/"
+ BUG_REPORT_URL="https://bugs.manjaro.org/"
+ LOGO=manjarolinux
+ """, "Manjaro Linux")]
+ [InlineData("""
+ NAME="Linux Mint"
+ VERSION="20 (Ulyana)"
+ ID=linuxmint
+ ID_LIKE=ubuntu
+ PRETTY_NAME="Linux Mint 20"
+ VERSION_ID="20"
+ HOME_URL="https://www.linuxmint.com/"
+ SUPPORT_URL="https://forums.linuxmint.com/"
+ BUG_REPORT_URL="http://linuxmint-troubleshooting-guide.readthedocs.io/en/latest/"
+ PRIVACY_POLICY_URL="https://www.linuxmint.com/"
+ VERSION_CODENAME=ulyana
+ UBUNTU_CODENAME=focal
+ """, "Linux Mint 20 (Ulyana)")]
+ [InlineData("""
+ NAME="Alpine Linux"
+ ID=alpine
+ VERSION_ID=3.12.0
+ PRETTY_NAME="Alpine Linux v3.12"
+ HOME_URL="https://alpinelinux.org/"
+ BUG_REPORT_URL="https://bugs.alpinelinux.org/"
+ """, "Alpine Linux v3.12")]
+ [InlineData("""
+ NAME="Solus"
+ VERSION="4.1"
+ ID="solus"
+ PRETTY_NAME="Solus"
+ ANSI_COLOR="1;34"
+ HOME_URL="https://getsol.us"
+ SUPPORT_URL="https://getsol.us/articles/contributing/getting-involved/en/"
+ BUG_REPORT_URL="https://dev.getsol.us/"
+ """, "Solus 4.1")]
+ [InlineData("""
+ NAME="Red Hat Enterprise Linux"
+ VERSION="8.2 (Ootpa)"
+ ID="rhel"
+ ID_LIKE="fedora"
+ VERSION_ID="8.2"
+ PLATFORM_ID="platform:el8"
+ PRETTY_NAME="Red Hat Enterprise Linux 8.2 (Ootpa)"
+ ANSI_COLOR="0;31"
+ CPE_NAME="cpe:/o:redhat:enterprise_linux:8.2:GA"
+ HOME_URL="https://www.redhat.com/"
+ BUG_REPORT_URL="https://bugzilla.redhat.com/"
+ REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 8"
+ REDHAT_BUGZILLA_PRODUCT_VERSION=8.2
+ REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
+ REDHAT_SUPPORT_PRODUCT_VERSION="8.2"
+ """, "Red Hat Enterprise Linux 8.2 (Ootpa)")]
+ [InlineData("""
+ PRETTY_NAME="Kali GNU/Linux Rolling"
+ NAME="Kali GNU/Linux"
+ ID=kali
+ VERSION="2020.2"
+ VERSION_ID="2020.2"
+ VERSION_CODENAME="kali-rolling"
+ ID_LIKE=debian
+ ANSI_COLOR="1;31"
+ HOME_URL="https://www.kali.org/"
+ SUPPORT_URL="https://forums.kali.org/"
+ BUG_REPORT_URL="https://bugs.kali.org/"
+ """, "Kali GNU/Linux 2020.2")]
+ [InlineData("""
+ NAME="elementary OS"
+ VERSION="5.1.7 Hera"
+ ID=elementary
+ ID_LIKE=ubuntu
+ PRETTY_NAME="elementary OS 5.1.7 Hera"
+ LOGO=distributor-logo
+ VERSION_ID="5.1.7"
+ HOME_URL="https://elementary.io/"
+ SUPPORT_URL="https://elementary.io/support"
+ BUG_REPORT_URL="https://github.com/elementary/os/issues/new"
+ PRIVACY_POLICY_URL="https://elementary.io/privacy-policy"
+ VERSION_CODENAME=hera
+ UBUNTU_CODENAME=bionic
+ """, "elementary OS 5.1.7 Hera")]
+ [InlineData("""
+ NAME="Zorin OS"
+ VERSION="15.2"
+ ID=zorin
+ ID_LIKE=ubuntu
+ PRETTY_NAME="Zorin OS 15.2"
+ VERSION_ID="15"
+ HOME_URL="https://www.zorinos.com/"
+ SUPPORT_URL="https://www.zorinos.com/help"
+ BUG_REPORT_URL="https://www.zorinos.com/contact"
+ PRIVACY_POLICY_URL="https://www.zorinos.com/legal/privacy"
+ VERSION_CODENAME=bionic
+ UBUNTU_CODENAME=bionic
+ """, "Zorin OS 15.2")]
+ public void LinuxOsReleaseHelperTest(string osReleaseContent, string expectedName)
+ {
+ string[] lines = osReleaseContent.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
+ string actualName = LinuxOsReleaseHelper.GetNameByOsRelease(lines);
+ Assert.Equal(expectedName, actualName);
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/BenchmarkDotNet.Tests/Mocks/MockFactory.cs b/tests/BenchmarkDotNet.Tests/Mocks/MockFactory.cs
index f1393f8b62..b51f978edf 100644
--- a/tests/BenchmarkDotNet.Tests/Mocks/MockFactory.cs
+++ b/tests/BenchmarkDotNet.Tests/Mocks/MockFactory.cs
@@ -57,6 +57,17 @@ public static Summary CreateSummary(IConfig config, bool hugeSd, Metric[] metric
ImmutableArray.Empty,
ImmutableArray.Empty);
+ public static Summary CreateSummary(IConfig config, bool hugeSd, Func metricsBuilder) => new Summary(
+ "MockSummary",
+ CreateBenchmarks(config).Select(b => CreateReport(b, hugeSd, metricsBuilder(b))).ToImmutableArray(),
+ new HostEnvironmentInfoBuilder().Build(),
+ string.Empty,
+ string.Empty,
+ TimeSpan.FromMinutes(1),
+ TestCultureInfo.Instance,
+ ImmutableArray.Empty,
+ ImmutableArray.Empty);
+
private static ImmutableArray CreateReports(IConfig config)
=> CreateBenchmarks(config).Select(CreateSimpleReport).ToImmutableArray();
diff --git a/tests/BenchmarkDotNet.Tests/ParameterComparerTests.cs b/tests/BenchmarkDotNet.Tests/ParameterComparerTests.cs
index 0f01045b5c..2ef1bc8891 100644
--- a/tests/BenchmarkDotNet.Tests/ParameterComparerTests.cs
+++ b/tests/BenchmarkDotNet.Tests/ParameterComparerTests.cs
@@ -157,6 +157,70 @@ public void IComparableComparisionTest()
Assert.Equal(4, ((ComplexParameter)sortedData[3].Items[0].Value).Value);
}
+ [Fact]
+ public void ValueTupleWithNonIComparableInnerTypesComparisionTest()
+ {
+ var comparer = ParameterComparer.Instance;
+ var originalData = new[]
+ {
+ new ParameterInstances(new[]
+ {
+ new ParameterInstance(sharedDefinition, (new ComplexNonIComparableParameter(), 1), null)
+ }),
+ new ParameterInstances(new[]
+ {
+ new ParameterInstance(sharedDefinition, (new ComplexNonIComparableParameter(), 3), null)
+ }),
+ new ParameterInstances(new[]
+ {
+ new ParameterInstance(sharedDefinition, (new ComplexNonIComparableParameter(), 2), null)
+ }),
+ new ParameterInstances(new[]
+ {
+ new ParameterInstance(sharedDefinition, (new ComplexNonIComparableParameter(), 4), null)
+ })
+ };
+
+ var sortedData = originalData.OrderBy(d => d, comparer).ToArray();
+
+ Assert.Equal(1, (((ComplexNonIComparableParameter, int))sortedData[0].Items[0].Value).Item2);
+ Assert.Equal(2, (((ComplexNonIComparableParameter, int))sortedData[1].Items[0].Value).Item2);
+ Assert.Equal(3, (((ComplexNonIComparableParameter, int))sortedData[2].Items[0].Value).Item2);
+ Assert.Equal(4, (((ComplexNonIComparableParameter, int))sortedData[3].Items[0].Value).Item2);
+ }
+
+ [Fact]
+ public void TupleWithNonIComparableInnerTypesComparisionTest()
+ {
+ var comparer = ParameterComparer.Instance;
+ var originalData = new[]
+ {
+ new ParameterInstances(new[]
+ {
+ new ParameterInstance(sharedDefinition, Tuple.Create(new ComplexNonIComparableParameter(), 1), null)
+ }),
+ new ParameterInstances(new[]
+ {
+ new ParameterInstance(sharedDefinition, Tuple.Create(new ComplexNonIComparableParameter(), 3), null)
+ }),
+ new ParameterInstances(new[]
+ {
+ new ParameterInstance(sharedDefinition, Tuple.Create(new ComplexNonIComparableParameter(), 2), null)
+ }),
+ new ParameterInstances(new[]
+ {
+ new ParameterInstance(sharedDefinition, Tuple.Create(new ComplexNonIComparableParameter(), 4), null)
+ })
+ };
+
+ var sortedData = originalData.OrderBy(d => d, comparer).ToArray();
+
+ Assert.Equal(1, ((Tuple)sortedData[0].Items[0].Value).Item2);
+ Assert.Equal(2, ((Tuple)sortedData[1].Items[0].Value).Item2);
+ Assert.Equal(3, ((Tuple)sortedData[2].Items[0].Value).Item2);
+ Assert.Equal(4, ((Tuple)sortedData[3].Items[0].Value).Item2);
+ }
+
private class ComplexParameter : IComparable, IComparable
{
public ComplexParameter(int value, string name)
@@ -199,5 +263,9 @@ public int CompareTo(object obj)
return CompareTo(other);
}
}
+
+ private class ComplexNonIComparableParameter
+ {
+ }
}
}
\ No newline at end of file
diff --git a/tests/BenchmarkDotNet.Tests/Reports/FakeMetricDescriptor.cs b/tests/BenchmarkDotNet.Tests/Reports/FakeMetricDescriptor.cs
index c005345aba..8c7316e638 100644
--- a/tests/BenchmarkDotNet.Tests/Reports/FakeMetricDescriptor.cs
+++ b/tests/BenchmarkDotNet.Tests/Reports/FakeMetricDescriptor.cs
@@ -20,5 +20,6 @@ public FakeMetricDescriptor(string id, string legend, string numberFormat = null
public string Unit { get; }
public bool TheGreaterTheBetter { get; }
public int PriorityInCategory => 0;
+ public bool GetIsAvailable(Metric metric) => true;
}
}
diff --git a/tests/BenchmarkDotNet.Tests/Reports/SummaryTableTests.cs b/tests/BenchmarkDotNet.Tests/Reports/SummaryTableTests.cs
index 6ac6a6f440..f33b8604e2 100644
--- a/tests/BenchmarkDotNet.Tests/Reports/SummaryTableTests.cs
+++ b/tests/BenchmarkDotNet.Tests/Reports/SummaryTableTests.cs
@@ -108,5 +108,46 @@ public void ZeroValueInMetricColumnIsNotDashedWithCustomStyle()
// assert
Assert.True(actual.All(value => "0.0" == value));
}
+
+ [Fact] // Issue #1783
+ public void NaNValueInMetricColumnIsQuestionMark()
+ {
+ // arrange
+ var config = ManualConfig.Create(DefaultConfig.Instance);
+ var metrics = new[] { new Metric(new FakeMetricDescriptor("metric1", "some legend", "0.0"), double.NaN) };
+ var style = config.SummaryStyle.WithZeroMetricValuesInContent();
+
+ // act
+ var summary = MockFactory.CreateSummary(config, hugeSd: false, metrics);
+ var table = new SummaryTable(summary, style);
+ var actual = table.Columns.First(c => c.Header == "metric1").Content;
+
+ // assert
+ Assert.True(actual.All(value => value == MetricColumn.UnknownRepresentation));
+ }
+
+ [Fact] // Issue #1783
+ public void MissingValueInMetricColumnIsNA()
+ {
+ // arrange
+ var config = ManualConfig.Create(DefaultConfig.Instance);
+ bool firstMetricsUsed = false;
+
+ // act
+ var summary = MockFactory.CreateSummary(config, hugeSd: false, benchmarkCase =>
+ {
+ if (!firstMetricsUsed)
+ {
+ firstMetricsUsed = true;
+ return new[] { new Metric(new FakeMetricDescriptor("metric1", "some legend", "0.0"), 0.0) };
+ }
+ return System.Array.Empty();
+ });
+ var table = new SummaryTable(summary);
+ var actual = table.Columns.First(c => c.Header == "metric1").Content;
+
+ // assert
+ Assert.Equal(new[] { "-", "NA" }, actual);
+ }
}
}
\ No newline at end of file
diff --git a/tests/BenchmarkDotNet.Tests/Reports/SummaryTests.cs b/tests/BenchmarkDotNet.Tests/Reports/SummaryTests.cs
index d0f8452e35..8952accb40 100644
--- a/tests/BenchmarkDotNet.Tests/Reports/SummaryTests.cs
+++ b/tests/BenchmarkDotNet.Tests/Reports/SummaryTests.cs
@@ -92,6 +92,7 @@ private sealed class FakeMetricDescriptor : IMetricDescriptor
public string Unit { get; } = nameof(Unit);
public bool TheGreaterTheBetter { get; }
public int PriorityInCategory => 0;
+ public bool GetIsAvailable(Metric metric) => true;
}
}
}