From a519b6cba5bb58b192c1756c820955a49812b4ed Mon Sep 17 00:00:00 2001 From: Tim Cassell <35501420+timcassell@users.noreply.github.com> Date: Mon, 3 Jul 2023 05:56:19 -0400 Subject: [PATCH 01/73] Copy PackageReferences to generated csproj (#2347) * Copy PackageReferences to generated csproj. Explicitly specify program entry point. * Fix closing tag check. * Parse `CsProj` with `XmlDocument` instead of `TextReader`. Added `PackageReference` to `SettingsWeWantToCopy`. --- src/BenchmarkDotNet/Templates/CsProj.txt | 9 +- .../Templates/MonoAOTLLVMCsProj.txt | 5 + src/BenchmarkDotNet/Templates/WasmCsProj.txt | 6 +- .../Toolchains/CsProj/CsProjGenerator.cs | 195 +++++++++++++----- .../MonoAotLLVM/MonoAotLLVMGenerator.cs | 38 ++-- .../Toolchains/MonoWasm/WasmGenerator.cs | 38 ++-- .../CsProjGeneratorTests.cs | 114 +++++++--- 7 files changed, 292 insertions(+), 113 deletions(-) diff --git a/src/BenchmarkDotNet/Templates/CsProj.txt b/src/BenchmarkDotNet/Templates/CsProj.txt index 0a73ea17e4..5cd08250dc 100644 --- a/src/BenchmarkDotNet/Templates/CsProj.txt +++ b/src/BenchmarkDotNet/Templates/CsProj.txt @@ -21,14 +21,12 @@ true true - - $COPIEDSETTINGS$ - latest true false + BenchmarkDotNet.Autogenerated.UniqueProgramName @@ -38,6 +36,11 @@ + + + $COPIEDSETTINGS$ + + $RUNTIMESETTINGS$ diff --git a/src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt b/src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt index 8ba013fdac..a0ad858c54 100644 --- a/src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt +++ b/src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt @@ -10,6 +10,7 @@ $PROGRAMNAME$ false true + BenchmarkDotNet.Autogenerated.UniqueProgramName @@ -24,6 +25,10 @@ + + $COPIEDSETTINGS$ + + 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..2934a28ed2 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,20 @@ 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", + "PackageReference" + }.ToImmutableArray(); public string RuntimeFrameworkVersion { get; } @@ -57,24 +70,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 +109,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/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/tests/BenchmarkDotNet.Tests/CsProjGeneratorTests.cs b/tests/BenchmarkDotNet.Tests/CsProjGeneratorTests.cs index cd0f48547d..1888e05227 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,72 @@ 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] + public void PackageReferenceSingleLineGetsCopied() + { + const string WithPackageReference = @" + + + AnyCPU + + + + + + +"; + var sut = new CsProjGenerator("netcoreapp3.0", null, null, null, true); + + var xmlDoc = new XmlDocument(); + xmlDoc.LoadXml(WithPackageReference); + var (customProperties, sdkName) = sut.GetSettingsThatNeedToBeCopied(xmlDoc, TestAssemblyFileInfo); + + AssertCustomProperties(@" + +", customProperties); + Assert.Equal("Microsoft.NET.Sdk", sdkName); + } + + [Fact] + public void PackageReferenceMultiLineGetsCopied() + { + const string WithPackageReference = @" + + + AnyCPU + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + +"; + var sut = new CsProjGenerator("netcoreapp3.0", null, null, null, true); + + var xmlDoc = new XmlDocument(); + xmlDoc.LoadXml(WithPackageReference); + var (customProperties, sdkName) = sut.GetSettingsThatNeedToBeCopied(xmlDoc, TestAssemblyFileInfo); + + AssertCustomProperties(@" + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + +", customProperties); + Assert.Equal("Microsoft.NET.Sdk", sdkName); } [Fact] @@ -108,13 +172,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 +204,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); } From 74c1e13643cd64aa1dd2c08f081a36e7dba76655 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Mon, 3 Jul 2023 11:59:44 +0200 Subject: [PATCH 02/73] Added platform property to MsBuildSettingsBuild We favored consistency within our if-statement by adding the platform property to the method MsBuildSettingsBuild when the context is running on Windows. This mirrors the previously implemented MsBuildSettingsRestore method, ensuring similar behavior and preventing potential build issues in the future. --- build/Program.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/build/Program.cs b/build/Program.cs index c99c1a5a5e..7c9090086e 100644 --- a/build/Program.cs +++ b/build/Program.cs @@ -125,6 +125,7 @@ public BuildContext(ICakeContext context) if (context.IsRunningOnWindows()) { MsBuildSettingsRestore.WithProperty("Platform", "Any CPU"); + MsBuildSettingsBuild.WithProperty("Platform", "Any CPU"); } } From 4e9edb000cf47b266c39aacaff9fbd590219bf5c Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Mon, 3 Jul 2023 13:14:17 +0200 Subject: [PATCH 03/73] Update Pack workflow --- build/Program.cs | 7 ++----- build/common.props | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/build/Program.cs b/build/Program.cs index 7c9090086e..5aac4721d7 100644 --- a/build/Program.cs +++ b/build/Program.cs @@ -425,9 +425,7 @@ public override void Run(BuildContext context) Configuration = context.BuildConfiguration, OutputDirectory = context.ArtifactsDirectory.FullPath, ArgumentCustomization = args => args.Append("--include-symbols").Append("-p:SymbolPackageFormat=snupkg"), - MSBuildSettings = context.MsBuildSettingsPack, - NoBuild = true, - NoRestore = true + MSBuildSettings = context.MsBuildSettingsPack }; foreach (var project in context.AllPackableSrcProjects) @@ -436,8 +434,7 @@ public override void Run(BuildContext context) var settingsTemplate = new DotNetPackSettings { Configuration = context.BuildConfiguration, - OutputDirectory = context.ArtifactsDirectory.FullPath, - MSBuildSettings = context.MsBuildSettingsPack + OutputDirectory = context.ArtifactsDirectory.FullPath }; context.DotNetPack(context.TemplatesTestsProjectFile.FullPath, settingsTemplate); } diff --git a/build/common.props b/build/common.props index c2844cce61..ec05a7bdc7 100644 --- a/build/common.props +++ b/build/common.props @@ -41,7 +41,7 @@ $(VersionPrefix).$(APPVEYOR_BUILD_NUMBER) - + develop ci From 9b82273b8975ec2da3a44511c5a9f30ace8ccf03 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Mon, 3 Jul 2023 16:38:52 +0200 Subject: [PATCH 04/73] Move generated changelog details to a separate branch --- build/Build.csproj | 1 + build/Program.cs | 22 +- docs/_changelog/.gitignore | 1 + docs/_changelog/details/v0.10.0.md | 138 ---------- docs/_changelog/details/v0.10.1.md | 71 ------ docs/_changelog/details/v0.10.10.md | 179 ------------- docs/_changelog/details/v0.10.11.md | 60 ----- docs/_changelog/details/v0.10.12.md | 96 ------- docs/_changelog/details/v0.10.13.md | 103 -------- docs/_changelog/details/v0.10.14.md | 94 ------- docs/_changelog/details/v0.10.2.md | 71 ------ docs/_changelog/details/v0.10.3.md | 114 --------- docs/_changelog/details/v0.10.4.md | 169 ------------- docs/_changelog/details/v0.10.5.md | 45 ---- docs/_changelog/details/v0.10.6.md | 38 --- docs/_changelog/details/v0.10.7.md | 55 ---- docs/_changelog/details/v0.10.8.md | 40 --- docs/_changelog/details/v0.10.9.md | 94 ------- docs/_changelog/details/v0.11.0.md | 344 ------------------------- docs/_changelog/details/v0.11.1.md | 62 ----- docs/_changelog/details/v0.11.2.md | 185 -------------- docs/_changelog/details/v0.11.3.md | 72 ------ docs/_changelog/details/v0.11.4.md | 220 ---------------- docs/_changelog/details/v0.11.5.md | 108 -------- docs/_changelog/details/v0.12.0.md | 255 ------------------- docs/_changelog/details/v0.12.1.md | 197 --------------- docs/_changelog/details/v0.13.0.md | 315 ----------------------- docs/_changelog/details/v0.13.1.md | 92 ------- docs/_changelog/details/v0.13.2.md | 375 ---------------------------- docs/_changelog/details/v0.13.3.md | 229 ----------------- docs/_changelog/details/v0.13.4.md | 39 --- docs/_changelog/details/v0.13.5.md | 54 ---- docs/_changelog/details/v0.7.0.md | 81 ------ docs/_changelog/details/v0.7.1.md | 25 -- docs/_changelog/details/v0.7.2.md | 23 -- docs/_changelog/details/v0.7.3.md | 22 -- docs/_changelog/details/v0.7.4.md | 23 -- docs/_changelog/details/v0.7.5.md | 25 -- docs/_changelog/details/v0.7.6.md | 34 --- docs/_changelog/details/v0.7.7.md | 36 --- docs/_changelog/details/v0.7.8.md | 61 ----- docs/_changelog/details/v0.8.0.md | 92 ------- docs/_changelog/details/v0.8.1.md | 34 --- docs/_changelog/details/v0.8.2.md | 57 ----- docs/_changelog/details/v0.9.0.md | 58 ----- docs/_changelog/details/v0.9.1.md | 27 -- docs/_changelog/details/v0.9.2.md | 72 ------ docs/_changelog/details/v0.9.3.md | 37 --- docs/_changelog/details/v0.9.4.md | 94 ------- docs/_changelog/details/v0.9.5.md | 82 ------ docs/_changelog/details/v0.9.6.md | 78 ------ docs/_changelog/details/v0.9.7.md | 58 ----- docs/_changelog/details/v0.9.8.md | 116 --------- docs/_changelog/details/v0.9.9.md | 85 ------- 54 files changed, 21 insertions(+), 5137 deletions(-) create mode 100644 docs/_changelog/.gitignore delete mode 100644 docs/_changelog/details/v0.10.0.md delete mode 100644 docs/_changelog/details/v0.10.1.md delete mode 100644 docs/_changelog/details/v0.10.10.md delete mode 100644 docs/_changelog/details/v0.10.11.md delete mode 100644 docs/_changelog/details/v0.10.12.md delete mode 100644 docs/_changelog/details/v0.10.13.md delete mode 100644 docs/_changelog/details/v0.10.14.md delete mode 100644 docs/_changelog/details/v0.10.2.md delete mode 100644 docs/_changelog/details/v0.10.3.md delete mode 100644 docs/_changelog/details/v0.10.4.md delete mode 100644 docs/_changelog/details/v0.10.5.md delete mode 100644 docs/_changelog/details/v0.10.6.md delete mode 100644 docs/_changelog/details/v0.10.7.md delete mode 100644 docs/_changelog/details/v0.10.8.md delete mode 100644 docs/_changelog/details/v0.10.9.md delete mode 100644 docs/_changelog/details/v0.11.0.md delete mode 100644 docs/_changelog/details/v0.11.1.md delete mode 100644 docs/_changelog/details/v0.11.2.md delete mode 100644 docs/_changelog/details/v0.11.3.md delete mode 100644 docs/_changelog/details/v0.11.4.md delete mode 100644 docs/_changelog/details/v0.11.5.md delete mode 100644 docs/_changelog/details/v0.12.0.md delete mode 100644 docs/_changelog/details/v0.12.1.md delete mode 100644 docs/_changelog/details/v0.13.0.md delete mode 100644 docs/_changelog/details/v0.13.1.md delete mode 100644 docs/_changelog/details/v0.13.2.md delete mode 100644 docs/_changelog/details/v0.13.3.md delete mode 100644 docs/_changelog/details/v0.13.4.md delete mode 100644 docs/_changelog/details/v0.13.5.md delete mode 100644 docs/_changelog/details/v0.7.0.md delete mode 100644 docs/_changelog/details/v0.7.1.md delete mode 100644 docs/_changelog/details/v0.7.2.md delete mode 100644 docs/_changelog/details/v0.7.3.md delete mode 100644 docs/_changelog/details/v0.7.4.md delete mode 100644 docs/_changelog/details/v0.7.5.md delete mode 100644 docs/_changelog/details/v0.7.6.md delete mode 100644 docs/_changelog/details/v0.7.7.md delete mode 100644 docs/_changelog/details/v0.7.8.md delete mode 100644 docs/_changelog/details/v0.8.0.md delete mode 100644 docs/_changelog/details/v0.8.1.md delete mode 100644 docs/_changelog/details/v0.8.2.md delete mode 100644 docs/_changelog/details/v0.9.0.md delete mode 100644 docs/_changelog/details/v0.9.1.md delete mode 100644 docs/_changelog/details/v0.9.2.md delete mode 100644 docs/_changelog/details/v0.9.3.md delete mode 100644 docs/_changelog/details/v0.9.4.md delete mode 100644 docs/_changelog/details/v0.9.5.md delete mode 100644 docs/_changelog/details/v0.9.6.md delete mode 100644 docs/_changelog/details/v0.9.7.md delete mode 100644 docs/_changelog/details/v0.9.8.md delete mode 100644 docs/_changelog/details/v0.9.9.md diff --git a/build/Build.csproj b/build/Build.csproj index 43c8d3c55b..90f9a13380 100644 --- a/build/Build.csproj +++ b/build/Build.csproj @@ -7,6 +7,7 @@ + diff --git a/build/Program.cs b/build/Program.cs index 5aac4721d7..66ae534aad 100644 --- a/build/Program.cs +++ b/build/Program.cs @@ -17,6 +17,7 @@ using Cake.Core.IO; using Cake.FileHelpers; using Cake.Frosting; +using Cake.Git; public static class Program { @@ -103,11 +104,11 @@ public BuildContext(ICakeContext context) 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"); } @@ -152,8 +153,22 @@ public void RunTests(FilePath projectFile, string alias, string tfm) this.DotNetTest(projectFile.FullPath, settings); } + public void EnsureChangelogDetailsExist(bool forceClean = false) + { + var path = ChangeLogGenDirectory.Combine("details"); + if (this.DirectoryExists(path) && forceClean) + this.DeleteDirectory(path, new DeleteDirectorySettings() { Force = true, Recursive = true }); + + if (!this.DirectoryExists(path)) + { + var settings = new GitCloneSettings { Checkout = true, BranchName = "docs-changelog-details" }; + this.GitClone("https://github.com/dotnet/BenchmarkDotNet.git", path, settings); + } + } + public void DocfxChangelogDownload(string version, string versionPrevious, string lastCommit = "") { + EnsureChangelogDetailsExist(true); this.Information("DocfxChangelogDownload: " + version); // Required environment variables: GITHUB_PRODUCT, GITHUB_TOKEN var path = ChangeLogGenDirectory.Combine("details"); @@ -162,6 +177,7 @@ public void DocfxChangelogDownload(string version, string versionPrevious, strin public void DocfxChangelogGenerate(string version) { + EnsureChangelogDetailsExist(); this.Information("DocfxChangelogGenerate: " + version); var header = ChangeLogGenDirectory.Combine("header").CombineWithFilePath(version + ".md"); var footer = ChangeLogGenDirectory.Combine("footer").CombineWithFilePath(version + ".md"); @@ -551,4 +567,4 @@ public override void Run(BuildContext context) context.RunDocfx(context.DocfxJsonFile); context.GenerateRedirects(); } -} \ 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 for benchmarks accepting a... (by [@adamsitnik](https://github.com/adamsitnik)) -* [96f162](https://github.com/dotnet/BenchmarkDotNet/commit/96f1626623ec1ed32ce7dadc6581c83ccab98ba2) write "Setup power plan" in a separate line (by [@adamsitnik](https://github.com/adamsitnik)) -* [063d1a](https://github.com/dotnet/BenchmarkDotNet/commit/063d1a56152fd5812cb6e9dd5095dc6e647e6938) copy PreserveCompilationContext MSBuild setting from the project that defines... (by [@adamsitnik](https://github.com/adamsitnik)) -* [1578c5](https://github.com/dotnet/BenchmarkDotNet/commit/1578c5c60c3f59f9128f680e35d1db219aa60d8d) make it possible to not enforce power plan, move the revert to finally, simpl... (by [@adamsitnik](https://github.com/adamsitnik)) -* [0513a7](https://github.com/dotnet/BenchmarkDotNet/commit/0513a7438457fb1d360188de4d590fba85d75fed) remove the test that requires a manual update every time we add a new charact... (by [@adamsitnik](https://github.com/adamsitnik)) -* [6e6559](https://github.com/dotnet/BenchmarkDotNet/commit/6e6559499652c312369fd223d0cf4747f65512d6) extend Summary with LogFilePath, fixes #1135 (by [@adamsitnik](https://github.com/adamsitnik)) -* [6d7130](https://github.com/dotnet/BenchmarkDotNet/commit/6d71308f4c1d96bcf8a526bfcc61bb23307b4041) make FullNameProvider public so it can be reused by the dotnet/performance re... (by [@adamsitnik](https://github.com/adamsitnik)) -* [6f91ea](https://github.com/dotnet/BenchmarkDotNet/commit/6f91ea59474bf6cce2d7ff8de422854cb4a61b06) Drop netcoreapp2.0 TFM in sample and test projects (see #1141) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [bfe676](https://github.com/dotnet/BenchmarkDotNet/commit/bfe676ea394d147bca91c445afc21514efec3ca2) Warn the user when benchmark baseline value is too close to zero and the colu... (by [@mhmd-azeez](https://github.com/mhmd-azeez)) -* [4282b1](https://github.com/dotnet/BenchmarkDotNet/commit/4282b158ef6aed6b64e2744f590572b830d4c569) Update year in LICENSE.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [29d01b](https://github.com/dotnet/BenchmarkDotNet/commit/29d01b05a9c86da415c1b69010eed93a6880a040) Improve search experience in the documentation (#1148) (by Sylvain Pace) -* [ddf1b8](https://github.com/dotnet/BenchmarkDotNet/commit/ddf1b8cbb7e942011fab5ccebf8bca4a576c2363) Fixed: broken link in readme.md (by [@Ant-hem](https://github.com/Ant-hem)) -* [fc35f7](https://github.com/dotnet/BenchmarkDotNet/commit/fc35f7aebdc7590f91dfa83e951d1ad325e9a659) simplify the reported Full .NET Framework version, fixes 1111 (#1114) (by [@adamsitnik](https://github.com/adamsitnik)) -* [0a4550](https://github.com/dotnet/BenchmarkDotNet/commit/0a4550f6ab0b821f31f59806b682dace8296ba54) Updated index.md and fixed Relative performance (#1173) (by [@sergey-litvinov](https://github.com/sergey-litvinov)) -* [a106b1](https://github.com/dotnet/BenchmarkDotNet/commit/a106b114b1f04fa1024be84a8969f5a168fa1c8b) Add System.Buffers.ArrayPoolEventSource to the list of default .NET Providers... (by [@adamsitnik](https://github.com/adamsitnik)) -* [c022e7](https://github.com/dotnet/BenchmarkDotNet/commit/c022e7c3783a2e0a21b8e29d011c2a1aded0cc18) Update docstring for IterationSetup/IteraitonCleanup (by [@billwert](https://github.com/billwert)) -* [31cb34](https://github.com/dotnet/BenchmarkDotNet/commit/31cb3485c096e834fc7368ccaff99ad3aba2a9f6) Invalid arg passing in StreamLogger constructor (#1185) (by [@ig-sinicyn](https://github.com/ig-sinicyn)) -* [fc8867](https://github.com/dotnet/BenchmarkDotNet/commit/fc8867585f170c1c9d7b08b4d91ac1924f5c835e) Make netcoreapp2.1 default (#1163) (by [@adamsitnik](https://github.com/adamsitnik)) -* [0f210c](https://github.com/dotnet/BenchmarkDotNet/commit/0f210cec7ce9ec6effea88fb38cddbb21a8cb414) Add support for --runtimes net48, fixes #1186 (by [@adamsitnik](https://github.com/adamsitnik)) -* [48a9de](https://github.com/dotnet/BenchmarkDotNet/commit/48a9decd82a4eff0c8850da9cebe195c759e8004) When user uses --packages $path, the $path should be sent to dotnet build com... (by [@adamsitnik](https://github.com/adamsitnik)) -* [dfa074](https://github.com/dotnet/BenchmarkDotNet/commit/dfa074b024cfa8bbe4fe175d3d65a3d9f85127ff) Update HtmlExporter.cs (#1189) (by [@chuuddo](https://github.com/chuuddo)) -* [8b018d](https://github.com/dotnet/BenchmarkDotNet/commit/8b018d7414497df0fcefec11f8bb97ad06ce0cf5) doc update: InProc toolchain supports Arguments now, we use Median instead of... (by [@adamsitnik](https://github.com/adamsitnik)) -* [ae23bd](https://github.com/dotnet/BenchmarkDotNet/commit/ae23bddebe49cd66a9627790c073b7bc45ccbf5c) add the possibility to pass config to BenchmarkSwitcher.RunAll and RunAllJoin... (by [@adamsitnik](https://github.com/adamsitnik)) -* [94b788](https://github.com/dotnet/BenchmarkDotNet/commit/94b7888c90031d9acbeebae4526c711bc92ac9bd) Update Mac Os for Travis CI (#1196), fixes #1195 (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [58fde6](https://github.com/dotnet/BenchmarkDotNet/commit/58fde64c809ceadb3fca9d677a7cec83071b833f) Use Sheather&Jones bandwidth selector for density plots in RPlotExporter (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [0e4b8e](https://github.com/dotnet/BenchmarkDotNet/commit/0e4b8e69d10e73a83fce3ce3980497ee7798bc87) Rename OutlierMode values (#1199) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [863c65](https://github.com/dotnet/BenchmarkDotNet/commit/863c6510d4c7c923959e9d50228eba7009e9e3f6) Added information about what a Gen X column means (#1175) (by [@jigargandhi](https://github.com/jigargandhi)) -* [70c5b3](https://github.com/dotnet/BenchmarkDotNet/commit/70c5b38b990eff8aa9cababdc43930611e126607) print benchmark process id to the output (better profiler user story) (#1201) (by [@adamsitnik](https://github.com/adamsitnik)) -* [55cba0](https://github.com/dotnet/BenchmarkDotNet/commit/55cba014d72531bbbc45d92a16d481c12e31ca1c) Easier introduction of new benchmarks (#1203) (by [@Scooletz](https://github.com/Scooletz)) -* [31bb6f](https://github.com/dotnet/BenchmarkDotNet/commit/31bb6f8af21912a6a886f922163d94e4dd995e2e) Fix casing typo (#1204) (by [@antondahlin](https://github.com/antondahlin)) -* [e92abf](https://github.com/dotnet/BenchmarkDotNet/commit/e92abf845ac916e449bf9d8ccf1d872204951bec) NativeMemoryDiagnoser (#1131), fixes #457 (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [d04a01](https://github.com/dotnet/BenchmarkDotNet/commit/d04a01064be7668076e26efaac64d8c6d8e214f2) update list of supported project types (#1206) (by [@JaggerJo](https://github.com/JaggerJo)) -* [5db67b](https://github.com/dotnet/BenchmarkDotNet/commit/5db67bbe1965966ebacbc2cd332d68e6002133b9) Sorting examples list and add missing pagges (#1209) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [6620cd](https://github.com/dotnet/BenchmarkDotNet/commit/6620cda014750ebec0d0556b8f6fe22f7ad0c362) print full architecture name (#1213) (by [@adamsitnik](https://github.com/adamsitnik)) -* [705bc3](https://github.com/dotnet/BenchmarkDotNet/commit/705bc34a8e0b958750ec3814ac1c611294cfade5) Add documentation to NativeMemoryDiagnouser (#1214) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [9caa05](https://github.com/dotnet/BenchmarkDotNet/commit/9caa0556b033a786c376324f73a14457290fccb9) Support of --profiler NativeMemory command line argument (#1208) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [5d7c78](https://github.com/dotnet/BenchmarkDotNet/commit/5d7c7894e69b218461d341056880c0f653c720e9) Plots with a double dash (--) in the names (#1183) (#1212) (by [@marcnet80](https://github.com/marcnet80)) -* [d0d883](https://github.com/dotnet/BenchmarkDotNet/commit/d0d88386d98e414f1cbfdcf931f70d34a9afe3f6) Extend NativeMemoryProfiler with the number of allocated objects (#1218) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [09aba3](https://github.com/dotnet/BenchmarkDotNet/commit/09aba3505487c3056aaae24617242f37bbb73167) Add links to blogs. (#1219) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [a200af](https://github.com/dotnet/BenchmarkDotNet/commit/a200af5878f808af6ade418b9a16f3650a11f572) Enforce the users to provide full target framework moniker when using attribu... (by [@adamsitnik](https://github.com/adamsitnik)) -* [f8ef67](https://github.com/dotnet/BenchmarkDotNet/commit/f8ef67132d26982b0ee1c7b1982530c16f4ca5fe) add release notes for 0.11.6 (by [@adamsitnik](https://github.com/adamsitnik)) -* [88ea5a](https://github.com/dotnet/BenchmarkDotNet/commit/88ea5a8c11a7700c38ec780d1f363e638654659a) Documentation: Fix some typos in the documentation (#1225) (by [@MSeifert04](https://github.com/MSeifert04)) -* [ea0468](https://github.com/dotnet/BenchmarkDotNet/commit/ea0468f7d611a5c750f3e079cfab0f28bcd9169b) Support IEnumerable as benchmark argument (#1228) (by [@adamsitnik](https://github.com/adamsitnik)) -* [4080ab](https://github.com/dotnet/BenchmarkDotNet/commit/4080abde7ed169b3fd73f5df490f03d57e11dc3e) Threading Diagnoser (#1227) (by [@adamsitnik](https://github.com/adamsitnik)) -* [b6d0e0](https://github.com/dotnet/BenchmarkDotNet/commit/b6d0e0f1d80ed60aa157149a0dfb704a2da4ca41) further runtime detection improvements (#1230), (by [@adamsitnik](https://github.com/adamsitnik)) -* [bc9624](https://github.com/dotnet/BenchmarkDotNet/commit/bc9624cf63941e9f55ca070d247537dd8ced1323) Fix iteration cleanup bug (#1231) (by [@adamsitnik](https://github.com/adamsitnik)) -* [cfccac](https://github.com/dotnet/BenchmarkDotNet/commit/cfccac08e4269fb4b5ef23bc93189158ce9941a7) Fixed dots at the end (not used in other places) (#1232) (by [@cincuranet](https://github.com/cincuranet)) -* [61feb7](https://github.com/dotnet/BenchmarkDotNet/commit/61feb7b7f4bd48daf7d6a618bb814a0b863e1509) try to read .NET Core version from all available information (#1233) (by [@adamsitnik](https://github.com/adamsitnik)) -* [c06ab7](https://github.com/dotnet/BenchmarkDotNet/commit/c06ab7ec76f13a915d8b90b262a2b8c4ccefa5e6) Add using statement to sample snippet (#1239) (by [@b8adamson](https://github.com/b8adamson)) -* [af9608](https://github.com/dotnet/BenchmarkDotNet/commit/af96086b8497487f817d6061b0f54d0102d626fb) The null ArtifactsPath value causes exception for all EtwProfiler (#1237) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [5f337d](https://github.com/dotnet/BenchmarkDotNet/commit/5f337d2d8d5359777b4bfb639968b4afa80aef65) chore(tests): extract helper methods to MockFactory (by [@sleemer](https://github.com/sleemer)) -* [03e9ce](https://github.com/dotnet/BenchmarkDotNet/commit/03e9ce1151a2241f60cf027edf2f88295e57847a) feat(CsvExproter): print '0' instead of '-' in the CSV report (by [@sleemer](https://github.com/sleemer)) -* [06f0e7](https://github.com/dotnet/BenchmarkDotNet/commit/06f0e77f1ee0e01ab9b6f002412cb3f9a7b8e97d) Improuve link visibility for R installation (by [@tebeco](https://github.com/tebeco)) -* [a2d9e3](https://github.com/dotnet/BenchmarkDotNet/commit/a2d9e3358c6737595383cc03ac6ed835629297d7) adding example of R_HOME value in the doc to understand it construction (by [@tebeco](https://github.com/tebeco)) -* [ce5ac8](https://github.com/dotnet/BenchmarkDotNet/commit/ce5ac8c54fb44c0a0983da06f4db57f78357b23e) Enhanced RScript detection, with a Fallback to the PATH if R_HOME points to a... (by [@tebeco](https://github.com/tebeco)) -* [b86845](https://github.com/dotnet/BenchmarkDotNet/commit/b86845c27488c2de74ef988cb739cbd76018ab0f) not necessary to set rscriptPath to null since it's re-affected right after (by [@tebeco](https://github.com/tebeco)) -* [ee97ca](https://github.com/dotnet/BenchmarkDotNet/commit/ee97ca1aaa3759342724fde3d32b3a72b0a6666d) Change access modifier to private, was not intended to be public (by [@tebeco](https://github.com/tebeco)) -* [609eec](https://github.com/dotnet/BenchmarkDotNet/commit/609eecd7e512c8d05654a7de43732fc9b574113d) Log shows a wrong name for plot images #1181 (by [@marcnet80](https://github.com/marcnet80)) -* [76096e](https://github.com/dotnet/BenchmarkDotNet/commit/76096e2b0ce8212951cc7b12a8a721322b99fe6c) Add "dotnet new" benchmark project template (#1044) (by [@CodeTherapist](https://github.com/CodeTherapist)) -* [b7cbdf](https://github.com/dotnet/BenchmarkDotNet/commit/b7cbdf8b4b5e65efd841fb4f5e231fe0b18b9241) Update year in license (docs) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [29919d](https://github.com/dotnet/BenchmarkDotNet/commit/29919dce392308d8d20a5f77a08e579b22cd02a4) Remove extra spaces in template *proj files (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [80ccfd](https://github.com/dotnet/BenchmarkDotNet/commit/80ccfdb696bae5bcbf1fe0ea05bc71155dce5316) Add some readonly modifiers (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [d6a697](https://github.com/dotnet/BenchmarkDotNet/commit/d6a697278483ab4aca06057d2d55cf554e4dd041) Improve MannWhitneyTest precision for small samples (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [9ba645](https://github.com/dotnet/BenchmarkDotNet/commit/9ba645bd24fde2e7daa5f498f16aea8876ff6e57) Fix CurrentRuntimeIsProperlyRecognized for NETFRAMEWORK case on Linux/macOS (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [24fda9](https://github.com/dotnet/BenchmarkDotNet/commit/24fda9481615ff03671f14759a544f479e27eb8c) LINQPad 6 support using InProcessEmitToolchain (#1245) (by [@adamsitnik](https://github.com/adamsitnik)) -* [e01e0d](https://github.com/dotnet/BenchmarkDotNet/commit/e01e0d3e8d7d7d053b319059bea591a6a830d3a2) Fix typos in attribute messages (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [56a71f](https://github.com/dotnet/BenchmarkDotNet/commit/56a71fdfdfecccc50e2cf7ede43e50c978b65746) Add possibility to disable the log file (#1252) (by [@CodeTherapist](https://github.com/CodeTherapist)) -* [3c4ec9](https://github.com/dotnet/BenchmarkDotNet/commit/3c4ec93ce11a1a80d51444a74a9581198e85f0b5) remove unused nuget packages (#1257) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [61cc56](https://github.com/dotnet/BenchmarkDotNet/commit/61cc5654ddc7ce97cb8f374f9bf94388193a9a8c) Add missing using (#1261) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [cd88ed](https://github.com/dotnet/BenchmarkDotNet/commit/cd88ed383e2086e59c54a1ee32e9c58755af82c1) Fix ca1825 rule - Avoid zero-length array allocations (#1260) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [2ba303](https://github.com/dotnet/BenchmarkDotNet/commit/2ba30330ec5ec8a9abe284c927277a6fe0fc5a0c) Task remove trailing whitespace (#1259) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [e1c4aa](https://github.com/dotnet/BenchmarkDotNet/commit/e1c4aa066aab86e5dd79ddbf855e6a4245a70a57) Fix compilation error with post v3.3.1 Roslyn (#1268) (by [@stanciuadrian](https://github.com/stanciuadrian)) -* [4ec888](https://github.com/dotnet/BenchmarkDotNet/commit/4ec88844547507474ccd0303b31f935b3463318c) make it possible to configure MaxParamterColumnWidth (#1265), fixes #1269 (by [@adamsitnik](https://github.com/adamsitnik)) -* [51f53a](https://github.com/dotnet/BenchmarkDotNet/commit/51f53a1ad5ca715378cb43f137369db733b3af74) CombinedDisassemblyExporter output should be aligned to left, not right (by [@adamsitnik](https://github.com/adamsitnik)) -* [f89091](https://github.com/dotnet/BenchmarkDotNet/commit/f89091a2a9c1a4058dd8e32d5aa01271910dd7dc) Add EdPeltChangePointDetector (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [da63e8](https://github.com/dotnet/BenchmarkDotNet/commit/da63e849944ec777d59c57f1635e8b5eb4bcbdb4) change the runtimes API (#1277) (by [@adamsitnik](https://github.com/adamsitnik)) -* [5333d5](https://github.com/dotnet/BenchmarkDotNet/commit/5333d509b7fc5d0ae52588af3f841894644807ae) Change next version number from 0.11.6 to 0.12.0 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [52cc45](https://github.com/dotnet/BenchmarkDotNet/commit/52cc453878b0770c6e7a047010b515b17e72733b) NativeMemoryProfiler instead of NativeMemoryDiagnoser (#1279) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [f86e13](https://github.com/dotnet/BenchmarkDotNet/commit/f86e13017e1dec5e063c77be8e2255fe0553ae4a) Print GC and threading stats if needed (#1281) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [a08062](https://github.com/dotnet/BenchmarkDotNet/commit/a08062fa473e3426c7d5f1a1cf2ad5cbbc46f7d1) Rename some obsolete TargetFrameworkMoniker names to RuntimeMoniker (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [7fdee8](https://github.com/dotnet/BenchmarkDotNet/commit/7fdee878f05a190031c74b36c0a485e127cac4ed) Fix JitOptimizationsValidatorIsMandatoryByDefault in DEBUG mode (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [f2639e](https://github.com/dotnet/BenchmarkDotNet/commit/f2639e68a871fa9f50e68cb974410f3a521c1d08) Move ImmutableConfigTests from IntegrationTests to regular unit tests (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [4f6a6b](https://github.com/dotnet/BenchmarkDotNet/commit/4f6a6b6b4ecaba871a19c5607c70edcc44c0efa0) Fix diagnoser tests in ImmutableConfigTests (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [0768b7](https://github.com/dotnet/BenchmarkDotNet/commit/0768b7206be0078516034f0e6a1690b61561c55c) Fix some typos in identifiers (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [28bb7c](https://github.com/dotnet/BenchmarkDotNet/commit/28bb7c50338273c3dcd3c419b8032ece978e8cb3) Bump DocFX version from 2.42.1 to 2.46 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [af9ff5](https://github.com/dotnet/BenchmarkDotNet/commit/af9ff5476fc1b677ed5f691e0b6376aabea2b235) Fix mistakes in old changelogs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [c5aa4f](https://github.com/dotnet/BenchmarkDotNet/commit/c5aa4f917dab4438814b5f2dd7a90d7309757bf8) Prepare v0.12.0 changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [cb1575](https://github.com/dotnet/BenchmarkDotNet/commit/cb1575f852af2ee5ac53b71e18a759afe6948caa) Add BenchmarkDotNet.Templates in build-and-pack.cmd (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [bc7cb8](https://github.com/dotnet/BenchmarkDotNet/commit/bc7cb8a2b4b1c2e28c0b5008270283e7381ab11d) Improve v0.12.0 release notes (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [c5ac2f](https://github.com/dotnet/BenchmarkDotNet/commit/c5ac2f57b55ad51ee4afb3c2a3097358334f162b) Fix bug in BaselineCustomAnalyzer (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [d75b1b](https://github.com/dotnet/BenchmarkDotNet/commit/d75b1b887dd47468bfc7127cb62348c63390e165) Add .NET Core 2.2 and .NET Core 3.0 support in BenchmarkDotNet.Tool (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [d582b5](https://github.com/dotnet/BenchmarkDotNet/commit/d582b516d798fb8632d5507367272e51280229fe) Revert previous commit because of the CI Error (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [7bdf6e](https://github.com/dotnet/BenchmarkDotNet/commit/7bdf6e093fdac47d40a7daaf66ce93d940b9b8c9) Set library version: 0.12.0 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (25) - -* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik)) -* Adrian Stanciu ([@stanciuadrian](https://github.com/stanciuadrian)) -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* Antoine Hémery ([@Ant-hem](https://github.com/Ant-hem)) -* Anton Dahlin ([@antondahlin](https://github.com/antondahlin)) -* b8adamson ([@b8adamson](https://github.com/b8adamson)) -* Bill Wert ([@billwert](https://github.com/billwert)) -* Code Therapist ([@CodeTherapist](https://github.com/CodeTherapist)) -* ig-sinicyn ([@ig-sinicyn](https://github.com/ig-sinicyn)) -* Ilya Chudin ([@chuuddo](https://github.com/chuuddo)) -* Jigar ([@jigargandhi](https://github.com/jigargandhi)) -* Jiri Cincura ↹ ([@cincuranet](https://github.com/cincuranet)) -* Josua Jäger ([@JaggerJo](https://github.com/JaggerJo)) -* marcnet80 ([@marcnet80](https://github.com/marcnet80)) -* Marek Moraczyński ([@MarekM25](https://github.com/MarekM25)) -* Michael Seifert ([@MSeifert04](https://github.com/MSeifert04)) -* Michal Strehovský ([@MichalStrehovsky](https://github.com/MichalStrehovsky)) -* Muhammad Azeez ([@mhmd-azeez](https://github.com/mhmd-azeez)) -* Sergey Litvinov ([@sergey-litvinov](https://github.com/sergey-litvinov)) -* Sylvain Pace -* Szymon Kulec ([@Scooletz](https://github.com/Scooletz)) -* TeBeCo ([@tebeco](https://github.com/tebeco)) -* Vlad Kovalev ([@sleemer](https://github.com/sleemer)) -* 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.12.1.md b/docs/_changelog/details/v0.12.1.md deleted file mode 100644 index ca7ffb4d89..0000000000 --- a/docs/_changelog/details/v0.12.1.md +++ /dev/null @@ -1,197 +0,0 @@ -## Milestone details - -In the [v0.12.1](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.12.1) scope, -31 issues were resolved and 42 pull requests were merged. -This release includes 85 commits by 19 contributors. - -## Resolved issues (31) - -* [#641](https://github.com/dotnet/BenchmarkDotNet/issues/641) RPlotExporter hanging (assignee: [@m-mccormick](https://github.com/m-mccormick)) -* [#899](https://github.com/dotnet/BenchmarkDotNet/issues/899) Tiered compilation and disassembler (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1023](https://github.com/dotnet/BenchmarkDotNet/issues/1023) Out of process benchmarks fail with ASP.NET Core SDK reference -* [#1211](https://github.com/dotnet/BenchmarkDotNet/issues/1211) Binding Redirect Issues When Using Xml Serializers -* [#1234](https://github.com/dotnet/BenchmarkDotNet/issues/1234) Strong type fluent API proposal (assignee: [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [#1238](https://github.com/dotnet/BenchmarkDotNet/issues/1238) RunAllJoined Causing Exception (assignee: [@gsomix](https://github.com/gsomix)) -* [#1262](https://github.com/dotnet/BenchmarkDotNet/issues/1262) Params attribute doesn`t work in F# if you specify more than one enum value in constructor (assignee: [@gsomix](https://github.com/gsomix)) -* [#1295](https://github.com/dotnet/BenchmarkDotNet/issues/1295) Custom format/culture for report output values (for CSV, and maybe HTML, MD) -* [#1305](https://github.com/dotnet/BenchmarkDotNet/issues/1305) Copy UserSecrets from benchmark project -* [#1311](https://github.com/dotnet/BenchmarkDotNet/issues/1311) Spelling nit (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#1312](https://github.com/dotnet/BenchmarkDotNet/issues/1312) Add an option to pass environment variables to the default job -* [#1315](https://github.com/dotnet/BenchmarkDotNet/issues/1315) Implement cross platform EventPipeProfiler diagnoser (assignee: [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [#1316](https://github.com/dotnet/BenchmarkDotNet/issues/1316) Implement Unix Disassembler for .NET Core (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1318](https://github.com/dotnet/BenchmarkDotNet/issues/1318) use of NugetReference[] causes System.MissingMethodException: No parameterless constructor defined for this object. (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1323](https://github.com/dotnet/BenchmarkDotNet/issues/1323) DisassemblyDiagnoser index outside array bounds (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#1325](https://github.com/dotnet/BenchmarkDotNet/issues/1325) Surface native code size benchmarked code (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1326](https://github.com/dotnet/BenchmarkDotNet/issues/1326) BDN does not build using dotnet sdk from the command line in Linux -* [#1339](https://github.com/dotnet/BenchmarkDotNet/issues/1339) Generated code and StyleCop.Analyzers (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1348](https://github.com/dotnet/BenchmarkDotNet/issues/1348) Different display text for arrays depending on a value source (assignee: [@YohDeadfall](https://github.com/YohDeadfall)) -* [#1350](https://github.com/dotnet/BenchmarkDotNet/issues/1350) Warn the user if command line arguments were not passed to the BenchmarkSwitcher -* [#1353](https://github.com/dotnet/BenchmarkDotNet/issues/1353) Show Length when param type is an array -* [#1361](https://github.com/dotnet/BenchmarkDotNet/issues/1361) SimpleJobAttribute with RunStrategy and RuntimeMoniker -* [#1363](https://github.com/dotnet/BenchmarkDotNet/issues/1363) Wrong assembly binding redirects for Microsoft.Data.SqlClient.resources ; using in Netcore3.0 project (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1364](https://github.com/dotnet/BenchmarkDotNet/issues/1364) Bug: Benchmark class with Console.WriteLine(1) fails for DisassemblyDiagnoser with 'Sequence contains no matching element' (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1369](https://github.com/dotnet/BenchmarkDotNet/issues/1369) Parameter column doesn't seem to respect culture info (assignee: [@Tyrrrz](https://github.com/Tyrrrz)) -* [#1379](https://github.com/dotnet/BenchmarkDotNet/issues/1379) Unix CI builds are red (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#1385](https://github.com/dotnet/BenchmarkDotNet/issues/1385) Make BaselineCustomColumn.GetValue public -* [#1388](https://github.com/dotnet/BenchmarkDotNet/issues/1388) 'ref readonly' return is not supported (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1396](https://github.com/dotnet/BenchmarkDotNet/issues/1396) MacOS Azure Pipeline build is broken (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#1413](https://github.com/dotnet/BenchmarkDotNet/issues/1413) Plot with only one "default" Job (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#1416](https://github.com/dotnet/BenchmarkDotNet/issues/1416) EventPipeProfiler Documentation (assignee: [@WojciechNagorski](https://github.com/WojciechNagorski)) - -## Merged pull requests (42) - -* [#1258](https://github.com/dotnet/BenchmarkDotNet/pull/1258) Task add style cope and fxcop analyzers (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [#1263](https://github.com/dotnet/BenchmarkDotNet/pull/1263) Configuration compatibility validation (by [@gsomix](https://github.com/gsomix)) -* [#1266](https://github.com/dotnet/BenchmarkDotNet/pull/1266) Add EnumParam preserving type information (by [@gsomix](https://github.com/gsomix)) -* [#1273](https://github.com/dotnet/BenchmarkDotNet/pull/1273) New fluent API (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [#1287](https://github.com/dotnet/BenchmarkDotNet/pull/1287) EdPeltChangePointDetector improvements (by [@jeanbern](https://github.com/jeanbern)) -* [#1300](https://github.com/dotnet/BenchmarkDotNet/pull/1300) Update link of " official benchmarking guide" to use the new recommended link (by [@eriawan](https://github.com/eriawan)) -* [#1301](https://github.com/dotnet/BenchmarkDotNet/pull/1301) Improve BenchmarkDotNet.Templates (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#1302](https://github.com/dotnet/BenchmarkDotNet/pull/1302) CultureInfo Refactoring (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#1307](https://github.com/dotnet/BenchmarkDotNet/pull/1307) Fix project file order (by [@vilinski](https://github.com/vilinski)) -* [#1309](https://github.com/dotnet/BenchmarkDotNet/pull/1309) Copy UserSecrets from benchmark project (by [@kant2002](https://github.com/kant2002)) -* [#1313](https://github.com/dotnet/BenchmarkDotNet/pull/1313) add possibility to specify env vars via console line arguments (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1321](https://github.com/dotnet/BenchmarkDotNet/pull/1321) The EventPipeProfiler cross-platform profiler (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [#1327](https://github.com/dotnet/BenchmarkDotNet/pull/1327) Add package-refs to reference assemblies for linux build (by [@damageboy](https://github.com/damageboy)) -* [#1329](https://github.com/dotnet/BenchmarkDotNet/pull/1329) Show information about docker (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [#1331](https://github.com/dotnet/BenchmarkDotNet/pull/1331) Use 24-hour time in joined summary file name (by [@jroessel](https://github.com/jroessel)) -* [#1332](https://github.com/dotnet/BenchmarkDotNet/pull/1332) Improved and Cross platform disassembler (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1335](https://github.com/dotnet/BenchmarkDotNet/pull/1335) Attribute improvements (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [#1340](https://github.com/dotnet/BenchmarkDotNet/pull/1340) Improvement of csproj finding (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [#1349](https://github.com/dotnet/BenchmarkDotNet/pull/1349) Fixed display text for array parameters and arguments (by [@YohDeadfall](https://github.com/YohDeadfall)) -* [#1357](https://github.com/dotnet/BenchmarkDotNet/pull/1357) add the header at the top of the generated file to avoid static analysis tools from analyzing it, (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1359](https://github.com/dotnet/BenchmarkDotNet/pull/1359) Warn if command line arguments were not passed to the BenchmarkSwitcher (by [@suslovk](https://github.com/suslovk)) -* [#1365](https://github.com/dotnet/BenchmarkDotNet/pull/1365) Use DirtyAssemblyResolveHelper only for Full .NET Framework (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1366](https://github.com/dotnet/BenchmarkDotNet/pull/1366) add missing SimpleJobAttribute ctor (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1367](https://github.com/dotnet/BenchmarkDotNet/pull/1367) Await non-generic ValueTask returning method (by [@mayuki](https://github.com/mayuki)) -* [#1372](https://github.com/dotnet/BenchmarkDotNet/pull/1372) Use CultureInfo when formatting parameter values (by [@Tyrrrz](https://github.com/Tyrrrz)) -* [#1373](https://github.com/dotnet/BenchmarkDotNet/pull/1373) fixes #641 (by [@m-mccormick](https://github.com/m-mccormick)) -* [#1375](https://github.com/dotnet/BenchmarkDotNet/pull/1375) don't require the JitDiagnosers (TailCall & Inlining) to run benchmarks once again just to gather JIT info, the overhead is very small (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1376](https://github.com/dotnet/BenchmarkDotNet/pull/1376) update TraceEvent to 2.0.49 to get TailCalls working again (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1380](https://github.com/dotnet/BenchmarkDotNet/pull/1380) Bump Cake version from 0.30.0 to 0.37.0, fix #1379 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#1381](https://github.com/dotnet/BenchmarkDotNet/pull/1381) Minor event pipe profiler improvements (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1384](https://github.com/dotnet/BenchmarkDotNet/pull/1384) Fix build after styleCop (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [#1386](https://github.com/dotnet/BenchmarkDotNet/pull/1386) Switch to perfolizer (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#1387](https://github.com/dotnet/BenchmarkDotNet/pull/1387) Make BaselineCustomColumn expose "GetValue" as a public API (by [@damageboy](https://github.com/damageboy)) -* [#1389](https://github.com/dotnet/BenchmarkDotNet/pull/1389) Ref readonly support (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1394](https://github.com/dotnet/BenchmarkDotNet/pull/1394) Align homepage example with README (by [@dahlbyk](https://github.com/dahlbyk)) -* [#1397](https://github.com/dotnet/BenchmarkDotNet/pull/1397) Bump macOS Azure Pipeline vmImage to 10.14, fix #1396 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#1399](https://github.com/dotnet/BenchmarkDotNet/pull/1399) React to .NET 5 branding changes (by [@jkotas](https://github.com/jkotas)) -* [#1407](https://github.com/dotnet/BenchmarkDotNet/pull/1407) Improve warnings for small operations number (by [@CodeFuller](https://github.com/CodeFuller)) -* [#1410](https://github.com/dotnet/BenchmarkDotNet/pull/1410) Updating Document - Fixing a small grammar mistake (by [@abhinavgalodha](https://github.com/abhinavgalodha)) -* [#1417](https://github.com/dotnet/BenchmarkDotNet/pull/1417) Fix --profiler option description. (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [#1418](https://github.com/dotnet/BenchmarkDotNet/pull/1418) EventPipeProfiler documentation (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [#1419](https://github.com/dotnet/BenchmarkDotNet/pull/1419) Small fix in EventPipeProfiler documentation (by [@WojciechNagorski](https://github.com/WojciechNagorski)) - -## Commits (85) - -* [396d4b](https://github.com/dotnet/BenchmarkDotNet/commit/396d4b4e4f26e296a288e550afed4fab29cbd7a8) #1262: Add EnumParam preserving type information (by [@gsomix](https://github.com/gsomix)) -* [718b77](https://github.com/dotnet/BenchmarkDotNet/commit/718b776b3d1d95fae8d07160d9a9ed60e75b57cf) #1262: Add tests (by [@gsomix](https://github.com/gsomix)) -* [33ec90](https://github.com/dotnet/BenchmarkDotNet/commit/33ec9077d6f2f9552fe2d07b4f7f30b45078278f) EdPeltChangePointDetector improvements (by [@jeanbern](https://github.com/jeanbern)) -* [7e3efc](https://github.com/dotnet/BenchmarkDotNet/commit/7e3efce463c8a6d7f54a5022456a15da0f12433d) Postrelease update of v0.12.0 changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [8677b0](https://github.com/dotnet/BenchmarkDotNet/commit/8677b00199b65e0c4a6a04b570e0574194387449) Update css in documentation (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [919b7f](https://github.com/dotnet/BenchmarkDotNet/commit/919b7ff8ee52cd5ca07a58e7e4786cfeecc69b64) Fix link to IntroThreadingDiagnoser in diagnoser.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [4d15ea](https://github.com/dotnet/BenchmarkDotNet/commit/4d15ea41f45063ad29bb64f1453dac026585c9ca) Update README.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [f2d081](https://github.com/dotnet/BenchmarkDotNet/commit/f2d0816b3fbee4587ec99dfcaa7cca04ba8f3c54) Update link of " official benchmarking guide" to use the new recommended link... (by [@eriawan](https://github.com/eriawan)) -* [05df0e](https://github.com/dotnet/BenchmarkDotNet/commit/05df0ebe0b701b1915ce9c5a8e7c8e0ec4f553fd) Documentation: update article about command-line tool (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [d69505](https://github.com/dotnet/BenchmarkDotNet/commit/d69505204668a31bbad0b49c8340d4d33398cbc3) Improve BenchmarkDotNet.Templates (#1301) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [e23755](https://github.com/dotnet/BenchmarkDotNet/commit/e23755ab8ad58dde0903b6fdc938d1fa4659e2b2) Speed up some integration tests (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [3d96bf](https://github.com/dotnet/BenchmarkDotNet/commit/3d96bf3548f528e99ed2e23db93b1ebbb2f5de05) Update NuGet package descriptions (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [351dae](https://github.com/dotnet/BenchmarkDotNet/commit/351dae96608536219034e41c58d340f70e00fe13) Update README.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [5f07f4](https://github.com/dotnet/BenchmarkDotNet/commit/5f07f4e45147468b72befa03cc0947a1de79316c) Add Windows 10 brand string for 19H1 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [fd92ff](https://github.com/dotnet/BenchmarkDotNet/commit/fd92ff9161fc15847e53c24dcb8e3aaa66747549) Update README.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [5af5c5](https://github.com/dotnet/BenchmarkDotNet/commit/5af5c525e7801eb51354ee36bf5cc49a8a56f7ce) Update README.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [1b923f](https://github.com/dotnet/BenchmarkDotNet/commit/1b923fd483061f9bf589754ee6b499f78b44d8fa) Fix project file order (#1307) (by [@vilinski](https://github.com/vilinski)) -* [57b01f](https://github.com/dotnet/BenchmarkDotNet/commit/57b01f5f08c79647b5705ce510eb342aa95b580b) Copy UserSecrets from benchmark project (#1309) (by [@kant2002](https://github.com/kant2002)) -* [2415fd](https://github.com/dotnet/BenchmarkDotNet/commit/2415fda6fb8eaf2d0f17b1828a7ee9befbd7baab) Fix some typos, fix #1311 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [e92d6d](https://github.com/dotnet/BenchmarkDotNet/commit/e92d6d6e1d597d6fc00697c9a19b5a7404f96ba5) add possibility to specify env vars via console line arguments (#1313) (by [@adamsitnik](https://github.com/adamsitnik)) -* [b7054c](https://github.com/dotnet/BenchmarkDotNet/commit/b7054c02872c2f741752137e7930d4f3c901354d) WithNuGet should accept NuGetReferenceList, not IReadOnlyCollection header at the top of the generated file to avoid s... (by [@adamsitnik](https://github.com/adamsitnik)) -* [07b512](https://github.com/dotnet/BenchmarkDotNet/commit/07b5122fadc3da4b2da116a74e057210daf21c6b) Await non-generic ValueTask returning method (#1367) (by [@mayuki](https://github.com/mayuki)) -* [479177](https://github.com/dotnet/BenchmarkDotNet/commit/479177b025cc356fa9c8b878baf4db9b0e6d5f90) Display array length for array parameters and arguments (#1349), fixes #1348 ... (by [@YohDeadfall](https://github.com/YohDeadfall)) -* [3b8d2c](https://github.com/dotnet/BenchmarkDotNet/commit/3b8d2cd3a67150e581ccaaf3c03da08a04844c9c) Warn if command line arguments were not passed to the BenchmarkSwitcher (#135... (by [@suslovk](https://github.com/suslovk)) -* [87d85a](https://github.com/dotnet/BenchmarkDotNet/commit/87d85a74d2a17701305b49e77464a7576c1b95f1) Use CultureInfo when formatting parameter values (#1372) (by [@Tyrrrz](https://github.com/Tyrrrz)) -* [310b5a](https://github.com/dotnet/BenchmarkDotNet/commit/310b5a93a6d2ec0edf223f4d80684d90245ee007) add missing SimpleJobAttribute ctor, fixes #1361 (#1366) (by [@adamsitnik](https://github.com/adamsitnik)) -* [6a1458](https://github.com/dotnet/BenchmarkDotNet/commit/6a14586c32afcae5ba0869372f60feb6fb157d39) change the way RPlotExporter reads the R script output, fixes #641 (#1373) (by [@m-mccormick](https://github.com/m-mccormick)) -* [ff4c3d](https://github.com/dotnet/BenchmarkDotNet/commit/ff4c3db660c0eb8d50918070b0ad3b1134d97789) Attribute improvements (#1335) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [29eafb](https://github.com/dotnet/BenchmarkDotNet/commit/29eafbd4fbfbbc7dfaf5e15c598047401870e254) Improvement of csproj finding (#1340) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [be2168](https://github.com/dotnet/BenchmarkDotNet/commit/be21689e720c410fa01d0aa078fb855bba02d106) Use DirtyAssemblyResolveHelper only for Full .NET Framework (#1365) (by [@adamsitnik](https://github.com/adamsitnik)) -* [664ab6](https://github.com/dotnet/BenchmarkDotNet/commit/664ab6db6d65813f8c602c87852f732f747e2136) update TraceEvent to 2.0.49 to get TailCalls working again (#1376) (by [@adamsitnik](https://github.com/adamsitnik)) -* [b788bc](https://github.com/dotnet/BenchmarkDotNet/commit/b788bcb61f18d8e48e790aaedab573589ef2554d) don't require the JitDiagnosers (TailCall & Inlining) to run benchmarks once ... (by [@adamsitnik](https://github.com/adamsitnik)) -* [8ad2a9](https://github.com/dotnet/BenchmarkDotNet/commit/8ad2a93b9aa7ee6b70af09d63c5b1136ff07ad50) Bump Cake version from 0.30.0 to 0.37.0, fix #1379 (#1380) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [474047](https://github.com/dotnet/BenchmarkDotNet/commit/4740478f46f3c98d97d4a5b470260ebd7efa571b) Task add style cope and fxcop analyzers (#1258) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [c648ff](https://github.com/dotnet/BenchmarkDotNet/commit/c648ff956662abae512c579ffa7f1dc12178f6c3) The EventPipeProfiler cross-platform profiler (#1321) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [19169a](https://github.com/dotnet/BenchmarkDotNet/commit/19169a288bd91069a925962059c2fea3a13b6ace) Add brand strings for latest Windows versions (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [532f84](https://github.com/dotnet/BenchmarkDotNet/commit/532f84a298b6e19c2dbeb13e76e90ce6dab398f1) Update README (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [3defd7](https://github.com/dotnet/BenchmarkDotNet/commit/3defd7885aabee22f4a6347d3ee7f191bb6f0b31) Minor event pipe profiler improvements (#1381) (by [@adamsitnik](https://github.com/adamsitnik)) -* [294320](https://github.com/dotnet/BenchmarkDotNet/commit/294320be9525b0ecfefd0351381756d3a3b77211) Improved and Cross platform disassembler (#1332) (by [@adamsitnik](https://github.com/adamsitnik)) -* [1d63d6](https://github.com/dotnet/BenchmarkDotNet/commit/1d63d666da70530b03e392af23453bf5cd7c1784) Fix build after styleCop (#1384) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [b3ba08](https://github.com/dotnet/BenchmarkDotNet/commit/b3ba083e44d040fd269042e1e045539c165b7972) Make BaselineCustomColumn expose "GetValue" as a public API (#1387) (by [@damageboy](https://github.com/damageboy)) -* [54a061](https://github.com/dotnet/BenchmarkDotNet/commit/54a06102a6e0cc4169d23c6f9cd2779ee408d2bf) Switch to perfolizer (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [9ac777](https://github.com/dotnet/BenchmarkDotNet/commit/9ac7770682a45afb6cf4ec353f9fa3c69ece67ce) Ref readonly support (#1389) (by [@adamsitnik](https://github.com/adamsitnik)) -* [c3286f](https://github.com/dotnet/BenchmarkDotNet/commit/c3286f830648f28157f1587fc9ccc3a4277ddf3f) Update CodeAnnotations.cs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [3223c9](https://github.com/dotnet/BenchmarkDotNet/commit/3223c94a92050147a02482a3810860703f0c5171) Code cleanup (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [c19e54](https://github.com/dotnet/BenchmarkDotNet/commit/c19e54a447798bfd0991fdbc8307a131623ad8b8) Implement configurations compatibility validation (#1263), Closes #1238 (by [@gsomix](https://github.com/gsomix)) -* [df434e](https://github.com/dotnet/BenchmarkDotNet/commit/df434ee282a533b6dc4e07529ea8d90e4fa37a8c) Align homepage example with README (#1394) (by [@dahlbyk](https://github.com/dahlbyk)) -* [9a251a](https://github.com/dotnet/BenchmarkDotNet/commit/9a251a3baa6bb1d594c667b1e29f9e341940a61b) Bump macOS Azure Pipeline vmImage to 10.14, fix #1396 (#1397) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [465ebf](https://github.com/dotnet/BenchmarkDotNet/commit/465ebf3fdbf20f0e9219c4c957fb33c13256fdcd) React to .NET 5 branding changes (#1399) (by [@jkotas](https://github.com/jkotas)) -* [6cca72](https://github.com/dotnet/BenchmarkDotNet/commit/6cca72f83990f99096c5908c662b363e3299c0aa) Updating a small grammar mistake (#1410) (by [@abhinavgalodha](https://github.com/abhinavgalodha)) -* [27b32e](https://github.com/dotnet/BenchmarkDotNet/commit/27b32e73a0d6fde9fe7500851444a886b483d3bc) Improve warnings for small operations number (#1407) (by [@CodeFuller](https://github.com/CodeFuller)) -* [2d365b](https://github.com/dotnet/BenchmarkDotNet/commit/2d365b1c581ba65ccb094adcade88cdfaa24b20c) Fix --profiler option description. (#1417) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [7902cd](https://github.com/dotnet/BenchmarkDotNet/commit/7902cd6de243c95861aed0b479d6c118d0711755) Add macOS Catalina support in OsBrandStringHelper (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [fd4c32](https://github.com/dotnet/BenchmarkDotNet/commit/fd4c320d9dab6fc124587116bfaf6111b20ff1ab) Update README (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [6e13ba](https://github.com/dotnet/BenchmarkDotNet/commit/6e13ba2c2bc8cbd8146ea9c57a605ce4a2ffe356) Resolving JobId in DefaultCharacteristicPresenter, fix #1413 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [35ebd2](https://github.com/dotnet/BenchmarkDotNet/commit/35ebd29556e127b0f2867a73d81537a45a5cb09a) Better job id generation in SimpleJobAttribute (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [bf4778](https://github.com/dotnet/BenchmarkDotNet/commit/bf477848a809c26ec9068943325282e748b5d230) Use ASCII mode for Measurement presentation in terminal (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [f6b81f](https://github.com/dotnet/BenchmarkDotNet/commit/f6b81f2f4de14d9891f75244ebcdd8ad94373793) Display result path in RPlotExporter (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [30b269](https://github.com/dotnet/BenchmarkDotNet/commit/30b269c33a18c704a4769646939a64f71eeec4d9) Disable plot printing in BuildPlots.R (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [27887d](https://github.com/dotnet/BenchmarkDotNet/commit/27887d4b612312c74c63c0c3220351f8db8e81e4) Disable Rplots.pdf generation in BuildPlots.R (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [338e40](https://github.com/dotnet/BenchmarkDotNet/commit/338e40b18713ccf9319c27eb4aa6a411c568314a) Specify uid for how-to-run.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [f6dcd3](https://github.com/dotnet/BenchmarkDotNet/commit/f6dcd323c66e189dc64bf56127e488ba1735848c) Add BenchmarkDotNet.Annotations in API documentation (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [b503fd](https://github.com/dotnet/BenchmarkDotNet/commit/b503fd7d2ccb313b8a8d67bafc5446c6baea1e0a) Bump DocFX version from 2.46 to 2.51 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [f457e7](https://github.com/dotnet/BenchmarkDotNet/commit/f457e7ff56a833c6aef11c9840d564f93ffb35fb) Prepare v0.12.1 changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [53d090](https://github.com/dotnet/BenchmarkDotNet/commit/53d090ac85b9e53461ced11913fc46814da5d744) Fix documentation.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [e72897](https://github.com/dotnet/BenchmarkDotNet/commit/e728974133d9f9fbbd4bf015834f9e8157d80be9) Add v0.12.1 highlights (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [2de040](https://github.com/dotnet/BenchmarkDotNet/commit/2de040d0ad6bf64c60095c2a47f6264c1b3c39fa) Bump perfolizer version from 0.2.0 to 0.2.1 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [76a070](https://github.com/dotnet/BenchmarkDotNet/commit/76a07049e3e829b690cc3562830f8882b078a26e) EventPipeProfiler documentation (#1418) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [928fb1](https://github.com/dotnet/BenchmarkDotNet/commit/928fb1e6d941ea6fc50b7c50809118ec952c8598) EventPipeProfiler doc improvements (#1419) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [12798e](https://github.com/dotnet/BenchmarkDotNet/commit/12798ed26f960879ade54a4a796877ff951ff8cd) Update documentation (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [384d47](https://github.com/dotnet/BenchmarkDotNet/commit/384d479fdeb6560527f1918b0be00967fddd01dd) Set library version: 0.12.1 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (19) - -* Abhinav Galodha ([@abhinavgalodha](https://github.com/abhinavgalodha)) -* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik)) -* Andreas Vilinski ([@vilinski](https://github.com/vilinski)) -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* Andrii Kurdiumov ([@kant2002](https://github.com/kant2002)) -* CodeFuller ([@CodeFuller](https://github.com/CodeFuller)) -* damageboy ([@damageboy](https://github.com/damageboy)) -* Eriawan Kusumawardhono ([@eriawan](https://github.com/eriawan)) -* Evgeniy Andreev ([@gsomix](https://github.com/gsomix)) -* Jan Kotas ([@jkotas](https://github.com/jkotas)) -* Jean-Bernard Pellerin ([@jeanbern](https://github.com/jeanbern)) -* Johannes Rössel [yWorks] ([@jroessel](https://github.com/jroessel)) -* Keith Dahlby ([@dahlbyk](https://github.com/dahlbyk)) -* Konstantin ([@suslovk](https://github.com/suslovk)) -* Matt McCormick ([@m-mccormick](https://github.com/m-mccormick)) -* Mayuki Sawatari ([@mayuki](https://github.com/mayuki)) -* Oleksii Holub ([@Tyrrrz](https://github.com/Tyrrrz)) -* 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.13.0.md b/docs/_changelog/details/v0.13.0.md deleted file mode 100644 index 0207997fd2..0000000000 --- a/docs/_changelog/details/v0.13.0.md +++ /dev/null @@ -1,315 +0,0 @@ -## Milestone details - -In the [v0.13.0](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.13.0) scope, -53 issues were resolved and 94 pull requests were merged. -This release includes 111 commits by 37 contributors. - -## Resolved issues (53) - -* [#721](https://github.com/dotnet/BenchmarkDotNet/issues/721) Add possibility to customize BaselinedScaledColumn with provided func (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#1136](https://github.com/dotnet/BenchmarkDotNet/issues/1136) benchmark / beforeEverything fails when running in docker-win -* [#1242](https://github.com/dotnet/BenchmarkDotNet/issues/1242) bug JSON Exporter exports NaN for some properties. This fails most JSON parsers (assignee: [@marcnet80](https://github.com/marcnet80)) -* [#1247](https://github.com/dotnet/BenchmarkDotNet/issues/1247) Support benchmarks with very long string arguments (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1288](https://github.com/dotnet/BenchmarkDotNet/issues/1288) Fix Hardware Counters diagnoser (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1290](https://github.com/dotnet/BenchmarkDotNet/issues/1290) BenchmarkRunner should support parsing console line arguments (assignee: [@chan18](https://github.com/chan18)) -* [#1333](https://github.com/dotnet/BenchmarkDotNet/issues/1333) Getting "Unknown Processor" Again -* [#1427](https://github.com/dotnet/BenchmarkDotNet/issues/1427) NativeMemoryProfiler reports false positive leak (assignee: [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [#1431](https://github.com/dotnet/BenchmarkDotNet/issues/1431) System.IO.FileNotFoundException with EtwProfiler -* [#1433](https://github.com/dotnet/BenchmarkDotNet/issues/1433) Benchmarks work in .NET 4.7.2 but not .NET Core 3.1 -* [#1436](https://github.com/dotnet/BenchmarkDotNet/issues/1436) Wrong OsBrandString for Windows 10 1909 -* [#1448](https://github.com/dotnet/BenchmarkDotNet/issues/1448) NRE in MultimodalDistributionAnalyzer -* [#1452](https://github.com/dotnet/BenchmarkDotNet/issues/1452) Setting LangVersion to Latest Causes an Error -* [#1464](https://github.com/dotnet/BenchmarkDotNet/issues/1464) DisassemblyDiagnoserConfig.ExportDiff needs better description -* [#1472](https://github.com/dotnet/BenchmarkDotNet/issues/1472) Add support of Wasm to Benchmark Dotnet (assignee: [@naricc](https://github.com/naricc)) -* [#1474](https://github.com/dotnet/BenchmarkDotNet/issues/1474) docs: Getting started guide -* [#1480](https://github.com/dotnet/BenchmarkDotNet/issues/1480) BenchmarkRunner not working from VSTS agent (assignee: [@lovettchris](https://github.com/lovettchris)) -* [#1487](https://github.com/dotnet/BenchmarkDotNet/issues/1487) Benchmarks do not execute (as service process / VSTS agent) on non US systems -* [#1493](https://github.com/dotnet/BenchmarkDotNet/issues/1493) Using WithCustomBuildConfiguration leads to always running with RyuJIT Debug (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1495](https://github.com/dotnet/BenchmarkDotNet/issues/1495) [GcServer(true)] is ignored with --corerun -* [#1496](https://github.com/dotnet/BenchmarkDotNet/issues/1496) System.MissingMethodException: Method not found: 'Iced.Intel.MasmFormatter.get_MasmOptions()'. -* [#1512](https://github.com/dotnet/BenchmarkDotNet/issues/1512) Template has hardcoded netcoreapp3.0 TFM (assignee: [@ExceptionCaught](https://github.com/ExceptionCaught)) -* [#1532](https://github.com/dotnet/BenchmarkDotNet/issues/1532) Auto-generated project has invalid XML -* [#1535](https://github.com/dotnet/BenchmarkDotNet/issues/1535) Can't benchmark library that targets 'net5.0-windows' framework (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1537](https://github.com/dotnet/BenchmarkDotNet/issues/1537) Failed to run benchmarks on .net 5 RC1 and Preview LangVersion -* [#1539](https://github.com/dotnet/BenchmarkDotNet/issues/1539) Inconsistency between benchmark filter and hint (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1544](https://github.com/dotnet/BenchmarkDotNet/issues/1544) [EtwProfiler] Merge operation failed return code 0x3 (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1546](https://github.com/dotnet/BenchmarkDotNet/issues/1546) Sometimes Hardware Counters per Op are reported as NaNs (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1549](https://github.com/dotnet/BenchmarkDotNet/issues/1549) InstructionPointerExporter has been broken for a while (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1559](https://github.com/dotnet/BenchmarkDotNet/issues/1559) [Docs] Update Console Args doc (assignee: [@kevinsalimi](https://github.com/kevinsalimi)) -* [#1561](https://github.com/dotnet/BenchmarkDotNet/issues/1561) NativeMemoryProfiler doesn't report allocations in v0.12.1.1432 Nightly (assignee: [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [#1564](https://github.com/dotnet/BenchmarkDotNet/issues/1564) error MSB4086: A numeric comparison was attempted on "$(LangVersion)" (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1565](https://github.com/dotnet/BenchmarkDotNet/issues/1565) More consistent formatting of results -* [#1566](https://github.com/dotnet/BenchmarkDotNet/issues/1566) BDN should not delete temporary build directories for failed builds (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1570](https://github.com/dotnet/BenchmarkDotNet/issues/1570) Benchmark runs failing when using .NET 5 RC2 SDK installed via snap (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1576](https://github.com/dotnet/BenchmarkDotNet/issues/1576) Missing/misleading version number with corerun -* [#1585](https://github.com/dotnet/BenchmarkDotNet/issues/1585) Non-optimized dependency -* [#1591](https://github.com/dotnet/BenchmarkDotNet/issues/1591) Wasm Benchmark Runs Failing with Target Framework Error (assignee: [@naricc](https://github.com/naricc)) -* [#1598](https://github.com/dotnet/BenchmarkDotNet/issues/1598) VB Net Framework project throws exception from command line tool -* [#1605](https://github.com/dotnet/BenchmarkDotNet/issues/1605) CoreRT / NativeAOT version (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1607](https://github.com/dotnet/BenchmarkDotNet/issues/1607) Exporter approval tests has recently become unstable (assignee: [@marcnet80](https://github.com/marcnet80)) -* [#1613](https://github.com/dotnet/BenchmarkDotNet/issues/1613) EventPipeProfiler generating invalid SpeedScope files. -* [#1616](https://github.com/dotnet/BenchmarkDotNet/issues/1616) BenchmarkDotNet fail in WPF project with .NET 5.0-windows target -* [#1620](https://github.com/dotnet/BenchmarkDotNet/issues/1620) NullReferenceException in v0.12.1 -* [#1623](https://github.com/dotnet/BenchmarkDotNet/issues/1623) Can I run Full Framework benchmarks without having a Console App? (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1628](https://github.com/dotnet/BenchmarkDotNet/issues/1628) Installation uses legacy/archaic dotnetcore 2.1.503 (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1629](https://github.com/dotnet/BenchmarkDotNet/issues/1629) Writing to Console.Error in benchmarked code causes a deadlock (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1654](https://github.com/dotnet/BenchmarkDotNet/issues/1654) Update for 0.12.2 -* [#1670](https://github.com/dotnet/BenchmarkDotNet/issues/1670) dotnet benchmark cli tool errors with .net5.0 assemblies (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1673](https://github.com/dotnet/BenchmarkDotNet/issues/1673) Source code provider incorrectly handles multiline source code -* [#1685](https://github.com/dotnet/BenchmarkDotNet/issues/1685) Support for SingleFile && SelfContained apps -* [#1692](https://github.com/dotnet/BenchmarkDotNet/issues/1692) Bug running wasm benchmarks - Broken Pipe in writeline -* [#1693](https://github.com/dotnet/BenchmarkDotNet/issues/1693) Estimate Date for Supporting .NET 6 (assignee: [@adamsitnik](https://github.com/adamsitnik)) - -## Merged pull requests (94) - -* [#1097](https://github.com/dotnet/BenchmarkDotNet/pull/1097) Allow for Config per method, introduce OS and OSArchitecture filters (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1248](https://github.com/dotnet/BenchmarkDotNet/pull/1248) Support very long string as benchmark arguments (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1292](https://github.com/dotnet/BenchmarkDotNet/pull/1292) passed args to benchmark runner (by [@chan18](https://github.com/chan18)) -* [#1360](https://github.com/dotnet/BenchmarkDotNet/pull/1360) Basic BenchmarkDotNet support for Xamarin (by [@jonathanpeppers](https://github.com/jonathanpeppers)) -* [#1420](https://github.com/dotnet/BenchmarkDotNet/pull/1420) Fix MSB4086 if LangVersion is a keyword (by [@martincostello](https://github.com/martincostello)) -* [#1426](https://github.com/dotnet/BenchmarkDotNet/pull/1426) Fix typo in log message (by [@martincostello](https://github.com/martincostello)) -* [#1429](https://github.com/dotnet/BenchmarkDotNet/pull/1429) [xamarin] fix Mono runtime version detection (by [@jonathanpeppers](https://github.com/jonathanpeppers)) -* [#1434](https://github.com/dotnet/BenchmarkDotNet/pull/1434) [samples] UI tweaks to Xamarin samples (by [@jonathanpeppers](https://github.com/jonathanpeppers)) -* [#1437](https://github.com/dotnet/BenchmarkDotNet/pull/1437) Fix wrongly reported os brand string for Windows 10 1909 (by [@kapsiR](https://github.com/kapsiR)) -* [#1443](https://github.com/dotnet/BenchmarkDotNet/pull/1443) Handle assemblies loaded via a stream (by [@jeremyosterhoudt](https://github.com/jeremyosterhoudt)) -* [#1451](https://github.com/dotnet/BenchmarkDotNet/pull/1451) Fix native memory profiler (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [#1454](https://github.com/dotnet/BenchmarkDotNet/pull/1454) always print full information about non-optimized dependencies (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1458](https://github.com/dotnet/BenchmarkDotNet/pull/1458) Don't try to parse blank lines (by [@TysonMN](https://github.com/TysonMN)) -* [#1459](https://github.com/dotnet/BenchmarkDotNet/pull/1459) Upgrades ClrMD to a version that will not crash on Linux :( (by [@damageboy](https://github.com/damageboy)) -* [#1463](https://github.com/dotnet/BenchmarkDotNet/pull/1463) Updated Disassembler docs (by [@lukasz-pyrzyk](https://github.com/lukasz-pyrzyk)) -* [#1465](https://github.com/dotnet/BenchmarkDotNet/pull/1465) Improved doc description of the ExportDiff property (by [@lukasz-pyrzyk](https://github.com/lukasz-pyrzyk)) -* [#1471](https://github.com/dotnet/BenchmarkDotNet/pull/1471) Clearly display names for .Net Framework (by [@svick](https://github.com/svick)) -* [#1478](https://github.com/dotnet/BenchmarkDotNet/pull/1478) ParamsSource returning IEnumerable fixes (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1479](https://github.com/dotnet/BenchmarkDotNet/pull/1479) net5.0 does not contain "core" word but it's a .NET Core moniker (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1483](https://github.com/dotnet/BenchmarkDotNet/pull/1483) Add Wasm Tool Chain (by [@naricc](https://github.com/naricc)) -* [#1488](https://github.com/dotnet/BenchmarkDotNet/pull/1488) Safe access to CultureInfo (by [@suslovk](https://github.com/suslovk)) -* [#1489](https://github.com/dotnet/BenchmarkDotNet/pull/1489) enforce Deterministic builds for auto-generated .NET Core projects (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1490](https://github.com/dotnet/BenchmarkDotNet/pull/1490) be less strict about verifying the Acknowledgment (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1491](https://github.com/dotnet/BenchmarkDotNet/pull/1491) set process output encoding to utf8 so BenchmarkRunnerDotNet works in self hosted VSTS agent. (by [@lovettchris](https://github.com/lovettchris)) -* [#1492](https://github.com/dotnet/BenchmarkDotNet/pull/1492) allow the users to specify Platform via console args (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1494](https://github.com/dotnet/BenchmarkDotNet/pull/1494) enforce Optimizations when using Custom Build Configurations (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1497](https://github.com/dotnet/BenchmarkDotNet/pull/1497) Update to latest Iced 1.7.0 (by [@Symbai](https://github.com/Symbai)) -* [#1498](https://github.com/dotnet/BenchmarkDotNet/pull/1498) Pedantic WASM improvements (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1500](https://github.com/dotnet/BenchmarkDotNet/pull/1500) Wasm: samples, docs and a bug fix (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1501](https://github.com/dotnet/BenchmarkDotNet/pull/1501) Add Custom Runtime Pack option (by [@naricc](https://github.com/naricc)) -* [#1502](https://github.com/dotnet/BenchmarkDotNet/pull/1502) Update to latest Iced (by [@Symbai](https://github.com/Symbai)) -* [#1503](https://github.com/dotnet/BenchmarkDotNet/pull/1503) Update MeasurementsStatistics.cs (by [@skynode](https://github.com/skynode)) -* [#1507](https://github.com/dotnet/BenchmarkDotNet/pull/1507) Change mono-config.js format in the Wasm Tool Chain for ICU support (by [@naricc](https://github.com/naricc)) -* [#1508](https://github.com/dotnet/BenchmarkDotNet/pull/1508) fixed typo (by [@fleckert](https://github.com/fleckert)) -* [#1509](https://github.com/dotnet/BenchmarkDotNet/pull/1509) [xamarin] fix for DebugConfig and read-only file system (by [@jonathanpeppers](https://github.com/jonathanpeppers)) -* [#1518](https://github.com/dotnet/BenchmarkDotNet/pull/1518) FactorialWithTailing - incorrect implementation (by [@MarecekF](https://github.com/MarecekF)) -* [#1523](https://github.com/dotnet/BenchmarkDotNet/pull/1523) add .NET 6.0 support, rename .NET Core 5.0 to .NET 5.0 (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1540](https://github.com/dotnet/BenchmarkDotNet/pull/1540) Remove unneeded files after etw profiler (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [#1545](https://github.com/dotnet/BenchmarkDotNet/pull/1545) Fix Merge operation failed for EtwProfiler (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1547](https://github.com/dotnet/BenchmarkDotNet/pull/1547) hardware counters: don't try to exclude non-existing overhead for long running benchmarks (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1548](https://github.com/dotnet/BenchmarkDotNet/pull/1548) Remove the old PmcDiagnoser, EtwProfiler is much more accurate (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1550](https://github.com/dotnet/BenchmarkDotNet/pull/1550) Bring instruction pointer exporter back to live (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1552](https://github.com/dotnet/BenchmarkDotNet/pull/1552) Enable supported GcMode characteristics with corerun (by [@stanciuadrian](https://github.com/stanciuadrian)) -* [#1554](https://github.com/dotnet/BenchmarkDotNet/pull/1554) Documentation: add --maxWidth description (by [@joostas](https://github.com/joostas)) -* [#1556](https://github.com/dotnet/BenchmarkDotNet/pull/1556) Simplify code: remove sort before adding to HashSet (by [@stanciuadrian](https://github.com/stanciuadrian)) -* [#1560](https://github.com/dotnet/BenchmarkDotNet/pull/1560) Add support for Platform-specific TFMs introduced in .NET 5 (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1563](https://github.com/dotnet/BenchmarkDotNet/pull/1563) ensure that the auto-generated project alwas has tfm in the output path (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1567](https://github.com/dotnet/BenchmarkDotNet/pull/1567) Dont remove artifacts when build fails (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1568](https://github.com/dotnet/BenchmarkDotNet/pull/1568) Update getting-started.md (by [@michalgalecki](https://github.com/michalgalecki)) -* [#1569](https://github.com/dotnet/BenchmarkDotNet/pull/1569) Respect size number format in MetricColumn (by [@jodydonetti](https://github.com/jodydonetti)) -* [#1571](https://github.com/dotnet/BenchmarkDotNet/pull/1571) Dispose parameters, kill benchmarking process when it hangs after printing the results (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1572](https://github.com/dotnet/BenchmarkDotNet/pull/1572) Remove the dotnet global tool (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1573](https://github.com/dotnet/BenchmarkDotNet/pull/1573) Don't run the benchmark once per iteration if only the first ivocation lasts longer than IterationTime (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1580](https://github.com/dotnet/BenchmarkDotNet/pull/1580) use Environment.Version to determine .NET 5+ versions (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1581](https://github.com/dotnet/BenchmarkDotNet/pull/1581) Json exporter fix (by [@marcnet80](https://github.com/marcnet80)) -* [#1582](https://github.com/dotnet/BenchmarkDotNet/pull/1582) introduce ManualConfig.CreateMinimumViable() method (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1584](https://github.com/dotnet/BenchmarkDotNet/pull/1584) Prevent dotnet pack from packaging benchmark projects (by [@kendaleiv](https://github.com/kendaleiv)) -* [#1587](https://github.com/dotnet/BenchmarkDotNet/pull/1587) Memory Randomization (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1590](https://github.com/dotnet/BenchmarkDotNet/pull/1590) Update message to not suggest an obsolete API (by [@martincostello](https://github.com/martincostello)) -* [#1592](https://github.com/dotnet/BenchmarkDotNet/pull/1592) Add wasmnet50 wasmnet60 monikers (by [@naricc](https://github.com/naricc)) -* [#1600](https://github.com/dotnet/BenchmarkDotNet/pull/1600) fix issue #1561 (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [#1601](https://github.com/dotnet/BenchmarkDotNet/pull/1601) Update README.md (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [#1606](https://github.com/dotnet/BenchmarkDotNet/pull/1606) CoreRT feed and version update (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1609](https://github.com/dotnet/BenchmarkDotNet/pull/1609) Fix #1604 - pass SummaryStyle to ParameterInstance.ToDisplayText() (by [@JohannesDeml](https://github.com/JohannesDeml)) -* [#1610](https://github.com/dotnet/BenchmarkDotNet/pull/1610) Fix add missing culuture info to ToString in RatioStyle (by [@JohannesDeml](https://github.com/JohannesDeml)) -* [#1612](https://github.com/dotnet/BenchmarkDotNet/pull/1612) Sorting parameter columns with parameter priority (by [@JohannesDeml](https://github.com/JohannesDeml)) -* [#1618](https://github.com/dotnet/BenchmarkDotNet/pull/1618) Json indentation level fix (by [@marcnet80](https://github.com/marcnet80)) -* [#1630](https://github.com/dotnet/BenchmarkDotNet/pull/1630) Update framework symbol on dotnet new template #1512 (by [@ExceptionCaught](https://github.com/ExceptionCaught)) -* [#1631](https://github.com/dotnet/BenchmarkDotNet/pull/1631) don't redirect Standard Error, as we don't read it and writing to it by benchmark can cause deadlocks (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1632](https://github.com/dotnet/BenchmarkDotNet/pull/1632) update console app templating (by [@ExceptionCaught](https://github.com/ExceptionCaught)) -* [#1633](https://github.com/dotnet/BenchmarkDotNet/pull/1633) Update etwprofiler.md (by [@MendelMonteiro](https://github.com/MendelMonteiro)) -* [#1635](https://github.com/dotnet/BenchmarkDotNet/pull/1635) Install local SDK without sudo on Unix (by [@am11](https://github.com/am11)) -* [#1637](https://github.com/dotnet/BenchmarkDotNet/pull/1637) .NET Core 2.1 -> .NET 5.0 (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1643](https://github.com/dotnet/BenchmarkDotNet/pull/1643) Remove CoreRT workaround (by [@MichalStrehovsky](https://github.com/MichalStrehovsky)) -* [#1644](https://github.com/dotnet/BenchmarkDotNet/pull/1644) Filter hint improvements (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1645](https://github.com/dotnet/BenchmarkDotNet/pull/1645) Update Console Args doc #1559 (by [@kevinsalimi](https://github.com/kevinsalimi)) -* [#1647](https://github.com/dotnet/BenchmarkDotNet/pull/1647) Update API in documentation #1602 (by [@kevinsalimi](https://github.com/kevinsalimi)) -* [#1652](https://github.com/dotnet/BenchmarkDotNet/pull/1652) Basic snap support (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1657](https://github.com/dotnet/BenchmarkDotNet/pull/1657) 1655 doc with options obsolete usage of with (by [@cedric-cf](https://github.com/cedric-cf)) -* [#1659](https://github.com/dotnet/BenchmarkDotNet/pull/1659) feat: Allowed to indicate the source of nuget package and whether it is a pre-release version. (by [@workgroupengineering](https://github.com/workgroupengineering)) -* [#1662](https://github.com/dotnet/BenchmarkDotNet/pull/1662) Add tool chain for Netcore Mono AOT. (by [@naricc](https://github.com/naricc)) -* [#1667](https://github.com/dotnet/BenchmarkDotNet/pull/1667) Changed default debug type to pdbonly (by [@YohDeadfall](https://github.com/YohDeadfall)) -* [#1672](https://github.com/dotnet/BenchmarkDotNet/pull/1672) when all builds fail, BDN should stop after printing first error (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1674](https://github.com/dotnet/BenchmarkDotNet/pull/1674) Fixed smart pointer for multiline source code (by [@YohDeadfall](https://github.com/YohDeadfall)) -* [#1675](https://github.com/dotnet/BenchmarkDotNet/pull/1675) Updated disassembler contribution docs (by [@YohDeadfall](https://github.com/YohDeadfall)) -* [#1676](https://github.com/dotnet/BenchmarkDotNet/pull/1676) Fix a docs typo (by [@jeffhandley](https://github.com/jeffhandley)) -* [#1679](https://github.com/dotnet/BenchmarkDotNet/pull/1679) Fix location for NativeAOT publish files (by [@kant2002](https://github.com/kant2002)) -* [#1686](https://github.com/dotnet/BenchmarkDotNet/pull/1686) Resolve assembly location for SingleFile (by [@am11](https://github.com/am11)) -* [#1689](https://github.com/dotnet/BenchmarkDotNet/pull/1689) Dont redirect standard input for WASM (by [@naricc](https://github.com/naricc)) -* [#1690](https://github.com/dotnet/BenchmarkDotNet/pull/1690) Fix change runtime target to Core50 (by [@JohannesDeml](https://github.com/JohannesDeml)) -* [#1691](https://github.com/dotnet/BenchmarkDotNet/pull/1691) don't remove OS version number from the platform-specifc TFM (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1697](https://github.com/dotnet/BenchmarkDotNet/pull/1697) 0.13.0 release notes (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1698](https://github.com/dotnet/BenchmarkDotNet/pull/1698) Update "View results" from "Getting started" (by [@rstm-sf](https://github.com/rstm-sf)) -* [#1707](https://github.com/dotnet/BenchmarkDotNet/pull/1707) Set ValidateExecutableReferencesMatchSelfContained to false in aotllvm template (by [@naricc](https://github.com/naricc)) - -## Commits (111) - -* [117c37](https://github.com/dotnet/BenchmarkDotNet/commit/117c37c5952f019b5fdbb97f7257b846190cb303) Postrelease update of v0.12.1 changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [742f44](https://github.com/dotnet/BenchmarkDotNet/commit/742f44f183dfc887d60d327a3337d226572d4a26) Fix typo (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [82b15e](https://github.com/dotnet/BenchmarkDotNet/commit/82b15eec13bc324013cc5089685b1bac4aa5324f) Fix MSB4086 if LangVersion is a keyword (#1420) (by [@martincostello](https://github.com/martincostello)) -* [9c0f52](https://github.com/dotnet/BenchmarkDotNet/commit/9c0f52390610a54c893c3ea25073ac0d908e0921) Xamarin Support (#1360) (by [@jonathanpeppers](https://github.com/jonathanpeppers)) -* [e37c02](https://github.com/dotnet/BenchmarkDotNet/commit/e37c02139564bfad53fd86b04d4b8839c71f5d90) Fix typo in log message (#1426) (by [@martincostello](https://github.com/martincostello)) -* [ccdf22](https://github.com/dotnet/BenchmarkDotNet/commit/ccdf229ca82c1f064ee7e43af2d1f10991f247a5) [xamarin] fix Mono runtime version detection (#1429) (by [@jonathanpeppers](https://github.com/jonathanpeppers)) -* [d95493](https://github.com/dotnet/BenchmarkDotNet/commit/d95493b1130a63326d5ba82a25a7a784240a1615) [samples] UI tweaks to Xamarin samples (#1434) (by [@jonathanpeppers](https://github.com/jonathanpeppers)) -* [d07604](https://github.com/dotnet/BenchmarkDotNet/commit/d076048bdc73f221ed6491a5c275971d5e6852cf) Fix wrongly reported os brand string for Windows 10 1909 (#1437) (by [@kapsiR](https://github.com/kapsiR)) -* [1efd5e](https://github.com/dotnet/BenchmarkDotNet/commit/1efd5e1fece3d2b635e9a18c2c20b0af1259bc21) Handle assemblies loaded via a stream (#1443) (by [@jeremyosterhoudt](https://github.com/jeremyosterhoudt)) -* [502ad7](https://github.com/dotnet/BenchmarkDotNet/commit/502ad7d0ede6dd5afd80f0e90e1523567233840c) Update OsBrandStringHelper.cs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [67971e](https://github.com/dotnet/BenchmarkDotNet/commit/67971e92d9915622bcc44e8e75ed612cb8725e60) Update OsBrandStringTests.cs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [ceef31](https://github.com/dotnet/BenchmarkDotNet/commit/ceef311bfc73a08a3b07f177f6b9f9782191b794) don't try to parse blank lines #1456 (#1458) (by [@TysonMN](https://github.com/TysonMN)) -* [9a3469](https://github.com/dotnet/BenchmarkDotNet/commit/9a34695c8395e2d39b7dae2e25a10aa7121ae74e) Upgrades ClrMD to a version that will not crash on Linux :( (#1459) (by [@damageboy](https://github.com/damageboy)) -* [bd1c93](https://github.com/dotnet/BenchmarkDotNet/commit/bd1c934f0d973a0b3e0791069cf0a21c35229210) Updated Disassembler settings (#1463) (by [@lukasz-pyrzyk](https://github.com/lukasz-pyrzyk)) -* [35f50f](https://github.com/dotnet/BenchmarkDotNet/commit/35f50fb1fc8ad6af740ae02bfd28cf9fde993805) Improved doc description of the ExportDiff property (#1465) (by [@lukasz-pyrzyk](https://github.com/lukasz-pyrzyk)) -* [dbbab9](https://github.com/dotnet/BenchmarkDotNet/commit/dbbab9a2f5a2e6df1f519316133b970653514e53) Clearly display names for .Net Framework (#1471) (by [@svick](https://github.com/svick)) -* [044591](https://github.com/dotnet/BenchmarkDotNet/commit/0445917bf93059f17cb09e7d48cdb5e27a096c37) ParamsSource returning IEnumerable fixes (#1478) (by [@adamsitnik](https://github.com/adamsitnik)) -* [703d54](https://github.com/dotnet/BenchmarkDotNet/commit/703d54388edcd5941f1cea49fbca80810ce10875) Safe access to CultureInfo (by [@suslovk](https://github.com/suslovk)) -* [a4dd37](https://github.com/dotnet/BenchmarkDotNet/commit/a4dd37cda8584684697552f64c228fa02129ebd8) Update to latest Iced (#1497) (by [@Symbai](https://github.com/Symbai)) -* [092889](https://github.com/dotnet/BenchmarkDotNet/commit/09288954791df64a3da162df705b7701e1c7e8b9) Add Wasm Tool Chain (#1483) (by [@naricc](https://github.com/naricc)) -* [01455d](https://github.com/dotnet/BenchmarkDotNet/commit/01455d9528b64a55cecbd569e23f6a047732d930) set process output encoding to utf8 (#1491) (by [@lovettchris](https://github.com/lovettchris)) -* [fa7da4](https://github.com/dotnet/BenchmarkDotNet/commit/fa7da4e395ddde927b16e5ec8b7ebe9e50ec0485) net5.0 does not contain "core" word but it's a .NET Core moniker (#1479) (by [@adamsitnik](https://github.com/adamsitnik)) -* [254da4](https://github.com/dotnet/BenchmarkDotNet/commit/254da42428df067e9084e7b5c02fbc88e473dce6) enforce Optimizations when using Custom Build Configurations (#1494) (by [@adamsitnik](https://github.com/adamsitnik)) -* [765d52](https://github.com/dotnet/BenchmarkDotNet/commit/765d5299b5c56c9fce3051b39dc33270f0cfc5f6) allow the users to specify Platform via console args (#1492) (by [@adamsitnik](https://github.com/adamsitnik)) -* [908b09](https://github.com/dotnet/BenchmarkDotNet/commit/908b09b0d1c1481ef68707ce0345baf8de6a72a9) always print full information about non-optimized dependencies (#1454) (by [@adamsitnik](https://github.com/adamsitnik)) -* [1ff50a](https://github.com/dotnet/BenchmarkDotNet/commit/1ff50ae8d723661822b152209851c9b81cc2cd4c) Pedantic WASM improvements (#1498) (by [@adamsitnik](https://github.com/adamsitnik)) -* [d57c4c](https://github.com/dotnet/BenchmarkDotNet/commit/d57c4c296dc8b90c00ed5fd19b503755f36c4f5b) enforce Deterministic builds for auto-generated .NET Core projects (#1489) (by [@adamsitnik](https://github.com/adamsitnik)) -* [59080c](https://github.com/dotnet/BenchmarkDotNet/commit/59080cd5d16e51fe39d20ca3537d14bdf1f94565) Support very long string as benchmark arguments (#1248) (by [@adamsitnik](https://github.com/adamsitnik)) -* [9c5663](https://github.com/dotnet/BenchmarkDotNet/commit/9c5663607491d6957448020f46bd4bebdf762e9f) Wasm: samples, docs and a bug fix (#1500) (by [@adamsitnik](https://github.com/adamsitnik)) -* [13ee8b](https://github.com/dotnet/BenchmarkDotNet/commit/13ee8bebd7484fcab007a52d9a5ca4aea5e67b34) Add Custom Runtime Pack option to WasmToolchain (#1501) (by [@naricc](https://github.com/naricc)) -* [b356ac](https://github.com/dotnet/BenchmarkDotNet/commit/b356ac87f3b5bbab1716b696eceb4a23ba5d02be) Update to latest Iced (#1502) (by [@Symbai](https://github.com/Symbai)) -* [797ced](https://github.com/dotnet/BenchmarkDotNet/commit/797cedc83b22b4c68035a12c93ed86fbf68986b2) fixed typo (#1508) (by [@fleckert](https://github.com/fleckert)) -* [ef0ac7](https://github.com/dotnet/BenchmarkDotNet/commit/ef0ac72aef7812b433bfab3cfe0d9fdb031b8525) Change mono-config.js format in the Wasm Tool Chain for ICU support (#1507) (by [@naricc](https://github.com/naricc)) -* [eb20d3](https://github.com/dotnet/BenchmarkDotNet/commit/eb20d3eacbaa69eaa793b847d3ad6a440fad307e) Update README (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [92474e](https://github.com/dotnet/BenchmarkDotNet/commit/92474e8870244bec76393ee59debd7126fe3bc13) make MeasurementsStatistics a readonly ref struct (#1503) (by [@skynode](https://github.com/skynode)) -* [64cc94](https://github.com/dotnet/BenchmarkDotNet/commit/64cc94a8c9b22acebf7f43124929fe39c309c8e1) [xamarin] fix for DebugConfig and read-only file system (#1509) (by [@jonathanpeppers](https://github.com/jonathanpeppers)) -* [c8af03](https://github.com/dotnet/BenchmarkDotNet/commit/c8af03aa618793ddff1504f9ddad58eeb1253f2c) FactorialWithTailing - fix incorrect sample implementation (#1518) (by [@MarecekF](https://github.com/MarecekF)) -* [c9f158](https://github.com/dotnet/BenchmarkDotNet/commit/c9f15818de3e07276fca79a51074a41bce85b076) add .NET 6.0 support, rename .NET Core 5.0 to .NET 5.0 (#1523) (by [@adamsitnik](https://github.com/adamsitnik)) -* [e4d37d](https://github.com/dotnet/BenchmarkDotNet/commit/e4d37d03c0b1ef14e7bde224970bd0fc547fd95a) Fix native memory profiler (#1451) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [10abc4](https://github.com/dotnet/BenchmarkDotNet/commit/10abc4f4daa5142f0257c9d512a38afc2ab28be1) Remove unneeded files after etw profiler (#1540) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [e8d085](https://github.com/dotnet/BenchmarkDotNet/commit/e8d085d7a48001d51719dfcc48da34ed77c9a023) Documentation: add --maxWidth description (#1554) (by [@joostas](https://github.com/joostas)) -* [c6cd54](https://github.com/dotnet/BenchmarkDotNet/commit/c6cd54b3f1211eeaabf361a47925a01e36c3e535) Update CorrectionsSuggester.cs (#1556) (by [@stanciuadrian](https://github.com/stanciuadrian)) -* [be769f](https://github.com/dotnet/BenchmarkDotNet/commit/be769f8e5012cdd818f2af7c6c9d9f18872c054a) Enable supported GcMode characteristics with corerun (#1552) (by [@stanciuadrian](https://github.com/stanciuadrian)) -* [0a004a](https://github.com/dotnet/BenchmarkDotNet/commit/0a004a7bec2b3ed72e27567bf431f49bcde432cb) Update getting-started.md (#1568) (by [@michalgalecki](https://github.com/michalgalecki)) -* [cd0bda](https://github.com/dotnet/BenchmarkDotNet/commit/cd0bda41dce2f266bc09900e31d8f0d4f52eedec) Respect size number format in MetricColumn (#1569), fixes #1565 (by [@jodydonetti](https://github.com/jodydonetti)) -* [349e90](https://github.com/dotnet/BenchmarkDotNet/commit/349e90084a666e39199ed4eff43f2bb5920a14fd) Introduce RatioStyle, fix #721 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [718031](https://github.com/dotnet/BenchmarkDotNet/commit/718031ad420247cc9bb60cf29b036ec36d8c6fe1) hardware counters: don't try to exclude non-existing overhead for long runnin... (by [@adamsitnik](https://github.com/adamsitnik)) -* [fbd52c](https://github.com/dotnet/BenchmarkDotNet/commit/fbd52c05c0fedeba499764bed66121657a3f6ea8) remove the old PmcDiagnoser, EtwProfiler is much more accurate (#1548) (by [@adamsitnik](https://github.com/adamsitnik)) -* [152414](https://github.com/dotnet/BenchmarkDotNet/commit/152414b994d8acee9e7ceec78915aea12e774c5a) Bring instruction pointer exporter back to live (#1550) (by [@adamsitnik](https://github.com/adamsitnik)) -* [c6d6fb](https://github.com/dotnet/BenchmarkDotNet/commit/c6d6fb2b1c392990b12fd2267aa62e440bd7e976) Fix Merge operation failed for EtwProfiler (#1545) (by [@adamsitnik](https://github.com/adamsitnik)) -* [769090](https://github.com/dotnet/BenchmarkDotNet/commit/76909068d9edea1570e994b17b744a160d415804) Add support for Platform-specific TFMs introduced in .NET 5 (#1560) (by [@adamsitnik](https://github.com/adamsitnik)) -* [8de321](https://github.com/dotnet/BenchmarkDotNet/commit/8de321cd4f01eacb98c0d2b02c28db6bb953a113) ensure that the auto-generated project alwas has target framework moniker in ... (by [@adamsitnik](https://github.com/adamsitnik)) -* [0f9bb3](https://github.com/dotnet/BenchmarkDotNet/commit/0f9bb337d027adfc1eb05a3d649d3dce9898793e) Dont remove artifacts when build fails (#1567) (by [@adamsitnik](https://github.com/adamsitnik)) -* [b4bda1](https://github.com/dotnet/BenchmarkDotNet/commit/b4bda14bc72daf0952e47c07d96faccc9c8f2c06) Dispose parameters, kill benchmarking process when it hangs after printing th... (by [@adamsitnik](https://github.com/adamsitnik)) -* [c209b1](https://github.com/dotnet/BenchmarkDotNet/commit/c209b126835c62645600daa1555ef3d394376351) Remove the dotnet global tool (#1572) (by [@adamsitnik](https://github.com/adamsitnik)) -* [178b6a](https://github.com/dotnet/BenchmarkDotNet/commit/178b6adeb8d551a1e57adcd8b62be62150d35f6f) Don't run the benchmark once per iteration if only the first ivocation lasts ... (by [@adamsitnik](https://github.com/adamsitnik)) -* [8b2214](https://github.com/dotnet/BenchmarkDotNet/commit/8b2214ba7f9783aad407b4a3f9e3a3da87482d3b) use Environment.Version to determine .NET 5+ versions (#1580) (by [@adamsitnik](https://github.com/adamsitnik)) -* [d5c158](https://github.com/dotnet/BenchmarkDotNet/commit/d5c158cf960ced771fbca48654ed50b246380ce6) Prevent dotnet pack from packaging benchmark projects (#1584) (by [@kendaleiv](https://github.com/kendaleiv)) -* [8149c3](https://github.com/dotnet/BenchmarkDotNet/commit/8149c36899df0ec67af0550540fdbf1cf5f2a936) Json exporter fix for double.NaN (#1581), fixes #1242 (by [@marcnet80](https://github.com/marcnet80)) -* [c63fe8](https://github.com/dotnet/BenchmarkDotNet/commit/c63fe840ec0ddf793dd9495cc6dc287a1dd6115c) Update message to not suggest an obsolete API (#1590) (by [@martincostello](https://github.com/martincostello)) -* [0de41c](https://github.com/dotnet/BenchmarkDotNet/commit/0de41c2864de41fef983e55790490f1b3364ccbf) Added wasmnet50 wasmnet60 monikers. (#1592) (by [@naricc](https://github.com/naricc)) -* [992719](https://github.com/dotnet/BenchmarkDotNet/commit/992719354ab65df782241675402635113aa7f56e) fix issue #1561 (#1600) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [81c234](https://github.com/dotnet/BenchmarkDotNet/commit/81c234d11cab1b3beb0e60cf0f5c4c92e60a41e6) Update README.md (#1601) (by [@WojciechNagorski](https://github.com/WojciechNagorski)) -* [641ffd](https://github.com/dotnet/BenchmarkDotNet/commit/641ffd5554db6ff85f4a83b4965c9297b7aaf589) Fix #1604 - pass SummaryStyle to ParameterInstance.ToDisplayText() (#1609) (by [@JohannesDeml](https://github.com/JohannesDeml)) -* [e72ddf](https://github.com/dotnet/BenchmarkDotNet/commit/e72ddfbb2fd2c87cd57cc40cfbd4da38b28939d5) Fix add missing culuture info to ToString in RatioStyle (#1610) (by [@JohannesDeml](https://github.com/JohannesDeml)) -* [d17926](https://github.com/dotnet/BenchmarkDotNet/commit/d179261c477cd9a884c6065494e0393e37ebdc62) Json indentation level fix (#1618) (by [@marcnet80](https://github.com/marcnet80)) -* [40f6e5](https://github.com/dotnet/BenchmarkDotNet/commit/40f6e5b7cca9e5d7c3588350335660ad7a39b247) Update framework symbol on dotnet new template #1512 (#1630) (by [@ExceptionCaught](https://github.com/ExceptionCaught)) -* [ffc8dd](https://github.com/dotnet/BenchmarkDotNet/commit/ffc8dd9aea9d12f1902345f69590fa5952cbdb7c) use .AddDiagnoser instead of the obsolete .With in the EtwProfiler doc sample... (by [@MendelMonteiro](https://github.com/MendelMonteiro)) -* [5d421c](https://github.com/dotnet/BenchmarkDotNet/commit/5d421c200405982897c5d67605ba8b920e0b666b) Install local SDK without sudo on Unix (#1635) (by [@am11](https://github.com/am11)) -* [d71a7e](https://github.com/dotnet/BenchmarkDotNet/commit/d71a7e32b20372a1695229fa05e35c2e55eb36ec) update console app templating (#1632) (by [@ExceptionCaught](https://github.com/ExceptionCaught)) -* [aef9cb](https://github.com/dotnet/BenchmarkDotNet/commit/aef9cbecb7f5f5b26bec67e96ab0cbf4487ae8a6) Sorting parameter columns with parameter priority (#1612) (by [@JohannesDeml](https://github.com/JohannesDeml)) -* [d5f7b9](https://github.com/dotnet/BenchmarkDotNet/commit/d5f7b9fa2a689aad4b0cc6e01fc5da61d528a493) Memory Randomization (#1587) (by [@adamsitnik](https://github.com/adamsitnik)) -* [5b2167](https://github.com/dotnet/BenchmarkDotNet/commit/5b216730899854b7fab847c9d88a91dc3d83aa9d) don't redirect Standard Error, as we don't read it and writing to it by bench... (by [@adamsitnik](https://github.com/adamsitnik)) -* [a7af81](https://github.com/dotnet/BenchmarkDotNet/commit/a7af815645b2c6421bf9a6c46b161953b9a72970) introduce ManualConfig.CreateMinimumViable() method (#1582) (by [@adamsitnik](https://github.com/adamsitnik)) -* [852bb8](https://github.com/dotnet/BenchmarkDotNet/commit/852bb8cd9c2ac2530866dc53723c5f2ce3d411fa) .NET Core 2.1 -> .NET 5.0 (#1637) (by [@adamsitnik](https://github.com/adamsitnik)) -* [e01312](https://github.com/dotnet/BenchmarkDotNet/commit/e01312a493bb42911b7e48974671ac7433c126de) Support latest Windows and macOS versions in OsBrandStringHelper (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [502dc9](https://github.com/dotnet/BenchmarkDotNet/commit/502dc9aca86f21a9d38da9634f3bec2143f1f6f5) CoreRT feed and version update (#1606) (by [@adamsitnik](https://github.com/adamsitnik)) -* [9f5d70](https://github.com/dotnet/BenchmarkDotNet/commit/9f5d70604e359c19fa2e9f9614fb3fb33074dde0) Remove CoreRT workaround (#1643) (by [@MichalStrehovsky](https://github.com/MichalStrehovsky)) -* [6a151f](https://github.com/dotnet/BenchmarkDotNet/commit/6a151fe668ee723edd42addaa950d1907a561924) passed args to benchmark runner (#1292) (by [@chan18](https://github.com/chan18)) -* [bf63b3](https://github.com/dotnet/BenchmarkDotNet/commit/bf63b3bca9e989e0d1c777e76b11eb42355b70eb) Update Console Args doc, fixes #1559 (#1645) (by [@kevinsalimi](https://github.com/kevinsalimi)) -* [970d28](https://github.com/dotnet/BenchmarkDotNet/commit/970d289c1d3ae99f24644fc54264ff13a7e3b3d5) Update API in documentation, fixes #1602 (#1647) (by [@kevinsalimi](https://github.com/kevinsalimi)) -* [d758f6](https://github.com/dotnet/BenchmarkDotNet/commit/d758f63b9aa33203e38e87109b1bc017326a28b2) Allow for Config per method, introduce OS and OSArchitecture filters (#1097) (by [@adamsitnik](https://github.com/adamsitnik)) -* [b4e2b6](https://github.com/dotnet/BenchmarkDotNet/commit/b4e2b69cbe5065a0315e8ff62035db2694db4686) 1655 doc with options obsolete usage of with (#1657) (by [@cedric-cf](https://github.com/cedric-cf)) -* [8c28c8](https://github.com/dotnet/BenchmarkDotNet/commit/8c28c871ea0422a1489bda153880046cc90ee136) add basic snap support (#1652) (by [@adamsitnik](https://github.com/adamsitnik)) -* [e1c8cb](https://github.com/dotnet/BenchmarkDotNet/commit/e1c8cb89607abaa84c4881e1a73ee0f1ae76a3b8) Filter hint improvements (#1644) (by [@adamsitnik](https://github.com/adamsitnik)) -* [349f9d](https://github.com/dotnet/BenchmarkDotNet/commit/349f9d9800f768028746e8f23459e715b60428bd) feat: Allowed to indicate the source of nuget package and whether it is a pre... (by [@workgroupengineering](https://github.com/workgroupengineering)) -* [4a917d](https://github.com/dotnet/BenchmarkDotNet/commit/4a917dcb05bb1a04d0eb60a610936d15079e55fe) Add tool chain for Netcore Mono AOT. (#1662) (by [@naricc](https://github.com/naricc)) -* [314a27](https://github.com/dotnet/BenchmarkDotNet/commit/314a27fc26cbbc9aa15d7250ad12578aab632641) [Templates] Changed default debug type to pdbonly (#1667) (by [@YohDeadfall](https://github.com/YohDeadfall)) -* [2616cd](https://github.com/dotnet/BenchmarkDotNet/commit/2616cdc619a081ff0fa7bacbec5893bba2cc900d) Updated disassembler contribution docs (#1675) (by [@YohDeadfall](https://github.com/YohDeadfall)) -* [02b907](https://github.com/dotnet/BenchmarkDotNet/commit/02b9071f6b08c7bf83c495b7e71b235ad328e5c6) Fix a typo (#1676) (by [@jeffhandley](https://github.com/jeffhandley)) -* [b67cfb](https://github.com/dotnet/BenchmarkDotNet/commit/b67cfb45a0b0396c2e97bbe49de78b24b5d1a572) Fix location for NativeAOT publish files (#1679) (by [@kant2002](https://github.com/kant2002)) -* [63e28c](https://github.com/dotnet/BenchmarkDotNet/commit/63e28c100a42a6492d09a0b93a8a4c141061bb0d) when all builds fail, BDN should stop after printing first error (#1672) (by [@adamsitnik](https://github.com/adamsitnik)) -* [becc13](https://github.com/dotnet/BenchmarkDotNet/commit/becc1390bfed1e0718724d19dd2601bfba21635a) Dont redirect standard input for WASM (#1689) (by [@naricc](https://github.com/naricc)) -* [b97bf6](https://github.com/dotnet/BenchmarkDotNet/commit/b97bf603867fb45e0725dfde4b299fb0b9bcb4f9) Fix change runtime target to Core50 (#1690) (by [@JohannesDeml](https://github.com/JohannesDeml)) -* [0321a3](https://github.com/dotnet/BenchmarkDotNet/commit/0321a3176b710110af5be04e54702e19a5bee151) Fixed smart pointer for multiline source code (#1674) (by [@YohDeadfall](https://github.com/YohDeadfall)) -* [7265c1](https://github.com/dotnet/BenchmarkDotNet/commit/7265c14d5902446c23c5d2cd2946257366829400) Resolve assembly location for SingleFile (#1686) (by [@am11](https://github.com/am11)) -* [626dcb](https://github.com/dotnet/BenchmarkDotNet/commit/626dcba3f1cb27955eca478bd5925dc14eb3c140) don't remove OS version number from the platform-specifc TFM (#1691) (by [@adamsitnik](https://github.com/adamsitnik)) -* [95608d](https://github.com/dotnet/BenchmarkDotNet/commit/95608dd960aac36e0070863003a606b1e715e3e2) 0.13.0 release notes (#1697) (by [@adamsitnik](https://github.com/adamsitnik)) -* [4b5a65](https://github.com/dotnet/BenchmarkDotNet/commit/4b5a65d5953d4937cc966a3817dfa2e5a2145398) Remove Allocated column from the "View results" doc page (#1698) (by [@rstm-sf](https://github.com/rstm-sf)) -* [b0683f](https://github.com/dotnet/BenchmarkDotNet/commit/b0683fcbf5978dbf30489718d0ce7d7410ed7ad5) Set ValidateExecutableReferencesMatchSelfContained to false in aotllvm templa... (by [@naricc](https://github.com/naricc)) -* [09afe7](https://github.com/dotnet/BenchmarkDotNet/commit/09afe7a90ee6ea4a903cbe907d843577a7f20028) Windows 21H1 support in OsBrandStringHelper (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [77b58d](https://github.com/dotnet/BenchmarkDotNet/commit/77b58de7b10f070b3e91e1b24dbc2952776acdad) Update old changelogs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [2f4b79](https://github.com/dotnet/BenchmarkDotNet/commit/2f4b794a43d59b322675657413798a81c3213102) Improve AsyncBenchmarksTests.TaskReturningMethodsAreAwaited (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [a79339](https://github.com/dotnet/BenchmarkDotNet/commit/a79339cfd7de6480e05affc5ef0f661423396967) Disable CoreRtToolchain.Core50 in ThreadingDiagnoserTests.GetToolchains on Unix (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [18e292](https://github.com/dotnet/BenchmarkDotNet/commit/18e2926bc47bbafd53bec3869dfcfb7c059b5a1a) Update README (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [09a204](https://github.com/dotnet/BenchmarkDotNet/commit/09a204d5a21be86bf314decc14b31558c168be6b) Update BenchmarkDotNet.sln.DotSettings (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [85db95](https://github.com/dotnet/BenchmarkDotNet/commit/85db957aa772bda9115e4774bd45c8423c3a442a) Bump Cake version: 0.37.0->1.1.0 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [5c74d5](https://github.com/dotnet/BenchmarkDotNet/commit/5c74d54906fa8f09f9bf395b3fa9632ee9e106ca) Bump docfx version: 2.51->2.57.2 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [2a2c0c](https://github.com/dotnet/BenchmarkDotNet/commit/2a2c0c311f209c9930d5e203f1985f32bae3bf64) Update copyright year (2021) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [396060](https://github.com/dotnet/BenchmarkDotNet/commit/39606012edb90eaef48a85c811802b6f1d0cc585) Prepare v0.13.0 changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [6dcf43](https://github.com/dotnet/BenchmarkDotNet/commit/6dcf438fc389d096f2797fc0815da2a85eb3a0d4) Set library version: 0.13.0 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (37) - -* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik)) -* Adeel Mujahid ([@am11](https://github.com/am11)) -* Adrian Stanciu ([@stanciuadrian](https://github.com/stanciuadrian)) -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* Andrii Kurdiumov ([@kant2002](https://github.com/kant2002)) -* Cédric Charière Fiedler ([@cedric-cf](https://github.com/cedric-cf)) -* chan18 ([@chan18](https://github.com/chan18)) -* Chris Lovett ([@lovettchris](https://github.com/lovettchris)) -* damageboy ([@damageboy](https://github.com/damageboy)) -* Dexter ([@skynode](https://github.com/skynode)) -* Florian Eckert ([@fleckert](https://github.com/fleckert)) -* Jeff Handley ([@jeffhandley](https://github.com/jeffhandley)) -* jeremyosterhoudt ([@jeremyosterhoudt](https://github.com/jeremyosterhoudt)) -* Jody Donetti ([@jodydonetti](https://github.com/jodydonetti)) -* Johannes Deml ([@JohannesDeml](https://github.com/JohannesDeml)) -* Jonathan Peppers ([@jonathanpeppers](https://github.com/jonathanpeppers)) -* Jonathon Wei ([@ExceptionCaught](https://github.com/ExceptionCaught)) -* Justas ([@joostas](https://github.com/joostas)) -* kapsiR ([@kapsiR](https://github.com/kapsiR)) -* Kaywan Salimi ([@kevinsalimi](https://github.com/kevinsalimi)) -* Ken Dale ([@kendaleiv](https://github.com/kendaleiv)) -* Konstantin ([@suslovk](https://github.com/suslovk)) -* Łukasz Pyrzyk ([@lukasz-pyrzyk](https://github.com/lukasz-pyrzyk)) -* marcnet80 ([@marcnet80](https://github.com/marcnet80)) -* MarecekF ([@MarecekF](https://github.com/MarecekF)) -* Martin Costello ([@martincostello](https://github.com/martincostello)) -* Mendel Monteiro-Beckerman ([@MendelMonteiro](https://github.com/MendelMonteiro)) -* Michał Gałecki ([@michalgalecki](https://github.com/michalgalecki)) -* Michal Strehovský ([@MichalStrehovsky](https://github.com/MichalStrehovsky)) -* Nathan Ricci ([@naricc](https://github.com/naricc)) -* Petr Onderka ([@svick](https://github.com/svick)) -* Rustam ([@rstm-sf](https://github.com/rstm-sf)) -* Symbai ([@Symbai](https://github.com/Symbai)) -* Tyson Williams ([@TysonMN](https://github.com/TysonMN)) -* Wojciech Nagórski ([@WojciechNagorski](https://github.com/WojciechNagorski)) -* workgroupengineering ([@workgroupengineering](https://github.com/workgroupengineering)) -* Yoh Deadfall ([@YohDeadfall](https://github.com/YohDeadfall)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.13.1.md b/docs/_changelog/details/v0.13.1.md deleted file mode 100644 index 973d33d2c9..0000000000 --- a/docs/_changelog/details/v0.13.1.md +++ /dev/null @@ -1,92 +0,0 @@ -## Milestone details - -In the [v0.13.1](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.13.1) scope, -3 issues were resolved and 23 pull requests were merged. -This release includes 36 commits by 10 contributors. - -## Resolved issues (3) - -* [#1703](https://github.com/dotnet/BenchmarkDotNet/issues/1703) Unable to run benchmark when `ParamsSource` refers to string with surrogate pairs -* [#1713](https://github.com/dotnet/BenchmarkDotNet/issues/1713) System.NotSupportedException: Unknown Acknowledgment: Acknowledgment when running in a github action (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1714](https://github.com/dotnet/BenchmarkDotNet/issues/1714) AwaitingTasksShouldNotInterfereAllocationResults is flaky (assignee: [@adamsitnik](https://github.com/adamsitnik)) - -## Merged pull requests (23) - -* [#1705](https://github.com/dotnet/BenchmarkDotNet/pull/1705) do not split surrogates in `ParameterInstance.ToDisplayText()` (by [@novak-as](https://github.com/novak-as)) -* [#1710](https://github.com/dotnet/BenchmarkDotNet/pull/1710) Fix typo (by [@martincostello](https://github.com/martincostello)) -* [#1712](https://github.com/dotnet/BenchmarkDotNet/pull/1712) add S390x architecture support (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1719](https://github.com/dotnet/BenchmarkDotNet/pull/1719) Added UsingBrowserRuntimeWorkload (by [@naricc](https://github.com/naricc)) -* [#1722](https://github.com/dotnet/BenchmarkDotNet/pull/1722) Add AOT options to wasm runtime (by [@naricc](https://github.com/naricc)) -* [#1725](https://github.com/dotnet/BenchmarkDotNet/pull/1725) Add ValidateExecutableReferencesMatchSelfContained (by [@kant2002](https://github.com/kant2002)) -* [#1729](https://github.com/dotnet/BenchmarkDotNet/pull/1729) Naricc/validate executable references match self contained (by [@naricc](https://github.com/naricc)) -* [#1735](https://github.com/dotnet/BenchmarkDotNet/pull/1735) Use Utf8 not just for writing to standard output, but also for reading from standard input (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1739](https://github.com/dotnet/BenchmarkDotNet/pull/1739) Add support for returning unmanaged types from benchmarks (by [@kant2002](https://github.com/kant2002)) -* [#1742](https://github.com/dotnet/BenchmarkDotNet/pull/1742) Fix WasmAssembliesToBundle item is empty error (by [@radekdoulik](https://github.com/radekdoulik)) -* [#1743](https://github.com/dotnet/BenchmarkDotNet/pull/1743) Add linker description for wasm AOT (by [@radekdoulik](https://github.com/radekdoulik)) -* [#1744](https://github.com/dotnet/BenchmarkDotNet/pull/1744) Make mono/wasm run on Windows (by [@radekdoulik](https://github.com/radekdoulik)) -* [#1745](https://github.com/dotnet/BenchmarkDotNet/pull/1745) Fix #1731. (by [@cgranade](https://github.com/cgranade)) -* [#1746](https://github.com/dotnet/BenchmarkDotNet/pull/1746) Make PrepareForWasmBuild work with wasm workload (by [@radekdoulik](https://github.com/radekdoulik)) -* [#1748](https://github.com/dotnet/BenchmarkDotNet/pull/1748) Fix typo in docs (by [@Jlobblet](https://github.com/Jlobblet)) -* [#1750](https://github.com/dotnet/BenchmarkDotNet/pull/1750) Fix pointer-returning benchmarks support for InProcessToolchain (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1751](https://github.com/dotnet/BenchmarkDotNet/pull/1751) disable TieredJit so it's background allocations don't show up in allocated memory reported by MemoryDiagnoser tests (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1757](https://github.com/dotnet/BenchmarkDotNet/pull/1757) [wasm] Add WasmMainJSPath in interpreter projects (by [@radekdoulik](https://github.com/radekdoulik)) -* [#1762](https://github.com/dotnet/BenchmarkDotNet/pull/1762) MemoryDiagnoser fix (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1763](https://github.com/dotnet/BenchmarkDotNet/pull/1763) Pr wasm set runtimesrcdir for interpreter (by [@naricc](https://github.com/naricc)) -* [#1764](https://github.com/dotnet/BenchmarkDotNet/pull/1764) Allow users to hide Gen X columns (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1765](https://github.com/dotnet/BenchmarkDotNet/pull/1765) Copy GC settings from host process (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1768](https://github.com/dotnet/BenchmarkDotNet/pull/1768) Fix typo in README (by [@eugene-g](https://github.com/eugene-g)) - -## Commits (36) - -* [fe1124](https://github.com/dotnet/BenchmarkDotNet/commit/fe1124661c3a2c45f3234c251872b9982e2a3890) Postrelease update of v0.13.0 changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [0388db](https://github.com/dotnet/BenchmarkDotNet/commit/0388db29ec89d2ac2402007d7b286a9fc0d616e1) Update build-and-pack.cmd (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [5c8469](https://github.com/dotnet/BenchmarkDotNet/commit/5c8469124736ee15cf2f94c8b5b670e95e052ce1) Set release date for v0.13.0 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [601a1a](https://github.com/dotnet/BenchmarkDotNet/commit/601a1aee05972ead40781fc389a7e6870964f821) Fix typo (#1710) (by [@martincostello](https://github.com/martincostello)) -* [5bc925](https://github.com/dotnet/BenchmarkDotNet/commit/5bc92530ecb7a7cab04dd0dd37a42f3e97232ad6) do not split surrogates in `ParameterInstance.ToDisplayText()` (#1705) (by [@novak-as](https://github.com/novak-as)) -* [891e57](https://github.com/dotnet/BenchmarkDotNet/commit/891e5700f72a4615f063e3f87790724a0c1b519f) Add unicode testcases in ParameterInstanceTests.MaxParameterColumnWidthCanBeC... (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [5d2160](https://github.com/dotnet/BenchmarkDotNet/commit/5d2160d5d5deee6a3b70d7cfd99d81354b1f8fba) Update changelog files (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [bbc4b4](https://github.com/dotnet/BenchmarkDotNet/commit/bbc4b45c5d85b4b75cf445c635f030077c0485dd) add S390x architecture support (#1712) (by [@adamsitnik](https://github.com/adamsitnik)) -* [bf54f0](https://github.com/dotnet/BenchmarkDotNet/commit/bf54f01be4569fbac4a8217bb26dd9ff05b5b90c) Fix flakiness in ThreadingDiagnoserTests (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [6ffdb2](https://github.com/dotnet/BenchmarkDotNet/commit/6ffdb24c4e7b6dd3011f3f113e384a587e07b8e1) [WASM] Added UsingBrowserRuntimeWorkload (#1719) (by [@naricc](https://github.com/naricc)) -* [5196e6](https://github.com/dotnet/BenchmarkDotNet/commit/5196e6f5854c45b3e62a8c9a0a68e92491e70d57) Add AOT options to wasm runtime (#1722) (by [@naricc](https://github.com/naricc)) -* [d97285](https://github.com/dotnet/BenchmarkDotNet/commit/d97285236327de3cdc74f87fa6eb896b4a643630) Add ValidateExecutableReferencesMatchSelfContained (#1725) (by [@kant2002](https://github.com/kant2002)) -* [cb23e1](https://github.com/dotnet/BenchmarkDotNet/commit/cb23e125ce436171be7fc91850dcec166c2b9b67) Delete .BenchmarkDotNet.Samples.csproj.swp (#1726) (by [@naricc](https://github.com/naricc)) -* [75f632](https://github.com/dotnet/BenchmarkDotNet/commit/75f63272def862bb223a3e3e040760a71d8994d1) Set ValidateExecutableReferencesMatchSelfContained for Wasm (#1729) (by [@naricc](https://github.com/naricc)) -* [9e7e50](https://github.com/dotnet/BenchmarkDotNet/commit/9e7e50728154e24c79fe392074f127c31611eae1) Added false to Wasm cs proj. (#1734) (by [@naricc](https://github.com/naricc)) -* [e7ff4c](https://github.com/dotnet/BenchmarkDotNet/commit/e7ff4cefcc8d429205a21a76045e82688ee063c5) Use Utf8 not just for witing to standard output, but also for reading from st... (by [@adamsitnik](https://github.com/adamsitnik)) -* [081563](https://github.com/dotnet/BenchmarkDotNet/commit/081563ad4fbc87409289dd1d039f64dbca49c009) Added UsingBrowserRuntimeWorkload false. (#1741) (by [@naricc](https://github.com/naricc)) -* [2fefdb](https://github.com/dotnet/BenchmarkDotNet/commit/2fefdb335c6beb20fdc3463a34fe83d52ac5d619) Fix WasmAssembliesToBundle item is empty error (#1742) (by [@radekdoulik](https://github.com/radekdoulik)) -* [6b475f](https://github.com/dotnet/BenchmarkDotNet/commit/6b475f651df7f282fc6ec103fcd1355cc8789c4c) Add linker description for wasm AOT (#1743) (by [@radekdoulik](https://github.com/radekdoulik)) -* [acb6f2](https://github.com/dotnet/BenchmarkDotNet/commit/acb6f20d43e9ab3b3c91cb360b8202fd199e4193) Make mono/wasm run on Windows (#1744) (by [@radekdoulik](https://github.com/radekdoulik)) -* [4b3d19](https://github.com/dotnet/BenchmarkDotNet/commit/4b3d197a49fa2129b14c944b6ee52e6d931f79f5) Make PrepareForWasmBuild work with wasm workload (#1746) (by [@radekdoulik](https://github.com/radekdoulik)) -* [141ef7](https://github.com/dotnet/BenchmarkDotNet/commit/141ef7421496b68ded18710869509ca9c76414ec) handle processes that don't exit on time more gracefully, fixes #1731. (#1745) (by [@cgranade](https://github.com/cgranade)) -* [c3fb7b](https://github.com/dotnet/BenchmarkDotNet/commit/c3fb7b9724a62048d27ef5bcaec616117d68b934) Add support for returning unmanaged types from benchmarks (#1739) (by [@kant2002](https://github.com/kant2002)) -* [6f453b](https://github.com/dotnet/BenchmarkDotNet/commit/6f453baafa4ef800e0377ebc463ffa82b2f76368) [wasm] Allow unsafe code (#1752) (by [@radekdoulik](https://github.com/radekdoulik)) -* [c2cee2](https://github.com/dotnet/BenchmarkDotNet/commit/c2cee254b3a9aec3a6b73bc7fd21b7f2f70ca2ec) Fix the CI (by [@radekdoulik](https://github.com/radekdoulik)) -* [19cbef](https://github.com/dotnet/BenchmarkDotNet/commit/19cbef28cba94cd4a7da6266b839d4d3fe2f14db) Fix typo in docs (#1748) (by John Blundell) -* [1a94d4](https://github.com/dotnet/BenchmarkDotNet/commit/1a94d4dfa65f975f49d1bc92ced5c7a45bb994d4) [wasm] Add WasmMainJSPath in interpreter projects (#1757) (by [@radekdoulik](https://github.com/radekdoulik)) -* [37ec19](https://github.com/dotnet/BenchmarkDotNet/commit/37ec19f6dba9ccee6a8f776aa3020ca189944f0c) Get rid of warning (#1760) (by [@radekdoulik](https://github.com/radekdoulik)) -* [4bd433](https://github.com/dotnet/BenchmarkDotNet/commit/4bd433d85fff4fb6ba8c4f8df3e685ad669e2519) use benchmark process runtime, not host process runtime when deciding whether... (by [@adamsitnik](https://github.com/adamsitnik)) -* [8cb701](https://github.com/dotnet/BenchmarkDotNet/commit/8cb701cc79288b34de438435736acf8e74dc9735) Update OsBrandStringHelper (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [8f81b5](https://github.com/dotnet/BenchmarkDotNet/commit/8f81b5b1be90e2b5425f9571b3c3640acdfaac21) Copy GC settings from host process (#1765) (by [@adamsitnik](https://github.com/adamsitnik)) -* [f37266](https://github.com/dotnet/BenchmarkDotNet/commit/f372668e028161d0d1bf675811a6168967175034) Allow users to hide Gen X columns (#1764) (by [@adamsitnik](https://github.com/adamsitnik)) -* [f9a4c1](https://github.com/dotnet/BenchmarkDotNet/commit/f9a4c194b77aa7133168f240b404da58c47d5255) [WASM] set runtimesrcdir for interpreter (#1763) (by [@naricc](https://github.com/naricc)) -* [9e674d](https://github.com/dotnet/BenchmarkDotNet/commit/9e674d49feeb4647c8acc81334188e7c4587a5e9) Fix typo in README (by [@eugene-g](https://github.com/eugene-g)) -* [708be4](https://github.com/dotnet/BenchmarkDotNet/commit/708be495530a968ed767a20f4623f54231d1ab9b) Prepare v0.13.1 changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [a93681](https://github.com/dotnet/BenchmarkDotNet/commit/a936815f2a58d9b728cfc5fe620bba17481c180c) Set library version: 0.13.1 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (10) - -* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik)) -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* Andrii Kurdiumov ([@kant2002](https://github.com/kant2002)) -* Cassandra Granade ([@cgranade](https://github.com/cgranade)) -* Evgenii Grebeniuk ([@eugene-g](https://github.com/eugene-g)) -* John Blundell -* Martin Costello ([@martincostello](https://github.com/martincostello)) -* Nathan Ricci ([@naricc](https://github.com/naricc)) -* Oleksandr Novak ([@novak-as](https://github.com/novak-as)) -* Radek Doulik ([@radekdoulik](https://github.com/radekdoulik)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.13.2.md b/docs/_changelog/details/v0.13.2.md deleted file mode 100644 index 02a2882782..0000000000 --- a/docs/_changelog/details/v0.13.2.md +++ /dev/null @@ -1,375 +0,0 @@ -## Milestone details - -In the [v0.13.2](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.13.2) scope, -50 issues were resolved and 124 pull requests were merged. -This release includes 147 commits by 34 contributors. - -## Resolved issues (50) - -* [#299](https://github.com/dotnet/BenchmarkDotNet/issues/299) Add API to remove columns for baseline comparison (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#384](https://github.com/dotnet/BenchmarkDotNet/issues/384) Print Vector.Count as part of machine info (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#722](https://github.com/dotnet/BenchmarkDotNet/issues/722) Add scaled column for Allocated Memory -* [#837](https://github.com/dotnet/BenchmarkDotNet/issues/837) Problems with default UnrollFactor in V0.11.0 (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1177](https://github.com/dotnet/BenchmarkDotNet/issues/1177) Public types missing from reference assemblies don't work with ParamsSource -* [#1506](https://github.com/dotnet/BenchmarkDotNet/issues/1506) BenchmarkDotNet does not force to High Performance Mode during running (assignee: [@YegorStepanov](https://github.com/YegorStepanov)) -* [#1603](https://github.com/dotnet/BenchmarkDotNet/issues/1603) Don't display Job and Toolchain column when running benchmarks for multiple runtimes -* [#1669](https://github.com/dotnet/BenchmarkDotNet/issues/1669) --buildTimeout does not seem to work (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1680](https://github.com/dotnet/BenchmarkDotNet/issues/1680) Cannot override RD.xml for NativeAOT -* [#1711](https://github.com/dotnet/BenchmarkDotNet/issues/1711) Add support for IBM Z architecture (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1727](https://github.com/dotnet/BenchmarkDotNet/issues/1727) Unhelpful rounding in MemoryDiagnoser -* [#1753](https://github.com/dotnet/BenchmarkDotNet/issues/1753) "call: command not found" in .sh build script (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#1755](https://github.com/dotnet/BenchmarkDotNet/issues/1755) EventPipeProfiler: File names are very verbose -* [#1756](https://github.com/dotnet/BenchmarkDotNet/issues/1756) EventPipeProfile: speedscope.app cannot parse result file (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1774](https://github.com/dotnet/BenchmarkDotNet/issues/1774) Ability to compare --corerun with --runtimes (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1775](https://github.com/dotnet/BenchmarkDotNet/issues/1775) Please add an easy way to remove columns -* [#1789](https://github.com/dotnet/BenchmarkDotNet/issues/1789) Small bug in ImmutableConfigbuilder (assignee: [@mawosoft](https://github.com/mawosoft)) -* [#1794](https://github.com/dotnet/BenchmarkDotNet/issues/1794) typo in error message -* [#1800](https://github.com/dotnet/BenchmarkDotNet/issues/1800) Small bug in SummaryStyle (assignee: [@mawosoft](https://github.com/mawosoft)) -* [#1803](https://github.com/dotnet/BenchmarkDotNet/issues/1803) Benchmark exception stops entire suite run (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1809](https://github.com/dotnet/BenchmarkDotNet/issues/1809) Exception when using ParamsSource with (null) objects -* [#1812](https://github.com/dotnet/BenchmarkDotNet/issues/1812) Invalid codegen for Enumerable.Empty returned from ParamsSource -* [#1819](https://github.com/dotnet/BenchmarkDotNet/issues/1819) How to change exporter output path? -* [#1836](https://github.com/dotnet/BenchmarkDotNet/issues/1836) [Bug] `System.InvalidOperationException: There is an error in XML document (0, 0).` -* [#1857](https://github.com/dotnet/BenchmarkDotNet/issues/1857) Github actions ubuntu-latest "Unable to load shared library 'advapi32.dll' or one of its dependencies" when profiling dotnet 5 -* [#1864](https://github.com/dotnet/BenchmarkDotNet/issues/1864) Is there a way to join summaries as if the benchmarks were run separately? (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#1871](https://github.com/dotnet/BenchmarkDotNet/issues/1871) Detect ReSharper's Dynamic Program Analysis (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1872](https://github.com/dotnet/BenchmarkDotNet/issues/1872) BenchmarkDontNet should make allowance for projects where Preview Features are enabled -* [#1887](https://github.com/dotnet/BenchmarkDotNet/issues/1887) MonoAotLLVM runtime is not actually AOTing things (assignee: [@naricc](https://github.com/naricc)) -* [#1900](https://github.com/dotnet/BenchmarkDotNet/issues/1900) Failed to benchmark .NET 7 in release mode -* [#1908](https://github.com/dotnet/BenchmarkDotNet/issues/1908) BenchmarkRunner.RunSource and BenchmarkRunner.RunUrl doesn't work -* [#1929](https://github.com/dotnet/BenchmarkDotNet/issues/1929) Incorrect default InvocationCount in the summary table (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#1934](https://github.com/dotnet/BenchmarkDotNet/issues/1934) Ensure WorkloadActionUnroll and similar are optimized if possible -* [#1937](https://github.com/dotnet/BenchmarkDotNet/issues/1937) PR builds should not be published to BDN nightly feed (assignee: [@mawosoft](https://github.com/mawosoft)) -* [#1943](https://github.com/dotnet/BenchmarkDotNet/issues/1943) GitHub Actions Windows CI leg failing due to lack of native tools (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1948](https://github.com/dotnet/BenchmarkDotNet/issues/1948) questions to help with future PRs -* [#1957](https://github.com/dotnet/BenchmarkDotNet/issues/1957) Broken pipe (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1977](https://github.com/dotnet/BenchmarkDotNet/issues/1977) More Data for JSON and XML Export -* [#1989](https://github.com/dotnet/BenchmarkDotNet/issues/1989) Way to summarize all the params results (assignee: [@YegorStepanov](https://github.com/YegorStepanov)) -* [#1992](https://github.com/dotnet/BenchmarkDotNet/issues/1992) API Docs on website empty (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#2000](https://github.com/dotnet/BenchmarkDotNet/issues/2000) DisassemblyDiagnoser broken on Linux (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#2009](https://github.com/dotnet/BenchmarkDotNet/issues/2009) Cleanup the dependencies (assignee: [@martincostello](https://github.com/martincostello)) -* [#2011](https://github.com/dotnet/BenchmarkDotNet/issues/2011) Release-only build error when using ParamsSource with a LINQ method: Cannot implicitly convert type 'object' (assignee: [@mawosoft](https://github.com/mawosoft)) -* [#2016](https://github.com/dotnet/BenchmarkDotNet/issues/2016) Support for .NET 7? -* [#2028](https://github.com/dotnet/BenchmarkDotNet/issues/2028) Trying to build BDN on a windows arm64 host (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#2039](https://github.com/dotnet/BenchmarkDotNet/issues/2039) Support .NET Framework 4.8.1 (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#2055](https://github.com/dotnet/BenchmarkDotNet/issues/2055) Comment after breaks generated project -* [#2059](https://github.com/dotnet/BenchmarkDotNet/issues/2059) BenchmarkDotNet misreports .Net Framework as 4.8.1 (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#2063](https://github.com/dotnet/BenchmarkDotNet/issues/2063) BenchmarkDotNet nightly fails to disassemble .Net 7.0 properly -* [#2074](https://github.com/dotnet/BenchmarkDotNet/issues/2074) DisassemblyDiagnoser producing invalid disassembly (assignee: [@adamsitnik](https://github.com/adamsitnik)) - -## Merged pull requests (124) - -* [#1621](https://github.com/dotnet/BenchmarkDotNet/pull/1621) Hide columns for multiple runtime (by [@marcnet80](https://github.com/marcnet80)) -* [#1769](https://github.com/dotnet/BenchmarkDotNet/pull/1769) Make wasm-interpreter work like wasm-aot (by [@naricc](https://github.com/naricc)) -* [#1776](https://github.com/dotnet/BenchmarkDotNet/pull/1776) Clarify effects of IterationSetup on UnrollFactor and InvocationCount (by [@SnakyBeaky](https://github.com/SnakyBeaky)) -* [#1790](https://github.com/dotnet/BenchmarkDotNet/pull/1790) Bugfix in ImmutableConfigBuilder. Fixes #1789 (by [@mawosoft](https://github.com/mawosoft)) -* [#1796](https://github.com/dotnet/BenchmarkDotNet/pull/1796) fixes(configuration): Not unique exporter for exporter type (by [@workgroupengineering](https://github.com/workgroupengineering)) -* [#1797](https://github.com/dotnet/BenchmarkDotNet/pull/1797) Update DotNetCliCommandExecutor.cs (by [@Distinctlyminty](https://github.com/Distinctlyminty)) -* [#1801](https://github.com/dotnet/BenchmarkDotNet/pull/1801) Include RatioStyle in SummaryStyle.Equals()/GetHashCode(). Fixes #1800. (by [@mawosoft](https://github.com/mawosoft)) -* [#1805](https://github.com/dotnet/BenchmarkDotNet/pull/1805) Update PackageReference for System.Management to latest (5.0.0). (by [@mawosoft](https://github.com/mawosoft)) -* [#1810](https://github.com/dotnet/BenchmarkDotNet/pull/1810) Fix null reference exceptions in SmartParameter. Fixes #1809 (by [@mawosoft](https://github.com/mawosoft)) -* [#1811](https://github.com/dotnet/BenchmarkDotNet/pull/1811) [WASM][AOT] Do not include KernelTraceControl in WasmAssembliesToBundle (by [@naricc](https://github.com/naricc)) -* [#1816](https://github.com/dotnet/BenchmarkDotNet/pull/1816) Add net70 runtime support (by [@am11](https://github.com/am11)) -* [#1823](https://github.com/dotnet/BenchmarkDotNet/pull/1823) Replace colon if present in folder name (by [@ronbrogan](https://github.com/ronbrogan)) -* [#1828](https://github.com/dotnet/BenchmarkDotNet/pull/1828) Ensure proper SummaryStyle handling (by [@mawosoft](https://github.com/mawosoft)) -* [#1835](https://github.com/dotnet/BenchmarkDotNet/pull/1835) Enable mono llvmaot tool chain to work with net7 (by [@naricc](https://github.com/naricc)) -* [#1841](https://github.com/dotnet/BenchmarkDotNet/pull/1841) Fix argument escaping (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1842](https://github.com/dotnet/BenchmarkDotNet/pull/1842) Preserve EnablePreviewFeatures csproj setting (by [@kkokosa](https://github.com/kkokosa)) -* [#1846](https://github.com/dotnet/BenchmarkDotNet/pull/1846) [wasm] fix perf after test renames (by [@pavelsavara](https://github.com/pavelsavara)) -* [#1847](https://github.com/dotnet/BenchmarkDotNet/pull/1847) Use non-deprecated macOS pool on Azure Pipelines (by [@akoeplinger](https://github.com/akoeplinger)) -* [#1848](https://github.com/dotnet/BenchmarkDotNet/pull/1848) align both Executors to use the same timeout (2s) (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1850](https://github.com/dotnet/BenchmarkDotNet/pull/1850) Added exporter custom path to docs #1819 (by [@asaf92](https://github.com/asaf92)) -* [#1854](https://github.com/dotnet/BenchmarkDotNet/pull/1854) Fix size specifier (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [#1855](https://github.com/dotnet/BenchmarkDotNet/pull/1855) Change DisassemblyDiagnoser to use byte unit always (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [#1858](https://github.com/dotnet/BenchmarkDotNet/pull/1858) Bugfix for merged PR #1855 (by [@mawosoft](https://github.com/mawosoft)) -* [#1859](https://github.com/dotnet/BenchmarkDotNet/pull/1859) Add Allocation Ratio column (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [#1861](https://github.com/dotnet/BenchmarkDotNet/pull/1861) JitDiagnosers should print an error when run on non-Windows OS (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1865](https://github.com/dotnet/BenchmarkDotNet/pull/1865) Bump Cake to 2.0.0, adopt frosting project style (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#1866](https://github.com/dotnet/BenchmarkDotNet/pull/1866) Respect LogicalGroup order in DefaultOrderer (see #1864) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#1870](https://github.com/dotnet/BenchmarkDotNet/pull/1870) UserInteraction: don't loop when reaching the input end. (by [@tmds](https://github.com/tmds)) -* [#1873](https://github.com/dotnet/BenchmarkDotNet/pull/1873) add EnablePreviewFeatures to the list of settings copied by BDN to the auto-generated project (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1874](https://github.com/dotnet/BenchmarkDotNet/pull/1874) disable ReSharper's Dynamic Program Analysis by default (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1885](https://github.com/dotnet/BenchmarkDotNet/pull/1885) Comeback of power management (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [#1888](https://github.com/dotnet/BenchmarkDotNet/pull/1888) Added IntermediateOutputPath option to MonoAotCompiler task parameters (by [@naricc](https://github.com/naricc)) -* [#1890](https://github.com/dotnet/BenchmarkDotNet/pull/1890) Hiding columns (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [#1896](https://github.com/dotnet/BenchmarkDotNet/pull/1896) Fix warnings (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1897](https://github.com/dotnet/BenchmarkDotNet/pull/1897) set TreatWarningsAsErrors to true (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1902](https://github.com/dotnet/BenchmarkDotNet/pull/1902) Handled exceptions from exporters in CompositeExporter (by [@epeshk](https://github.com/epeshk)) -* [#1903](https://github.com/dotnet/BenchmarkDotNet/pull/1903) don't use diagnosers when running the benchmark has failed (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1906](https://github.com/dotnet/BenchmarkDotNet/pull/1906) Improve BuildTimeout (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1907](https://github.com/dotnet/BenchmarkDotNet/pull/1907) ensure the default order of benchmarks is the same as declared in source code (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1909](https://github.com/dotnet/BenchmarkDotNet/pull/1909) Log progress and estimated finish time (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1910](https://github.com/dotnet/BenchmarkDotNet/pull/1910) Make FromUrl and FromSource more friendly (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [#1912](https://github.com/dotnet/BenchmarkDotNet/pull/1912) Notified users about private methods with Setup/Cleanup attributes (by [@epeshk](https://github.com/epeshk)) -* [#1915](https://github.com/dotnet/BenchmarkDotNet/pull/1915) JsonExporter: make Json export more extensible. (by [@ptr1120](https://github.com/ptr1120)) -* [#1916](https://github.com/dotnet/BenchmarkDotNet/pull/1916) [WASM] Fix rename of main.js to test-main.js (by [@naricc](https://github.com/naricc)) -* [#1917](https://github.com/dotnet/BenchmarkDotNet/pull/1917) Don't run Analyzers for the generated project + Roslyn workaround (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1919](https://github.com/dotnet/BenchmarkDotNet/pull/1919) Restore BytesAllocatedPerOperation for JSON and XML (by [@martincostello](https://github.com/martincostello)) -* [#1921](https://github.com/dotnet/BenchmarkDotNet/pull/1921) Improve failure handling and finish time estimation (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1926](https://github.com/dotnet/BenchmarkDotNet/pull/1926) Fix typo in WasmCsProj.txt (by [@lewing](https://github.com/lewing)) -* [#1930](https://github.com/dotnet/BenchmarkDotNet/pull/1930) Display correct default InvocationCount in SummaryTable, fixes #1929 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#1932](https://github.com/dotnet/BenchmarkDotNet/pull/1932) [wasm] Set the right runtime moniker (by [@radekdoulik](https://github.com/radekdoulik)) -* [#1935](https://github.com/dotnet/BenchmarkDotNet/pull/1935) Fix optimization of action methods for coreclr (by [@AndyAyersMS](https://github.com/AndyAyersMS)) -* [#1936](https://github.com/dotnet/BenchmarkDotNet/pull/1936) [wasm] Improve the autogenerated project (by [@radical](https://github.com/radical)) -* [#1938](https://github.com/dotnet/BenchmarkDotNet/pull/1938) [wasm] Add a `--wasmDataDir` parameter (by [@radical](https://github.com/radical)) -* [#1939](https://github.com/dotnet/BenchmarkDotNet/pull/1939) Update contributing docs (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1940](https://github.com/dotnet/BenchmarkDotNet/pull/1940) Don't use blocking acknowledgments when there is no need to (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1945](https://github.com/dotnet/BenchmarkDotNet/pull/1945) AsyncProcessOutputReader: Use ConcurrentQueue instead of ConcurrentStack (by [@radical](https://github.com/radical)) -* [#1946](https://github.com/dotnet/BenchmarkDotNet/pull/1946) improve error message for users who pass path to Core_Root instead of CoreRun (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1947](https://github.com/dotnet/BenchmarkDotNet/pull/1947) Executor: Don't use Process.ExitCode, unless the process has exited (by [@radical](https://github.com/radical)) -* [#1949](https://github.com/dotnet/BenchmarkDotNet/pull/1949) Revise heuristic for initial jitting. (by [@AndyAyersMS](https://github.com/AndyAyersMS)) -* [#1950](https://github.com/dotnet/BenchmarkDotNet/pull/1950) DotNetCli*: Allow logging command output (by [@radical](https://github.com/radical)) -* [#1953](https://github.com/dotnet/BenchmarkDotNet/pull/1953) add possibility to enable build output logging via command line args (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1955](https://github.com/dotnet/BenchmarkDotNet/pull/1955) Cleaning up argument spacing in CLI calls. Add output path for publish. CoreRT (by [@Beau-Gosse-dev](https://github.com/Beau-Gosse-dev)) -* [#1958](https://github.com/dotnet/BenchmarkDotNet/pull/1958) fix broken pipe issue (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1959](https://github.com/dotnet/BenchmarkDotNet/pull/1959) add `--justBuild` for users who want to reuse code produced by BDN without running the benchmarks (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1960](https://github.com/dotnet/BenchmarkDotNet/pull/1960) Improve support for NativeAOT (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1961](https://github.com/dotnet/BenchmarkDotNet/pull/1961) disable AwaitingTasksShouldNotInterfereAllocationResults test (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1965](https://github.com/dotnet/BenchmarkDotNet/pull/1965) Rename CoreRT to NativeAOT (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1966](https://github.com/dotnet/BenchmarkDotNet/pull/1966) Actually AOT things in AOT mode; prevent JIT fall back (by [@naricc](https://github.com/naricc)) -* [#1969](https://github.com/dotnet/BenchmarkDotNet/pull/1969) Fixed FreeBSD shared library extension in MonoAOTLLVM tool chain. (by [@naricc](https://github.com/naricc)) -* [#1970](https://github.com/dotnet/BenchmarkDotNet/pull/1970) Add new `--generateBinLog` to generate msbuild binlogs, with names (by [@radical](https://github.com/radical)) -* [#1972](https://github.com/dotnet/BenchmarkDotNet/pull/1972) [NativeAOT] Set TrimmerDefaultAction to link (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1973](https://github.com/dotnet/BenchmarkDotNet/pull/1973) don't place DynamicallyAccessedMembers on an array (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1974](https://github.com/dotnet/BenchmarkDotNet/pull/1974) Update ArtifactFileNameHelper error message (by [@eiriktsarpalis](https://github.com/eiriktsarpalis)) -* [#1975](https://github.com/dotnet/BenchmarkDotNet/pull/1975) Addressing code review suggestions (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1976](https://github.com/dotnet/BenchmarkDotNet/pull/1976) Add support for Rd.xml file around project file (by [@kant2002](https://github.com/kant2002)) -* [#1978](https://github.com/dotnet/BenchmarkDotNet/pull/1978) Migrate from .NET 5 to .NET 6.0 (by [@kant2002](https://github.com/kant2002)) -* [#1979](https://github.com/dotnet/BenchmarkDotNet/pull/1979) Remove CPP codegen for NativeAOT (by [@kant2002](https://github.com/kant2002)) -* [#1981](https://github.com/dotnet/BenchmarkDotNet/pull/1981) Fix for issue NETSDK1150 (by [@OlegOLK](https://github.com/OlegOLK)) -* [#1982](https://github.com/dotnet/BenchmarkDotNet/pull/1982) DotNetCliCommand: Add new `RetryFailedBuildWithNoDeps` property (by [@radical](https://github.com/radical)) -* [#1984](https://github.com/dotnet/BenchmarkDotNet/pull/1984) Reduce generated code size (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1985](https://github.com/dotnet/BenchmarkDotNet/pull/1985) don't emit debug symbols on platforms where it does not work well (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1986](https://github.com/dotnet/BenchmarkDotNet/pull/1986) the CI must run net6.0, not net5.0 tests (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1987](https://github.com/dotnet/BenchmarkDotNet/pull/1987) Fix AppVeyor build (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1988](https://github.com/dotnet/BenchmarkDotNet/pull/1988) re-enable NativeAOT tests on GitHub Actions Windows (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1990](https://github.com/dotnet/BenchmarkDotNet/pull/1990) [Mono] Change AOT mode to Normal AOT with LLVM JIT fall back (by [@fanyang-mono](https://github.com/fanyang-mono)) -* [#1994](https://github.com/dotnet/BenchmarkDotNet/pull/1994) NativeAOT: IlcOptimizationPreference & IlcInstructionSet (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1996](https://github.com/dotnet/BenchmarkDotNet/pull/1996) use AnyCPU for S390x (by [@adamsitnik](https://github.com/adamsitnik)) -* [#1997](https://github.com/dotnet/BenchmarkDotNet/pull/1997) Update NativeAOT docs, fix the support for local NativeAOT builds (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2002](https://github.com/dotnet/BenchmarkDotNet/pull/2002) when user specifies both --runtimes and --corerun, multiple independent jobs should be created (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2006](https://github.com/dotnet/BenchmarkDotNet/pull/2006) when Host process is not .NET Core, CoreRunToolchain should use latest available TFM (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2008](https://github.com/dotnet/BenchmarkDotNet/pull/2008) Use PackageIcon property (by [@martincostello](https://github.com/martincostello)) -* [#2012](https://github.com/dotnet/BenchmarkDotNet/pull/2012) Cleanup dependencies and add net6.0 TFM (by [@martincostello](https://github.com/martincostello)) -* [#2019](https://github.com/dotnet/BenchmarkDotNet/pull/2019) Update Iced to its latest version. (by [@teo-tsirpanis](https://github.com/teo-tsirpanis)) -* [#2020](https://github.com/dotnet/BenchmarkDotNet/pull/2020) Opt out of metadata trimming (by [@MichalStrehovsky](https://github.com/MichalStrehovsky)) -* [#2023](https://github.com/dotnet/BenchmarkDotNet/pull/2023) don't run NativeAOT tests on AppVeyor Windows (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2029](https://github.com/dotnet/BenchmarkDotNet/pull/2029) don't emit debug symbols for samples and test projects (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2030](https://github.com/dotnet/BenchmarkDotNet/pull/2030) update TraceEvent to 3.0.1 to have a proper ARM64 support for Diagnostics package (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2033](https://github.com/dotnet/BenchmarkDotNet/pull/2033) Bugfix MetricColumn: Respect unit when formatting values. (by [@mawosoft](https://github.com/mawosoft)) -* [#2035](https://github.com/dotnet/BenchmarkDotNet/pull/2035) net461->net462 in Samples, Diagnosers, Tests (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#2040](https://github.com/dotnet/BenchmarkDotNet/pull/2040) Port the .NET (Core) disassembler to ClrMd v2 (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2041](https://github.com/dotnet/BenchmarkDotNet/pull/2041) Bugfix SmartParameter source code generation (by [@mawosoft](https://github.com/mawosoft)) -* [#2042](https://github.com/dotnet/BenchmarkDotNet/pull/2042) Fix WmicCpuInfoProvider documentation (by [@msitt](https://github.com/msitt)) -* [#2043](https://github.com/dotnet/BenchmarkDotNet/pull/2043) restore Microsoft.DotNet.PlatformAbstraction dependency (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2044](https://github.com/dotnet/BenchmarkDotNet/pull/2044) add .NET 4.8.1 support (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2045](https://github.com/dotnet/BenchmarkDotNet/pull/2045) adopt to recent NativeAOT changes (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2046](https://github.com/dotnet/BenchmarkDotNet/pull/2046) Make a bit of BenchmarkDotNet trimmable (by [@MichalStrehovsky](https://github.com/MichalStrehovsky)) -* [#2047](https://github.com/dotnet/BenchmarkDotNet/pull/2047) Restrict what's published to AppVeyor NuGet feed (BDN nightly) (by [@mawosoft](https://github.com/mawosoft)) -* [#2050](https://github.com/dotnet/BenchmarkDotNet/pull/2050) Fix DocFx configuration and build (by [@mawosoft](https://github.com/mawosoft)) -* [#2051](https://github.com/dotnet/BenchmarkDotNet/pull/2051) extend printed Runtime Info with simple Hardware Intrinsics information (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2052](https://github.com/dotnet/BenchmarkDotNet/pull/2052) Address code review feedback (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2056](https://github.com/dotnet/BenchmarkDotNet/pull/2056) Bugfix copied project settings (by [@mawosoft](https://github.com/mawosoft)) -* [#2065](https://github.com/dotnet/BenchmarkDotNet/pull/2065) Add serialize to NativeAOT (by [@MichalPetryka](https://github.com/MichalPetryka)) -* [#2066](https://github.com/dotnet/BenchmarkDotNet/pull/2066) Print Vector width in summary on older runtimes (by [@MichalPetryka](https://github.com/MichalPetryka)) -* [#2067](https://github.com/dotnet/BenchmarkDotNet/pull/2067) fix .NET 4.8.1 detection (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2068](https://github.com/dotnet/BenchmarkDotNet/pull/2068) print error when users try DisassemblyDiagnoser with NativeAOT (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2071](https://github.com/dotnet/BenchmarkDotNet/pull/2071) use ClrMd v2 disassembler on Windows whenever possible (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2072](https://github.com/dotnet/BenchmarkDotNet/pull/2072) Add glob filters support to disassembler to allow disassembling specific methods (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2073](https://github.com/dotnet/BenchmarkDotNet/pull/2073) add two fallbacks to CoreRun copying (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2075](https://github.com/dotnet/BenchmarkDotNet/pull/2075) Fix disassembler (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2078](https://github.com/dotnet/BenchmarkDotNet/pull/2078) More disassembler improvements (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2079](https://github.com/dotnet/BenchmarkDotNet/pull/2079) fix the CI (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2081](https://github.com/dotnet/BenchmarkDotNet/pull/2081) JsonExporter: make Json export more extensible. (by [@ptr1120](https://github.com/ptr1120)) -* [#2082](https://github.com/dotnet/BenchmarkDotNet/pull/2082) remove last warning (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2084](https://github.com/dotnet/BenchmarkDotNet/pull/2084) Release notes for 0.13.2 (by [@adamsitnik](https://github.com/adamsitnik)) - -## Commits (147) - -* [4de165](https://github.com/dotnet/BenchmarkDotNet/commit/4de165cdc172849ad50443c2cd091ccc9b2c1443) Postrelease v0.13.1 update (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [74e3c4](https://github.com/dotnet/BenchmarkDotNet/commit/74e3c4f0e03c5db5d32d051b7abcf186d266ea60) Make wasm-interpreter work like wasm-aot (#1769) (by [@naricc](https://github.com/naricc)) -* [1a8296](https://github.com/dotnet/BenchmarkDotNet/commit/1a8296f86ead19359c842a36ebd22b223695afa2) Better snap support, fix #1753 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [aa9167](https://github.com/dotnet/BenchmarkDotNet/commit/aa9167a081e3da49a39afe71ee4d8bdb3650a54c) Clarify effects of IterationSetup on UnrollFactor and InvocationCount (#1776) (by [@SnakyBeaky](https://github.com/SnakyBeaky)) -* [937865](https://github.com/dotnet/BenchmarkDotNet/commit/93786511bf9b2a0e2bdae45c7248ff963a750992) Set allow unsafe blocks to true. (#1779) (by [@naricc](https://github.com/naricc)) -* [e08b79](https://github.com/dotnet/BenchmarkDotNet/commit/e08b7964a25ef26807cef6f3f137ce46ed2b7947) Bugfix in ImmutableConfigBuilder. Fixes #1789 (#1790) (by [@mawosoft](https://github.com/mawosoft)) -* [156fd6](https://github.com/dotnet/BenchmarkDotNet/commit/156fd6928c166d2d67fe2262c7304da45503c9db) Fix an logger message typo in the DotNetCliCommandExecutor Execute method, fi... (by [@Distinctlyminty](https://github.com/Distinctlyminty)) -* [d312ed](https://github.com/dotnet/BenchmarkDotNet/commit/d312edcbf96ad37586119520ad6b10cbab9a95b2) Include RatioStyle in SummaryStyle.Equals()/GetHashCode(). Fixes #1800. (#1801) (by [@mawosoft](https://github.com/mawosoft)) -* [38b99b](https://github.com/dotnet/BenchmarkDotNet/commit/38b99b9a038fb065312978995f2cb9223ad88417) Update PackageReference for System.Management to latest (5.0.0). (#1805) (by [@mawosoft](https://github.com/mawosoft)) -* [e9a569](https://github.com/dotnet/BenchmarkDotNet/commit/e9a56954484e850ce32e05a46c4c03d8985cea2e) [WASM][AOT] Do not include KernelTraceControl in WasmAssembliesToBundle (#1811) (by [@naricc](https://github.com/naricc)) -* [80044a](https://github.com/dotnet/BenchmarkDotNet/commit/80044a2012144c3f708e42f198e8074a9dc85be1) Fix null reference exceptions in SmartParameter. Fixes #1809 (#1810) (by [@mawosoft](https://github.com/mawosoft)) -* [273113](https://github.com/dotnet/BenchmarkDotNet/commit/273113712957ba7d8d417cfbc41052193ff2f255) Add tests for the case when ParamsSource contains null (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [a5176a](https://github.com/dotnet/BenchmarkDotNet/commit/a5176a7ca643c0fa011e5e3a96233c226a7fa36b) Add net7.0 runtime support (#1816) (by [@am11](https://github.com/am11)) -* [7e757d](https://github.com/dotnet/BenchmarkDotNet/commit/7e757d59be1cc526048199554f004473c139a27f) Replace colon if present in folder name (#1823) (by [@ronbrogan](https://github.com/ronbrogan)) -* [24e041](https://github.com/dotnet/BenchmarkDotNet/commit/24e041cb22f8f5914be32e588b0b890fe093a59c) Use non-deprecated Azure Pipelines Ubuntu pool (#1829) (by [@akoeplinger](https://github.com/akoeplinger)) -* [beb543](https://github.com/dotnet/BenchmarkDotNet/commit/beb543a6714623a6644adb3fbfc492820b888a14) Enable mono llvmaot tool chain to work with net7 (#1835) (by [@naricc](https://github.com/naricc)) -* [8a88b4](https://github.com/dotnet/BenchmarkDotNet/commit/8a88b4cd0e874e18f2562912916ffc5d0a35e3bd) Ensure proper SummaryStyle handling (#1828) (by [@mawosoft](https://github.com/mawosoft)) -* [559d18](https://github.com/dotnet/BenchmarkDotNet/commit/559d181dbc0b30e34b3ffdc1786cf5759901ff01) Fix argument escaping (#1841) (by [@adamsitnik](https://github.com/adamsitnik)) -* [5927a6](https://github.com/dotnet/BenchmarkDotNet/commit/5927a6eee2a913fad5477e97a8c7b6ede5fa7a3b) Preserve EnablePreviewFeatures csproj setting (#1842) (by [@kkokosa](https://github.com/kkokosa)) -* [db0a88](https://github.com/dotnet/BenchmarkDotNet/commit/db0a88ab9cf94ac8b5f6302173091ddf42c2dc09) [wasm] fix perf after test renames (#1846) (by [@pavelsavara](https://github.com/pavelsavara)) -* [dddc1e](https://github.com/dotnet/BenchmarkDotNet/commit/dddc1ea4e15b5480f917c2d73efa5dc777e321e1) Use non-deprecated macOS pool on Azure Pipelines (#1847) (by [@akoeplinger](https://github.com/akoeplinger)) -* [e62dc2](https://github.com/dotnet/BenchmarkDotNet/commit/e62dc27e47a78959c317839814434627697074d6) align both Executors to use the same timeout (2s) (#1848) (by [@adamsitnik](https://github.com/adamsitnik)) -* [7d5a8f](https://github.com/dotnet/BenchmarkDotNet/commit/7d5a8ff0308201cff3e48b1173585984095e44cf) Added exporter custom path to docs #1819 (#1850) (by [@asaf92](https://github.com/asaf92)) -* [7b0211](https://github.com/dotnet/BenchmarkDotNet/commit/7b02117781f63b8be9dcf292ee21341dc5af5c07) Fix size specifier (#1854), fixes #1727 (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [34817b](https://github.com/dotnet/BenchmarkDotNet/commit/34817bfdd8909711b4802415808d26849aaed98e) Change DisassemblyDiagnoser to use byte unit always (#1855) (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [0c03e8](https://github.com/dotnet/BenchmarkDotNet/commit/0c03e8611471f871ef6e50346efca7c4d7004bd1) Bugfix for merged PR #1855 (#1858) (by [@mawosoft](https://github.com/mawosoft)) -* [f00f7c](https://github.com/dotnet/BenchmarkDotNet/commit/f00f7c748ca18a949d5128821b16bdb6e381ef34) JitDiagnosers should print an error when run on non-Windows OS (#1861) (by [@adamsitnik](https://github.com/adamsitnik)) -* [956051](https://github.com/dotnet/BenchmarkDotNet/commit/95605152698de1452f95b042e6105c3809562dec) Add Allocation Ratio column (#1859) (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [42c718](https://github.com/dotnet/BenchmarkDotNet/commit/42c7184788f16578897690fdb803f4f32b0a4f28) Categories should have the highest priority in logical group order, fixes #1864 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [6f6de0](https://github.com/dotnet/BenchmarkDotNet/commit/6f6de007ee8698820ca6c6630a351460ce123be6) Introduce BenchmarkRunner.Run(Type[] types) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [408786](https://github.com/dotnet/BenchmarkDotNet/commit/4087868a702d4aeba46df1e50184d9d1f25da224) Use Cake.FileHelpers 4.0.1 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [130f0f](https://github.com/dotnet/BenchmarkDotNet/commit/130f0fb12e7fb4087d1bc2dbee24296cf5646280) Additional diagnostics in WindowsDisassembler (see #1836) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [189e68](https://github.com/dotnet/BenchmarkDotNet/commit/189e684ad3ae3fe1d920394d7d55281a617993f5) Fix GroupExporterTest (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [61c447](https://github.com/dotnet/BenchmarkDotNet/commit/61c44703298f768ae3da2bf4ce85a002a778ad06) Remove travis badges (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [e17992](https://github.com/dotnet/BenchmarkDotNet/commit/e1799289f8deaa62403c9222dbbb9b8fd6239851) Bump Cake to 2.0.0, adopt frosting project style (#1865) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [bb180a](https://github.com/dotnet/BenchmarkDotNet/commit/bb180a9bd92d722490cfeba2e678a6c0b0281291) Remove .travis.yml (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [f188f7](https://github.com/dotnet/BenchmarkDotNet/commit/f188f764ffebc518e4b7cbc7d7c752c3657dd25a) Respect LogicalGroup order in DefaultOrderer (see #1864) (#1866) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [7e19f3](https://github.com/dotnet/BenchmarkDotNet/commit/7e19f3acd9e33ca9651a60329577a06cce2626d9) Enable GitHub actions (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [ed53a3](https://github.com/dotnet/BenchmarkDotNet/commit/ed53a3fefaddecca293e52add11321548fd26a07) Add GitHub Actions build status badge (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [195cfd](https://github.com/dotnet/BenchmarkDotNet/commit/195cfd604eb8a0d42c42d10b2af0cc07e6973924) Support Windows 11 in OsBrandStringHelper (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [5145d1](https://github.com/dotnet/BenchmarkDotNet/commit/5145d120802c353c735015157f65339c69d96ca8) Fix documentation build tasks (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [988dbf](https://github.com/dotnet/BenchmarkDotNet/commit/988dbf696b394cf4925041fc37de2a48860523b2) Update docs/articles/contributing/documentation.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [f17453](https://github.com/dotnet/BenchmarkDotNet/commit/f17453cef3a91ac90540dec1dcdee21725def6f8) UserInteraction: don't loop when reaching the input end. (#1870) (by [@tmds](https://github.com/tmds)) -* [23d115](https://github.com/dotnet/BenchmarkDotNet/commit/23d1150a3c5bdb3c681b5562eaaf49e7989ad1dc) force High Performance Mode by default, fixes #1506 (#1885) (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [328573](https://github.com/dotnet/BenchmarkDotNet/commit/32857344077280e22e35df2de83d516bcd390e9d) Added IntermediateOutputPath option to MonoAotCompiler task parameters (#1888) (by [@naricc](https://github.com/naricc)) -* [26ed31](https://github.com/dotnet/BenchmarkDotNet/commit/26ed31e91b3e9022a66d1620f1c94cb6e7afcf40) set JETBRAINS_DPA_AGENT_ENABLE by default to 0 to disable ReSharper's Dynamic... (by [@adamsitnik](https://github.com/adamsitnik)) -* [625b2c](https://github.com/dotnet/BenchmarkDotNet/commit/625b2cc08871358e34c5290bba49c2a024eec6e2) Fix warnings (#1896) (by [@adamsitnik](https://github.com/adamsitnik)) -* [4b8821](https://github.com/dotnet/BenchmarkDotNet/commit/4b88216bc3037b5f6e05b5c9e041921a646e922b) Handled exceptions from exporters in CompositeExporter. Preventing benchmark ... (by [@epeshk](https://github.com/epeshk)) -* [6ca6c6](https://github.com/dotnet/BenchmarkDotNet/commit/6ca6c6625857aaf08d8441b0ef9c1c613464a469) don't use diagnosers when running the benchmark has failed (#1903) (by [@adamsitnik](https://github.com/adamsitnik)) -* [6d2739](https://github.com/dotnet/BenchmarkDotNet/commit/6d27395917fa70361415771bcddd6a3ed0a1e2ae) Improve BuildTimeout (#1906) (by [@adamsitnik](https://github.com/adamsitnik)) -* [3ea212](https://github.com/dotnet/BenchmarkDotNet/commit/3ea2129637d54d9e0c8c113d391a57088cd9b872) ensure the default order of benchmarks is the same as declared in source code... (by [@adamsitnik](https://github.com/adamsitnik)) -* [05bb3d](https://github.com/dotnet/BenchmarkDotNet/commit/05bb3db20c60b84ecc23aa77fd08cf3dffa6368d) Log progress and estimated finish time (#1909) (by [@adamsitnik](https://github.com/adamsitnik)) -* [11751a](https://github.com/dotnet/BenchmarkDotNet/commit/11751a6e52175cbd81a25b6dcd7d379e4220027c) Don't run Analyzers for the generated project + Roslyn workaround (#1917) (by [@adamsitnik](https://github.com/adamsitnik)) -* [80f45c](https://github.com/dotnet/BenchmarkDotNet/commit/80f45cedc4707db05fe6a48ef1fbd5b19ab8de60) [WASM] Fix rename of main.js to test-main.js (#1916) (by [@naricc](https://github.com/naricc)) -* [32bb2d](https://github.com/dotnet/BenchmarkDotNet/commit/32bb2deea8771fe5aadc38063b8a3fe1495ccf81) Improve failure handling and finish time estimation (#1921) (by [@adamsitnik](https://github.com/adamsitnik)) -* [9ff0f9](https://github.com/dotnet/BenchmarkDotNet/commit/9ff0f9cf497706d85a214ae197ccc802de83ded0) Restore BytesAllocatedPerOperation for JSON and XML (#1919) (by [@martincostello](https://github.com/martincostello)) -* [569f4f](https://github.com/dotnet/BenchmarkDotNet/commit/569f4f5bb0395c0b730d88588e58172eacd4edf6) Add macOS Monterey test case in OsBrandStringTests (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [63c0ce](https://github.com/dotnet/BenchmarkDotNet/commit/63c0cedabcd1008d1a2f468d635f2dafa5eb7844) Notified users about private methods with Setup/Cleanup attributes (#1912) (by [@epeshk](https://github.com/epeshk)) -* [c1f210](https://github.com/dotnet/BenchmarkDotNet/commit/c1f210c736e3f50867bc8bb202bf11b950591d0d) fixes(configuration): Not unique exporter for exporter type (#1796) (by [@workgroupengineering](https://github.com/workgroupengineering)) -* [bd0872](https://github.com/dotnet/BenchmarkDotNet/commit/bd08722ee22fc25a0cf6d389125c5b6eff10cd8f) Rollback logicalGroupRules to List (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [c303ad](https://github.com/dotnet/BenchmarkDotNet/commit/c303ad1b0aa027ec6f679aa6c14ff1cad74f57e0) Fix typo in WasmCsProj (#1926) (by [@lewing](https://github.com/lewing)) -* [f1aefb](https://github.com/dotnet/BenchmarkDotNet/commit/f1aefb59ccd0252c557d195b82ac4d258a7fcd88) Display correct default InvocationCount in SummaryTable, fixes #1929 (#1930) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [ca5103](https://github.com/dotnet/BenchmarkDotNet/commit/ca51035a62ea89de6059c2822c4a5e5df58560a3) [wasm] Set the right runtime moniker (#1932) (by [@radekdoulik](https://github.com/radekdoulik)) -* [fa5984](https://github.com/dotnet/BenchmarkDotNet/commit/fa598415720449891edeaf1992653f4678ba98e6) [wasm] Improve the autogenerated project (#1936) (by [@radical](https://github.com/radical)) -* [b78ec9](https://github.com/dotnet/BenchmarkDotNet/commit/b78ec96631c5065895255165b7113bf5062aa407) Fix optimization of action methods for coreclr (#1935) (by [@AndyAyersMS](https://github.com/AndyAyersMS)) -* [13f4ea](https://github.com/dotnet/BenchmarkDotNet/commit/13f4ea556d431115aaa1746d9187d8706b5e9a6d) Don't use blocking acknowledgments when there is no need to (#1940) (by [@adamsitnik](https://github.com/adamsitnik)) -* [8ce19e](https://github.com/dotnet/BenchmarkDotNet/commit/8ce19e6be3109b5717805ee848914782662095d9) [wasm] Add a `--wasmDataDir` parameter (#1938) (by [@radical](https://github.com/radical)) -* [9b990d](https://github.com/dotnet/BenchmarkDotNet/commit/9b990dfc03bd790cc0477448ba166548fa11dd71) AsyncProcessOutputReader: Use ConcurrentQueue instead of ConcurrentStack (#1945) (by [@radical](https://github.com/radical)) -* [937311](https://github.com/dotnet/BenchmarkDotNet/commit/937311cb62ac5f3ffab69e243e502d4bc20cd015) Revise heuristic for initial jitting. (#1949) (by [@AndyAyersMS](https://github.com/AndyAyersMS)) -* [228a6a](https://github.com/dotnet/BenchmarkDotNet/commit/228a6ad48a9d46a8f8bc3d4251260600cd3c4404) improve error message for users who pass path to Core_Root instead of CoreRun... (by [@adamsitnik](https://github.com/adamsitnik)) -* [1d34f8](https://github.com/dotnet/BenchmarkDotNet/commit/1d34f856a4ba633af9efc63394abbd0311edfbae) DotNetCli*: Allow logging command output (#1950) (by [@radical](https://github.com/radical)) -* [01ead5](https://github.com/dotnet/BenchmarkDotNet/commit/01ead56acdb13a46daf021b83360433e36bec192) Executor: Don't use Process.ExitCode, unless the process has exited (#1947) (by [@radical](https://github.com/radical)) -* [8e3d13](https://github.com/dotnet/BenchmarkDotNet/commit/8e3d130c97e6bd5c9850ceebe063aa0c37b4e9e7) add possibility to enable build output logging via command line args (#1953) (by [@adamsitnik](https://github.com/adamsitnik)) -* [6fa333](https://github.com/dotnet/BenchmarkDotNet/commit/6fa3339a13059c1ef2bbeae629b2196d6eeb11d3) Cleaning up argument spacing in CLI calls. Add output path for publish. CoreR... (by [@Beau-Gosse-dev](https://github.com/Beau-Gosse-dev)) -* [010ac2](https://github.com/dotnet/BenchmarkDotNet/commit/010ac21fe2e32e428045d23684cece1d3a6d1df1) don't redirect standard input and don't write Acknowledgment to it if acknowl... (by [@adamsitnik](https://github.com/adamsitnik)) -* [d66289](https://github.com/dotnet/BenchmarkDotNet/commit/d66289ae8dff61f093430016bc3ef99199adb21b) Improve support for NativeAOT (#1960) (by [@adamsitnik](https://github.com/adamsitnik)) -* [0868da](https://github.com/dotnet/BenchmarkDotNet/commit/0868dafe403407561f86de3390f87876c81fe2e2) disable AwaitingTasksShouldNotInterfereAllocationResults for InProcess toolch... (by [@adamsitnik](https://github.com/adamsitnik)) -* [41a151](https://github.com/dotnet/BenchmarkDotNet/commit/41a15173e435be919ae5f531e781352f1e9fae46) Rename CoreRT to NativeAOT (#1965) (by [@adamsitnik](https://github.com/adamsitnik)) -* [9c1c27](https://github.com/dotnet/BenchmarkDotNet/commit/9c1c27be226ab83805a0c8de20d1b5803ed835e0) [Mono] Actually AOT things in AOT mode; prevent JIT fall back (#1966) (by [@naricc](https://github.com/naricc)) -* [ed6529](https://github.com/dotnet/BenchmarkDotNet/commit/ed652939ae7afc7921ffda019c9e4e33d8669c31) Fixed FreeBSD shared library extension in MonoAOTLLVM tool chain. (#1969) (by [@naricc](https://github.com/naricc)) -* [19679d](https://github.com/dotnet/BenchmarkDotNet/commit/19679ded53ed4feffc4cd8bbdaa1affddbb5415d) Set TrimmerDefaultAction to link to ensure that trimmer only analyzes the par... (by [@adamsitnik](https://github.com/adamsitnik)) -* [e2d41b](https://github.com/dotnet/BenchmarkDotNet/commit/e2d41b3156ec4eb4135996353964441ccb0aafa4) don't place DynamicallyAccessedMembers on an array (#1973) (by [@adamsitnik](https://github.com/adamsitnik)) -* [09d939](https://github.com/dotnet/BenchmarkDotNet/commit/09d9396a7980dcb65be97169b8611c208af075a2) Update ArtifaceFileNameHelper error message (#1974) (by [@eiriktsarpalis](https://github.com/eiriktsarpalis)) -* [cac918](https://github.com/dotnet/BenchmarkDotNet/commit/cac918cef99079c337272dbe229c140e6802260a) Add new `--generateBinLog` to generate msbuild binlogs, with names (#1970) (by [@radical](https://github.com/radical)) -* [5f0db4](https://github.com/dotnet/BenchmarkDotNet/commit/5f0db4fba1e29e98b446433178ad4badf342d10a) Add support for LoongArch64. (#1971) (by [@LuckyXu-HF](https://github.com/LuckyXu-HF)) -* [56556a](https://github.com/dotnet/BenchmarkDotNet/commit/56556ab01491fd4d140d1bc7f178fdb7ac02d6c3) Add support for Rd.xml file around project file (#1976) (by [@kant2002](https://github.com/kant2002)) -* [804ed9](https://github.com/dotnet/BenchmarkDotNet/commit/804ed97eb83d3417022603bc4f3949db88eea55e) Remove CPP codegen for NativeAOT (#1979) (by [@kant2002](https://github.com/kant2002)) -* [190d07](https://github.com/dotnet/BenchmarkDotNet/commit/190d0789c1033dc69dc0141c00b3962b25d4db51) Fix for issue NETSDK1150 (#1981) (by [@OlegOLK](https://github.com/OlegOLK)) -* [a57819](https://github.com/dotnet/BenchmarkDotNet/commit/a578194de43da0ab940864a65568e8f882305b28) Migrate from .NET 5 to .NET 6.0 (#1978) (by [@kant2002](https://github.com/kant2002)) -* [74086a](https://github.com/dotnet/BenchmarkDotNet/commit/74086acd959b50ce37959fe4239af263eea8a784) Addressing code review suggestions (#1975) (by [@adamsitnik](https://github.com/adamsitnik)) -* [5fdafb](https://github.com/dotnet/BenchmarkDotNet/commit/5fdafbc03272512a9afc57ec43e5e088c0454539) Update contributing docs (#1939) (by [@adamsitnik](https://github.com/adamsitnik)) -* [ca43aa](https://github.com/dotnet/BenchmarkDotNet/commit/ca43aafc6dbde588ef059e48150100364e4a60f2) DotNetCliCommand: Add new `RetryFailedBuildWithNoDeps` property (#1982) (by [@radical](https://github.com/radical)) -* [bbe6ab](https://github.com/dotnet/BenchmarkDotNet/commit/bbe6abca289977b839795ea41ccef11094720a07) Reduce generated code size (#1984) (by [@adamsitnik](https://github.com/adamsitnik)) -* [31de77](https://github.com/dotnet/BenchmarkDotNet/commit/31de77dc6b9f3535a44b7574455217d82c36faf6) the CI must run net6.0, not net5.0 tests (#1986) (by [@adamsitnik](https://github.com/adamsitnik)) -* [554127](https://github.com/dotnet/BenchmarkDotNet/commit/554127b4f39bad52db7b48847688fe777041c17e) Fix AppVeyor build (#1987) (by [@adamsitnik](https://github.com/adamsitnik)) -* [a0035f](https://github.com/dotnet/BenchmarkDotNet/commit/a0035f9de4417f4590ac5516a1f4d8f8e3fb72c1) re-enable NativeAOT tests on GitHub Actions Windows (#1988) (by [@adamsitnik](https://github.com/adamsitnik)) -* [163f40](https://github.com/dotnet/BenchmarkDotNet/commit/163f406788d41dca83ce40957b0b889b0583ac1f) don't emit debug symbols (#1985) (by [@adamsitnik](https://github.com/adamsitnik)) -* [35ba9d](https://github.com/dotnet/BenchmarkDotNet/commit/35ba9d5a771fab3ae7d7b7759dd441d63775c148) Change aot mode to normal aot with LLVM JIT fall back (#1990) (by [@fanyang-mono](https://github.com/fanyang-mono)) -* [1c935d](https://github.com/dotnet/BenchmarkDotNet/commit/1c935dc71ea03f17a345177aeb88e8c56b5c00c7) NativeAOT: IlcOptimizationPreference & IlcInstructionSet (#1994) (by [@adamsitnik](https://github.com/adamsitnik)) -* [c165ba](https://github.com/dotnet/BenchmarkDotNet/commit/c165ba17501626561297a80fe1b05b2400ce8014) use AnyCPU for S390x, fixes #1711 (#1996) (by [@adamsitnik](https://github.com/adamsitnik)) -* [f4e8de](https://github.com/dotnet/BenchmarkDotNet/commit/f4e8de384461e87be7afef62e3797ef6ddb09bcc) Update NativeAOT docs, fix the support for local NativeAOT builds (#1997) (by [@adamsitnik](https://github.com/adamsitnik)) -* [9e173d](https://github.com/dotnet/BenchmarkDotNet/commit/9e173d35e0df8b485e766e7b9bdb2fa89e63d8be) Fix typo in README (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [a79881](https://github.com/dotnet/BenchmarkDotNet/commit/a798816f69134f7a155a6c0d7a42e8a3251ce5c0) when user specifies both --runtimes and --corerun, multiple independent jobs ... (by [@adamsitnik](https://github.com/adamsitnik)) -* [5e6275](https://github.com/dotnet/BenchmarkDotNet/commit/5e62756c126980ecde9e4779b3c320b3225381ee) when Host process is not .NET Core, CoreRunToolchain should use latests avail... (by [@adamsitnik](https://github.com/adamsitnik)) -* [b09431](https://github.com/dotnet/BenchmarkDotNet/commit/b09431cbc6489f59bc24fc25085972c743204715) Opt out of metadata trimming (#2020) (by [@MichalStrehovsky](https://github.com/MichalStrehovsky)) -* [5448d4](https://github.com/dotnet/BenchmarkDotNet/commit/5448d407d0622b12f2e662f4f3c82fcbc99af34f) Update Iced to its latest version. (#2019) (by [@teo-tsirpanis](https://github.com/teo-tsirpanis)) -* [fcda33](https://github.com/dotnet/BenchmarkDotNet/commit/fcda33a4a3b81f5673add2f0c0ae50f10565c634) Use PackageIcon property (#2008) (by [@martincostello](https://github.com/martincostello)) -* [72fce9](https://github.com/dotnet/BenchmarkDotNet/commit/72fce9ab2660b91b1666755c2ef600ee774db5c4) don't run NativeAOT tests on AppVeyor, as one of them takes 3 minutes and we ... (by [@adamsitnik](https://github.com/adamsitnik)) -* [14f9cf](https://github.com/dotnet/BenchmarkDotNet/commit/14f9cf1836721b0153fc2857b3c75b41477357c0) don't emit debug symbols for samples and test projects as it breaks arm64 win... (by [@adamsitnik](https://github.com/adamsitnik)) -* [fd4a9c](https://github.com/dotnet/BenchmarkDotNet/commit/fd4a9c434cbb9962c5cda140339acd21f0da5cae) update TraceEvent to 3.0.1 to have a proper ARM64 support for Diagnostics pac... (by [@adamsitnik](https://github.com/adamsitnik)) -* [8deec6](https://github.com/dotnet/BenchmarkDotNet/commit/8deec6c2136156e6c6dcd2a01f902d5671116676) Bugfix MetricColumn: Respect unit when formatting values. (by [@mawosoft](https://github.com/mawosoft)) -* [9216a7](https://github.com/dotnet/BenchmarkDotNet/commit/9216a7727cf01ed61674f302932c49b708de1a54) Add MetricColumnTests (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [23f995](https://github.com/dotnet/BenchmarkDotNet/commit/23f9958b9d4dee163dad0b6ea1a0db676fc0f5de) net461->net462 in Samples, Diagnosers, Tests (#2035) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [762b76](https://github.com/dotnet/BenchmarkDotNet/commit/762b76c3685728758e815f6c86cb0da06bdcd180) Cleanup dependencies and add net6.0 TFM (#2012) (by [@martincostello](https://github.com/martincostello)) -* [d24ea3](https://github.com/dotnet/BenchmarkDotNet/commit/d24ea32447681d14bb2e5ed3baba4ab8da4d927b) Port the .NET (Core) disassembler to ClrMd v2 (#2040) (by [@adamsitnik](https://github.com/adamsitnik)) -* [6eb280](https://github.com/dotnet/BenchmarkDotNet/commit/6eb280b59dea467af33586fa42dbc44019eea973) Fix WmicCpuInfoProvider comment (#2042) (by [@msitt](https://github.com/msitt)) -* [f72e61](https://github.com/dotnet/BenchmarkDotNet/commit/f72e617f6c613ddea2b2435d0a75c9cf8074308a) restore Microsoft.DotNet.PlatformAbstraction dependency (#2043) (by [@adamsitnik](https://github.com/adamsitnik)) -* [99ef3f](https://github.com/dotnet/BenchmarkDotNet/commit/99ef3f16c431db68f9de806293cb63cf0ea2cedd) add .NET 4.8.1 support (#2044) (by [@adamsitnik](https://github.com/adamsitnik)) -* [118135](https://github.com/dotnet/BenchmarkDotNet/commit/118135ec298c3d931aadb16597a4d0b74f5c20e2) adopt to recent NativeAOT changes (#2045) (by [@adamsitnik](https://github.com/adamsitnik)) -* [96b376](https://github.com/dotnet/BenchmarkDotNet/commit/96b376434f52a58f6712cf802a52f6a7956eabd8) Make a bit of BenchmarkDotNet trimmable (#2046) (by [@MichalStrehovsky](https://github.com/MichalStrehovsky)) -* [e4ff20](https://github.com/dotnet/BenchmarkDotNet/commit/e4ff20f3488c0afffeb6a0690fddfa954a0101e1) Bugfix SmartParameter source code generation (#2041) (by [@mawosoft](https://github.com/mawosoft)) -* [461b70](https://github.com/dotnet/BenchmarkDotNet/commit/461b7090ec142a77d0c79dd3c6368f1d70c1a4cd) Added the kernel keyword as a parameter to the ETWConfig (#2049) (by [@mrsharm](https://github.com/mrsharm)) -* [d6020e](https://github.com/dotnet/BenchmarkDotNet/commit/d6020e9258a8bc302e98ca23e8590418d46de99f) Restrict what's published to AppVeyor NuGet feed (BDN nightly) (#2047) (by [@mawosoft](https://github.com/mawosoft)) -* [32ddeb](https://github.com/dotnet/BenchmarkDotNet/commit/32ddeb56bd38631e052350cecfbf9e86df1b2e7c) provide Hardware Intrinsics information (#2051) (by [@adamsitnik](https://github.com/adamsitnik)) -* [2e943e](https://github.com/dotnet/BenchmarkDotNet/commit/2e943e3c608e07740ff89f4a748098293541ce09) Fix DocFx configuration and build (by [@mawosoft](https://github.com/mawosoft)) -* [8c963b](https://github.com/dotnet/BenchmarkDotNet/commit/8c963ba0c6f29d676a49b0188dc195bb428ba60b) Reverting DocFX_Build dependency on Build (by [@mawosoft](https://github.com/mawosoft)) -* [48ecbc](https://github.com/dotnet/BenchmarkDotNet/commit/48ecbc2c2db9a131c7a338b1094df410ff48ae06) add missing hardware intrinsic info (#2052) (by [@adamsitnik](https://github.com/adamsitnik)) -* [b4c44c](https://github.com/dotnet/BenchmarkDotNet/commit/b4c44ccea9fac4cd7ba702bee6edb1170edd15c5) Bugfix copied project settings (#2056) (by [@mawosoft](https://github.com/mawosoft)) -* [2dc6c9](https://github.com/dotnet/BenchmarkDotNet/commit/2dc6c93032cca851ec142e40854b1940320bf108) Add serialize to NativeAOT (#2065) (by [@MichalPetryka](https://github.com/MichalPetryka)) -* [7fb872](https://github.com/dotnet/BenchmarkDotNet/commit/7fb8723c6e96688cd380b3354397c17d77dfce93) Print Vector width in summary on older runtimes (#2066) (by [@MichalPetryka](https://github.com/MichalPetryka)) -* [8e355b](https://github.com/dotnet/BenchmarkDotNet/commit/8e355b57f667096d7197e5afbc0debb8475e514c) fix .NET 4.8.1 detection (#2067) (by [@adamsitnik](https://github.com/adamsitnik)) -* [0f457d](https://github.com/dotnet/BenchmarkDotNet/commit/0f457d1d476b466751774fa150d1ed08ea652bf1) print error when users try DisassemblyDiagnoser with NativeAOT (#2068) (by [@adamsitnik](https://github.com/adamsitnik)) -* [b79282](https://github.com/dotnet/BenchmarkDotNet/commit/b79282ed574ad5c887b38695937a08afdb6f0278) use ClrMd2Disassembler on Windows whenever possible (#2071) (by [@adamsitnik](https://github.com/adamsitnik)) -* [a5b0e9](https://github.com/dotnet/BenchmarkDotNet/commit/a5b0e9ad83a4806c264961386ef9cade014ff4d4) Add glob filters support to disassembler to allow disassembling specific meth... (by [@adamsitnik](https://github.com/adamsitnik)) -* [cab43e](https://github.com/dotnet/BenchmarkDotNet/commit/cab43e1fd081bd10d5be501475d34e5795f68519) add two fallbacks to CoreRun copying (#2073) (by [@adamsitnik](https://github.com/adamsitnik)) -* [4924f0](https://github.com/dotnet/BenchmarkDotNet/commit/4924f0ed03ad7a31c114d179b4181f677c2d0a1a) Fix few new disassembler bugs caused by update to ClrMd v2 (#2075) (by [@adamsitnik](https://github.com/adamsitnik)) -* [c99ba3](https://github.com/dotnet/BenchmarkDotNet/commit/c99ba30e7c0b146eeceb79b70513936732037756) More disassembler improvements (#2078) (by [@adamsitnik](https://github.com/adamsitnik)) -* [6bb61c](https://github.com/dotnet/BenchmarkDotNet/commit/6bb61ce5481fedd4dde85c47b8eac2ad64ac12d3) Make FromUrl and FromSource more friendly (#1910) (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [387ca0](https://github.com/dotnet/BenchmarkDotNet/commit/387ca0e169a0cc4bf209c0516f933108cccf9382) fix the CI (#2079) (by [@adamsitnik](https://github.com/adamsitnik)) -* [52d770](https://github.com/dotnet/BenchmarkDotNet/commit/52d7707cfc8c13dd63d75d9720c62abfdb20d370) set TreatWarningsAsErrors to true (#1897) (by [@adamsitnik](https://github.com/adamsitnik)) -* [a11b49](https://github.com/dotnet/BenchmarkDotNet/commit/a11b49a0b07b90f2fbb18fa0c23630ecbbcb3f30) JsonExporter: make Json export more extensible. (#2081) (by [@ptr1120](https://github.com/ptr1120)) -* [1424cf](https://github.com/dotnet/BenchmarkDotNet/commit/1424cf8c42e7156a8639ae8daf7ceadbd8527b73) remove last warning that happens during pack command for master branch build ... (by [@adamsitnik](https://github.com/adamsitnik)) -* [838000](https://github.com/dotnet/BenchmarkDotNet/commit/83800034b63c881ccdb54cd70e6e61654351878f) Hide columns for multiple runtime (#1621) (by [@marcnet80](https://github.com/marcnet80)) -* [8ec00d](https://github.com/dotnet/BenchmarkDotNet/commit/8ec00dd53ff1ed6d8f9a8720857599474c8c36c1) Hiding columns (#1890) (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [e0dbce](https://github.com/dotnet/BenchmarkDotNet/commit/e0dbce7fdb00fd3c461932fbd8603114d2e0fc17) Release notes for 0.13.2 (#2084) (by [@adamsitnik](https://github.com/adamsitnik)) -* [f6f335](https://github.com/dotnet/BenchmarkDotNet/commit/f6f33585abd28b208086d3c475ae46229b4d143b) Prepare v0.13.2 changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [186998](https://github.com/dotnet/BenchmarkDotNet/commit/186998dccc4ad3e2e41ecb9acf749074a542bf63) Set library version: 0.13.2 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (34) - -* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik)) -* Adeel Mujahid ([@am11](https://github.com/am11)) -* Alexander Köplinger ([@akoeplinger](https://github.com/akoeplinger)) -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* Andrii Kurdiumov ([@kant2002](https://github.com/kant2002)) -* Andy Ayers ([@AndyAyersMS](https://github.com/AndyAyersMS)) -* Ankit Jain ([@radical](https://github.com/radical)) -* Asaf Agami ([@asaf92](https://github.com/asaf92)) -* Beau Gosse ([@Beau-Gosse-dev](https://github.com/Beau-Gosse-dev)) -* Eirik Tsarpalis ([@eiriktsarpalis](https://github.com/eiriktsarpalis)) -* Evgeny Peshkov ([@epeshk](https://github.com/epeshk)) -* Fan Yang ([@fanyang-mono](https://github.com/fanyang-mono)) -* James MIllar ([@Distinctlyminty](https://github.com/Distinctlyminty)) -* Konrad Kokosa ([@kkokosa](https://github.com/kkokosa)) -* Larry Ewing ([@lewing](https://github.com/lewing)) -* marcnet80 ([@marcnet80](https://github.com/marcnet80)) -* Marland Sitt ([@msitt](https://github.com/msitt)) -* Martin Costello ([@martincostello](https://github.com/martincostello)) -* Matthias Wolf ([@mawosoft](https://github.com/mawosoft)) -* Michał Petryka ([@MichalPetryka](https://github.com/MichalPetryka)) -* Michal Strehovský ([@MichalStrehovsky](https://github.com/MichalStrehovsky)) -* Mukund Raghav Sharma (Moko) ([@mrsharm](https://github.com/mrsharm)) -* Nathan Ricci ([@naricc](https://github.com/naricc)) -* OlegOLK ([@OlegOLK](https://github.com/OlegOLK)) -* Oriol Mesa ([@SnakyBeaky](https://github.com/SnakyBeaky)) -* Pavel Savara ([@pavelsavara](https://github.com/pavelsavara)) -* Peter Bruch ([@ptr1120](https://github.com/ptr1120)) -* Radek Doulik ([@radekdoulik](https://github.com/radekdoulik)) -* Ron Brogan ([@ronbrogan](https://github.com/ronbrogan)) -* Theodore Tsirpanis ([@teo-tsirpanis](https://github.com/teo-tsirpanis)) -* Tom Deseyn ([@tmds](https://github.com/tmds)) -* workgroupengineering ([@workgroupengineering](https://github.com/workgroupengineering)) -* Xu Liangyu ([@LuckyXu-HF](https://github.com/LuckyXu-HF)) -* Yegor Stepanov ([@YegorStepanov](https://github.com/YegorStepanov)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.13.3.md b/docs/_changelog/details/v0.13.3.md deleted file mode 100644 index 9f4e687616..0000000000 --- a/docs/_changelog/details/v0.13.3.md +++ /dev/null @@ -1,229 +0,0 @@ -## Milestone details - -In the [v0.13.3](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.13.3) scope, -29 issues were resolved and 71 pull requests were merged. -This release includes 87 commits by 22 contributors. - -## Resolved issues (29) - -* [#989](https://github.com/dotnet/BenchmarkDotNet/issues/989) [Suggestion] add API for detecting benchmark run failures. (assignee: [@emanuel-v-r](https://github.com/emanuel-v-r)) -* [#1422](https://github.com/dotnet/BenchmarkDotNet/issues/1422) --disasm switch on ARM64 throws Exception (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#1469](https://github.com/dotnet/BenchmarkDotNet/issues/1469) Host exe marked /largeaddressaware -* [#1521](https://github.com/dotnet/BenchmarkDotNet/issues/1521) Iteration setup and cleanup causes job baseline error with multiple runtimes passed to BenchmarkSwitcher -* [#1684](https://github.com/dotnet/BenchmarkDotNet/issues/1684) Getting System.FormatException when passing certain string as params. (assignee: [@YegorStepanov](https://github.com/YegorStepanov)) -* [#1709](https://github.com/dotnet/BenchmarkDotNet/issues/1709) BenchmarkSwitcher executes all benchmarks that share a base class (assignee: [@YegorStepanov](https://github.com/YegorStepanov)) -* [#1736](https://github.com/dotnet/BenchmarkDotNet/issues/1736) Consider adding an ExceptionDiagnoser (assignee: [@Serg046](https://github.com/Serg046)) -* [#1737](https://github.com/dotnet/BenchmarkDotNet/issues/1737) runtime knobs broken link (assignee: [@YegorStepanov](https://github.com/YegorStepanov)) -* [#1799](https://github.com/dotnet/BenchmarkDotNet/issues/1799) Enable interactive, incremental runs through the terminal (assignee: [@melias](https://github.com/melias)) -* [#1839](https://github.com/dotnet/BenchmarkDotNet/issues/1839) Markdown output should escape the output -* [#1867](https://github.com/dotnet/BenchmarkDotNet/issues/1867) Trailing newline characters in input value break summary table -* [#1933](https://github.com/dotnet/BenchmarkDotNet/issues/1933) how to debug reflection error -* [#2064](https://github.com/dotnet/BenchmarkDotNet/issues/2064) Running with .Net 6/7 Mono JIT (assignee: [@Serg046](https://github.com/Serg046)) -* [#2070](https://github.com/dotnet/BenchmarkDotNet/issues/2070) BenchmarkDotNet crashing on Linux with DisassemblyDiagnoser (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#2088](https://github.com/dotnet/BenchmarkDotNet/issues/2088) Running on Linux leaves terminal colors changed (assignee: [@farQtech](https://github.com/farQtech)) -* [#2099](https://github.com/dotnet/BenchmarkDotNet/issues/2099) WASM is recognized as NativeAOT -* [#2102](https://github.com/dotnet/BenchmarkDotNet/issues/2102) Add benchmarking progress to console title (assignee: [@franciscomoloureiro](https://github.com/franciscomoloureiro)) -* [#2125](https://github.com/dotnet/BenchmarkDotNet/issues/2125) Tests Just Stop Running During Run (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#2126](https://github.com/dotnet/BenchmarkDotNet/issues/2126) DotNet 6 - VB - Error: The type or namespace name 'DeserializingBenchmarks' could not be found in the global namespace (are you missing an assembly reference?) -* [#2131](https://github.com/dotnet/BenchmarkDotNet/issues/2131) --filter should include argument/params names (assignee: [@blouflashdb](https://github.com/blouflashdb)) -* [#2146](https://github.com/dotnet/BenchmarkDotNet/issues/2146) Build warning MSB3245: Could not locate the assembly `Mono.Posix` -* [#2167](https://github.com/dotnet/BenchmarkDotNet/issues/2167) Site: No vertical bar should be displayed for the Main page -* [#2185](https://github.com/dotnet/BenchmarkDotNet/issues/2185) WarmupCount=0 doesn't work (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#2187](https://github.com/dotnet/BenchmarkDotNet/issues/2187) Reports for InProcess jobs don't include non-Result measurements (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#2189](https://github.com/dotnet/BenchmarkDotNet/issues/2189) broker.ProcessData() hangs if something wrong is the spawned process (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#2210](https://github.com/dotnet/BenchmarkDotNet/issues/2210) Broken integration tests on Ubuntu 22.04 (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#2211](https://github.com/dotnet/BenchmarkDotNet/issues/2211) Setting affinity does not work for Environment.ProcessorCount >= 32 (assignee: [@Donis-](https://github.com/Donis-)) -* [#2216](https://github.com/dotnet/BenchmarkDotNet/issues/2216) ppc64le architecture support required for running benchmarks on Power Systems (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#2223](https://github.com/dotnet/BenchmarkDotNet/issues/2223) Disassembler fails to disassemble some methods on Linux when using recursive mode (assignee: [@adamsitnik](https://github.com/adamsitnik)) - -## Merged pull requests (71) - -* [#2018](https://github.com/dotnet/BenchmarkDotNet/pull/2018) Port JetBrains' nullability annotations and clean-up code. (by [@teo-tsirpanis](https://github.com/teo-tsirpanis)) -* [#2085](https://github.com/dotnet/BenchmarkDotNet/pull/2085) Use latest AzDO macOS pool (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2087](https://github.com/dotnet/BenchmarkDotNet/pull/2087) Nit: fix broken link (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [#2092](https://github.com/dotnet/BenchmarkDotNet/pull/2092) Use Pipes for host and benchmark process communication (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2095](https://github.com/dotnet/BenchmarkDotNet/pull/2095) [NativeAOT] use PublishAot and don't reference ILCompiler in explicit way (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2096](https://github.com/dotnet/BenchmarkDotNet/pull/2096) ExecuteResult: Surface a Data property so the full output can be acce… (by [@radical](https://github.com/radical)) -* [#2101](https://github.com/dotnet/BenchmarkDotNet/pull/2101) Added a command line arg for not inducing any GCs while running Benchmarks (by [@mrsharm](https://github.com/mrsharm)) -* [#2104](https://github.com/dotnet/BenchmarkDotNet/pull/2104) Fix invalid pre-requisites NativeAOT link in the 0.13.2 changelog (by [@KeterSCP](https://github.com/KeterSCP)) -* [#2107](https://github.com/dotnet/BenchmarkDotNet/pull/2107) Implement TryGetReferencedAddress for relative branches (by [@janvorli](https://github.com/janvorli)) -* [#2112](https://github.com/dotnet/BenchmarkDotNet/pull/2112) Disambiguate NativeAOT, and Wasm identification in BenchmarkDotNet.Po… (by [@radical](https://github.com/radical)) -* [#2116](https://github.com/dotnet/BenchmarkDotNet/pull/2116) Implement apples to apples comparison mode (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2117](https://github.com/dotnet/BenchmarkDotNet/pull/2117) PerfCollect diagnoser (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2118](https://github.com/dotnet/BenchmarkDotNet/pull/2118) Resolve indirect addresses in disassembly (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2119](https://github.com/dotnet/BenchmarkDotNet/pull/2119) Initial version of the Arm64 instruction formatter (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2120](https://github.com/dotnet/BenchmarkDotNet/pull/2120) Roslyn Toolchain does not support .NET Core (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [#2123](https://github.com/dotnet/BenchmarkDotNet/pull/2123) Added other arm64 constant form extraction plus other changes (by [@janvorli](https://github.com/janvorli)) -* [#2127](https://github.com/dotnet/BenchmarkDotNet/pull/2127) arm64 disassembler (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2132](https://github.com/dotnet/BenchmarkDotNet/pull/2132) fix: include argument and param names in --filter (by [@blouflashdb](https://github.com/blouflashdb)) -* [#2133](https://github.com/dotnet/BenchmarkDotNet/pull/2133) ensure CompositeLogger is synchronized (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2134](https://github.com/dotnet/BenchmarkDotNet/pull/2134) [Mono] Disable LLVM JIT (by [@fanyang-mono](https://github.com/fanyang-mono)) -* [#2135](https://github.com/dotnet/BenchmarkDotNet/pull/2135) Escape Param data for the exporters (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [#2136](https://github.com/dotnet/BenchmarkDotNet/pull/2136) Pass non escaped strings to generated project (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [#2137](https://github.com/dotnet/BenchmarkDotNet/pull/2137) Update doc links and reduce redirects (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [#2140](https://github.com/dotnet/BenchmarkDotNet/pull/2140) Update console title with benchmark information (by [@franciscomoloureiro](https://github.com/franciscomoloureiro)) -* [#2142](https://github.com/dotnet/BenchmarkDotNet/pull/2142) Issue 2064: Mono70 moniker (by [@Serg046](https://github.com/Serg046)) -* [#2143](https://github.com/dotnet/BenchmarkDotNet/pull/2143) throw an exception when multiple benchmark projects with the same name are found (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2144](https://github.com/dotnet/BenchmarkDotNet/pull/2144) Automated spellcheck for docs via GitHub Actions (and address all raised issues) (by [@SeanKilleen](https://github.com/SeanKilleen)) -* [#2145](https://github.com/dotnet/BenchmarkDotNet/pull/2145) Handle addresses larger than 2GB for 32-bit benchmarks #1469 (by [@leonvandermeer](https://github.com/leonvandermeer)) -* [#2148](https://github.com/dotnet/BenchmarkDotNet/pull/2148) adding validation errors when the benchmarks are unsupported (by [@emanuel-v-r](https://github.com/emanuel-v-r)) -* [#2150](https://github.com/dotnet/BenchmarkDotNet/pull/2150) Update StaThread intro documentation (by [@norepro](https://github.com/norepro)) -* [#2151](https://github.com/dotnet/BenchmarkDotNet/pull/2151) Fix user input matching (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [#2152](https://github.com/dotnet/BenchmarkDotNet/pull/2152) Make ParamsAllValues validator mandatory (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [#2154](https://github.com/dotnet/BenchmarkDotNet/pull/2154) remove dependency to Mono.Posix.NETStandard to unblock WASM benchmarks runs (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2158](https://github.com/dotnet/BenchmarkDotNet/pull/2158) Add taskbar progress (by [@timcassell](https://github.com/timcassell)) -* [#2160](https://github.com/dotnet/BenchmarkDotNet/pull/2160) Corrected logic to restore foreground color in ConsoleLogger.cs (by [@farQtech](https://github.com/farQtech)) -* [#2164](https://github.com/dotnet/BenchmarkDotNet/pull/2164) 1799 adding resume arg (by [@melias](https://github.com/melias)) -* [#2168](https://github.com/dotnet/BenchmarkDotNet/pull/2168) Fix bugs and typos (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [#2169](https://github.com/dotnet/BenchmarkDotNet/pull/2169) Issue #1736: Add ExceptionDiagnoser (by [@Serg046](https://github.com/Serg046)) -* [#2172](https://github.com/dotnet/BenchmarkDotNet/pull/2172) Cleanup NuGet.config (by [@Youssef1313](https://github.com/Youssef1313)) -* [#2174](https://github.com/dotnet/BenchmarkDotNet/pull/2174) Added the ability to not run with Evaluation Overhead (by [@mrsharm](https://github.com/mrsharm)) -* [#2175](https://github.com/dotnet/BenchmarkDotNet/pull/2175) Rename TargetCount to IterationCount in SimpleJob attribute (by [@johanvts](https://github.com/johanvts)) -* [#2176](https://github.com/dotnet/BenchmarkDotNet/pull/2176) Fix #1521 (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [#2177](https://github.com/dotnet/BenchmarkDotNet/pull/2177) Simplify GetHashCode() (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [#2180](https://github.com/dotnet/BenchmarkDotNet/pull/2180) Fix race in AsyncProcessOutputReader (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#2181](https://github.com/dotnet/BenchmarkDotNet/pull/2181) Fix #2167 - Give main page a title. Then the tab displays 'Home | Be…' (by [@leonvandermeer](https://github.com/leonvandermeer)) -* [#2182](https://github.com/dotnet/BenchmarkDotNet/pull/2182) Fix a threading issue in ExceptionDiagnoser #1736 (by [@leonvandermeer](https://github.com/leonvandermeer)) -* [#2183](https://github.com/dotnet/BenchmarkDotNet/pull/2183) Remove allowMultiple=true from column attributes (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [#2186](https://github.com/dotnet/BenchmarkDotNet/pull/2186) Fix EngineStage.Run for warmupCount=0 (fixes #2185) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#2188](https://github.com/dotnet/BenchmarkDotNet/pull/2188) Engine.Run() should return the full list of performed measurements (fixes #2187) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#2192](https://github.com/dotnet/BenchmarkDotNet/pull/2192) Add net8.0 support to all existing runtimes and toolchains (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2193](https://github.com/dotnet/BenchmarkDotNet/pull/2193) use ImmutableConfig when doing apples-to-apples comparison (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2196](https://github.com/dotnet/BenchmarkDotNet/pull/2196) Docs: Add note for ETW Profiling regarding Intel TDT (by [@rbanks54](https://github.com/rbanks54)) -* [#2200](https://github.com/dotnet/BenchmarkDotNet/pull/2200) Fix resources leak (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2201](https://github.com/dotnet/BenchmarkDotNet/pull/2201) fix WASM support (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2202](https://github.com/dotnet/BenchmarkDotNet/pull/2202) Fix job filtering (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [#2204](https://github.com/dotnet/BenchmarkDotNet/pull/2204) Deprecate RunSource/RunUrl methods (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [#2207](https://github.com/dotnet/BenchmarkDotNet/pull/2207) Avoid hangs when starting benchmark process fails (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2208](https://github.com/dotnet/BenchmarkDotNet/pull/2208) Fix Full Framework tests (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2209](https://github.com/dotnet/BenchmarkDotNet/pull/2209) Update SDK to .NET 7, re-enable tests (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2212](https://github.com/dotnet/BenchmarkDotNet/pull/2212) use the new, strong-name signed Capstone.NET (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2217](https://github.com/dotnet/BenchmarkDotNet/pull/2217) Bump Newtonsoft.Json (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [#2219](https://github.com/dotnet/BenchmarkDotNet/pull/2219) add Armv6 and Ppc64le architectures support (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2220](https://github.com/dotnet/BenchmarkDotNet/pull/2220) Remove duplicate reference (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [#2221](https://github.com/dotnet/BenchmarkDotNet/pull/2221) NuGet.org should be the default feed for NativeAOT 7.0 ILCompiler (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2222](https://github.com/dotnet/BenchmarkDotNet/pull/2222) arm64 disassembler tests (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2227](https://github.com/dotnet/BenchmarkDotNet/pull/2227) Add support for MonoVM to MemoryDiagnoser (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2228](https://github.com/dotnet/BenchmarkDotNet/pull/2228) Increase max supported affinity from 31 to 64 (#2211) (by [@Donis-](https://github.com/Donis-)) -* [#2230](https://github.com/dotnet/BenchmarkDotNet/pull/2230) Add support for .NET SDK that uses Mono instead CLR as a default VM (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2231](https://github.com/dotnet/BenchmarkDotNet/pull/2231) improve Android support (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2234](https://github.com/dotnet/BenchmarkDotNet/pull/2234) Disassembler realiability fixes (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2235](https://github.com/dotnet/BenchmarkDotNet/pull/2235) tests can't assume x64 hardware (by [@adamsitnik](https://github.com/adamsitnik)) - -## Commits (87) - -* [33b288](https://github.com/dotnet/BenchmarkDotNet/commit/33b288ff2918d31c461f0de64908f99e24a4b45e) Use latest AzDO macOS pool (#2085) (by [@adamsitnik](https://github.com/adamsitnik)) -* [83750b](https://github.com/dotnet/BenchmarkDotNet/commit/83750baceb71cb0c81a01145a5872b63bc7db858) Postrelease v0.13.2 update (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [188c11](https://github.com/dotnet/BenchmarkDotNet/commit/188c11c58b2c6a8e8a704c9a42b0a00b955e8406) Nit: fix broken link (#2087) (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [3a18b1](https://github.com/dotnet/BenchmarkDotNet/commit/3a18b185f949fc5312a19197ca70b765d1a11212) use PublishAot and don't reference ILCompiler in explicit way (#2095) (by [@adamsitnik](https://github.com/adamsitnik)) -* [8ed521](https://github.com/dotnet/BenchmarkDotNet/commit/8ed521f86303fc0613d5f82d9ffb592cafa0f8c9) Added a command line arg for not inducing any GCs while running Benchmarks (#... (by [@mrsharm](https://github.com/mrsharm)) -* [8514b2](https://github.com/dotnet/BenchmarkDotNet/commit/8514b239fea5939f888df2f976d4763a978b5784) ExecuteResult: Surface a Data property so the full output can be accessed (#2... (by [@radical](https://github.com/radical)) -* [58f2d1](https://github.com/dotnet/BenchmarkDotNet/commit/58f2d18d67e8d21b80c9ffef8301d3d924fd3e9f) Use Pipes for host and benchmark process communication (#2092) (by [@adamsitnik](https://github.com/adamsitnik)) -* [b525ba](https://github.com/dotnet/BenchmarkDotNet/commit/b525ba3d27fb4a471280256cbd9f0013c97d1281) Fix invalid pre-requisites NativeAOT links in the docs (#2104) (by [@KeterSCP](https://github.com/KeterSCP)) -* [0cee16](https://github.com/dotnet/BenchmarkDotNet/commit/0cee16960f6f5f757158a897e762917163a43ada) Disambiguate NativeAOT, and Wasm identification in BenchmarkDotNet.Portabilit... (by [@radical](https://github.com/radical)) -* [21a294](https://github.com/dotnet/BenchmarkDotNet/commit/21a29406406aeca1cdfa195fa86ac28d04ba8e33) Implement apples to apples comparison mode (#2116) (by [@adamsitnik](https://github.com/adamsitnik)) -* [37d0cf](https://github.com/dotnet/BenchmarkDotNet/commit/37d0cf5d36bc2c99822084c19e53dd4c56f28715) Roslyn Toolchain does not support .NET Core (#2120) (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [dbccef](https://github.com/dotnet/BenchmarkDotNet/commit/dbccef2dc2879a44dee983f843e991d761f6462c) Add workflows/docs-stable.yaml (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [d03287](https://github.com/dotnet/BenchmarkDotNet/commit/d03287b019f0443171de931b1330d2a129d3d91e) PerfCollect diagnoser (#2117) (by [@adamsitnik](https://github.com/adamsitnik)) -* [de5cf4](https://github.com/dotnet/BenchmarkDotNet/commit/de5cf4f56cf10fefe9345d84401ac833c30962de) Bump docfx 2.59.3->2.59.4 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [7e87e8](https://github.com/dotnet/BenchmarkDotNet/commit/7e87e825e8bfa2be4d5cbda0301b969716ea3f98) Update workflows/docs-stable.yaml (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [ff443a](https://github.com/dotnet/BenchmarkDotNet/commit/ff443adb5a03acbc42cbd9b99052c772f2bc698c) Update workflows/docs-stable.yaml (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [a78c2e](https://github.com/dotnet/BenchmarkDotNet/commit/a78c2e6a6e3db79069fb5bbbd6da6e5cbea8c029) Add write-all permissions to workflows/docs-stable.yaml (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [f4d99a](https://github.com/dotnet/BenchmarkDotNet/commit/f4d99ab7b81cccf9322fe6ae084572d8eeb9cade) arm64 disassembler (#2127) (by [@adamsitnik](https://github.com/adamsitnik)) -* [97c2d1](https://github.com/dotnet/BenchmarkDotNet/commit/97c2d14f548823206cb26db5d8316fe475ae4e52) ensure access to logger is synchronized for async output reader (#2133) (by [@adamsitnik](https://github.com/adamsitnik)) -* [9938c3](https://github.com/dotnet/BenchmarkDotNet/commit/9938c3c649fe2a9709eeafad5858e4a0eb2a5423) include argument and param names in --filter (#2132) (by [@blouflashdb](https://github.com/blouflashdb)) -* [7f9590](https://github.com/dotnet/BenchmarkDotNet/commit/7f9590afbbcf8ed7e983c39634e5915c60913d78) Update doc links and reduce redirects (#2137) (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [95bb2a](https://github.com/dotnet/BenchmarkDotNet/commit/95bb2aa2392a8541a6c815c6a9f95bafb3f56e5d) Escape Param data for the exporters (#2135) (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [ecb25b](https://github.com/dotnet/BenchmarkDotNet/commit/ecb25bf413923ac9976ced1b55223fd89f6fb664) Pass non escaped strings to generated project (#2136) (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [5ed46d](https://github.com/dotnet/BenchmarkDotNet/commit/5ed46d575ead7f3a85de5605e234f5d534f536e3) [Mono] Disable LLVM JIT (#2134) (by [@fanyang-mono](https://github.com/fanyang-mono)) -* [1f5637](https://github.com/dotnet/BenchmarkDotNet/commit/1f5637c784ad9887a2d5abdba54d1337655281b1) throw an exception when multiple benchmark projects with the same name are fo... (by [@adamsitnik](https://github.com/adamsitnik)) -* [095975](https://github.com/dotnet/BenchmarkDotNet/commit/095975f40252f265254acb517a114690674d5f5a) Handle addresses larger than 2GB for 32-bit benchmarks #1469 (#2145) (by [@leonvandermeer](https://github.com/leonvandermeer)) -* [8d2379](https://github.com/dotnet/BenchmarkDotNet/commit/8d2379626ecfa547a2e7e6eaab808785baf484cf) Update console title with benchmark information (#2140) (by [@franciscomoloureiro](https://github.com/franciscomoloureiro)) -* [f8e0a5](https://github.com/dotnet/BenchmarkDotNet/commit/f8e0a5c23883fa6ea4a975cd08a0071c4648472c) Automated spellcheck for docs via GitHub Actions (and address all raised issu... (by [@SeanKilleen](https://github.com/SeanKilleen)) -* [db8f8d](https://github.com/dotnet/BenchmarkDotNet/commit/db8f8d85db44f35af97e763b90f2ffd256eb99e0) Fix spelling warning in docs/articles/configs.jobs.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [adf9d6](https://github.com/dotnet/BenchmarkDotNet/commit/adf9d603471afd0ca14bdc9ae71c89fe8369aa00) Fix BenchmarkSwitcher user input matching (#2151) (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [b758d2](https://github.com/dotnet/BenchmarkDotNet/commit/b758d20b44e6779f1d0cbbce1e000dfe91c448b2) Update StaThread intro documentation (#2150) (by [@norepro](https://github.com/norepro)) -* [eda1a4](https://github.com/dotnet/BenchmarkDotNet/commit/eda1a412418ba59eda676cd909accbed6756eeee) remove dependency to Mono.Posix.NETStandard to unblock WASM benchmarks runs (... (by [@adamsitnik](https://github.com/adamsitnik)) -* [58d4ba](https://github.com/dotnet/BenchmarkDotNet/commit/58d4bae8996b713f21d6472702d95b21a77f79c9) Make ParamsAllValues validator mandatory (#2152) (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [28bf21](https://github.com/dotnet/BenchmarkDotNet/commit/28bf214dee0b1f6937851e6f1d09f1f5ae133df1) adding validation errors when the benchmarks are unsupported (#2148) (by [@emanuel-v-r](https://github.com/emanuel-v-r)) -* [1fb101](https://github.com/dotnet/BenchmarkDotNet/commit/1fb1015556039664451dd101b4e2ef9501e03805) Corrected logic to restore foreground color in ConsoleLogger.cs (#2160) (by [@farQtech](https://github.com/farQtech)) -* [c02c3d](https://github.com/dotnet/BenchmarkDotNet/commit/c02c3d82bbefa6236660a7b7405f38e739679daf) Fix bugs and typos (#2168) (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [0f7eb2](https://github.com/dotnet/BenchmarkDotNet/commit/0f7eb25eb4097e7926b75bf765d21a0a175a86a3) Implement --resume support (#2164), fixes #1799 (by [@melias](https://github.com/melias)) -* [7d8375](https://github.com/dotnet/BenchmarkDotNet/commit/7d83758b271d901dd0c67225fcfeea1084731ed6) Issue #1736: Add ExceptionDiagnoser (#2169) (by [@Serg046](https://github.com/Serg046)) -* [64c3a3](https://github.com/dotnet/BenchmarkDotNet/commit/64c3a3cb4ad4057b6065a2783a4b333206f8b5e5) Implement MonoVM toolchain for net6.0 and net7.0 monikers (#2142) fixes #2064 (by [@Serg046](https://github.com/Serg046)) -* [c69895](https://github.com/dotnet/BenchmarkDotNet/commit/c6989543d2e42f1bdc316d53d3e2711cc9d3aa82) Add taskbar progress (#2158) (by [@timcassell](https://github.com/timcassell)) -* [163899](https://github.com/dotnet/BenchmarkDotNet/commit/1638995e405fcfca4b6d094614a12baf20b275d1) Cleanup NuGet.config (#2172) (by [@Youssef1313](https://github.com/Youssef1313)) -* [f4c0a7](https://github.com/dotnet/BenchmarkDotNet/commit/f4c0a718201cebe169d9695bbb11ecb32e100b2d) Added the ability to not run with Evaluation Overhead from command line (#2174) (by [@mrsharm](https://github.com/mrsharm)) -* [ce1b74](https://github.com/dotnet/BenchmarkDotNet/commit/ce1b7491bde1ba897450a4d5ab7e0ee49ba67353) Rename TargetCount to IterationCount in SimpleJob attribute (#2175) (by [@johanvts](https://github.com/johanvts)) -* [18c6ff](https://github.com/dotnet/BenchmarkDotNet/commit/18c6ffdfc25ce9c94ce5e099ac659c08852789b8) Fix #1521 (#2176) (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [4eb6d3](https://github.com/dotnet/BenchmarkDotNet/commit/4eb6d385c33cbaaeb0185bb8b8e7eb8c587597c7) Bump Build.csproj TFM to net6.0 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [279c96](https://github.com/dotnet/BenchmarkDotNet/commit/279c96dd19c42422e5365508bb2d6a3258124890) Bump actions/checkout v2->v3 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [a1c62c](https://github.com/dotnet/BenchmarkDotNet/commit/a1c62cae153a4a237eef1ca63c308041e3e62f61) Bump actions/checkout v2->v3 for spellcheck.yml (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [7ba989](https://github.com/dotnet/BenchmarkDotNet/commit/7ba989292ef03cfec57a13700a7e4cd5508776ed) Automatically generate redirects in documentation (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [d55c47](https://github.com/dotnet/BenchmarkDotNet/commit/d55c47edff3962b642d4bcfe477e5494fe65165e) Remove old redirect files in documentation (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [b6d329](https://github.com/dotnet/BenchmarkDotNet/commit/b6d329d8f69dcf058791677a86c7b8277f1e0662) Bump System.Drawing.Common in BenchmarkDotNet.Samples.csproj: 4.5.1->4.7.2 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [ee8125](https://github.com/dotnet/BenchmarkDotNet/commit/ee81250d051aab59ec015518dc7a450569d9db4b) Remove allowMultiple=true from column attributes (#2183) (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [ddd2f3](https://github.com/dotnet/BenchmarkDotNet/commit/ddd2f31c9d1b6eaf6ac40d63b782977623ca74d8) Fix a threading issue in ExceptionDiagnoser #1736 (#2182) (by [@leonvandermeer](https://github.com/leonvandermeer)) -* [276f1a](https://github.com/dotnet/BenchmarkDotNet/commit/276f1add338e6a4c49053dc4809474d9ad9b91f8) Fix EngineStage.Run for warmupCount=0 (fixes #2185) (#2186) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [681a63](https://github.com/dotnet/BenchmarkDotNet/commit/681a6384f5ea62c4a88c8fd50b13e6c992b10c98) Fix #2167 - Give main page a title. Then the tab displays 'Home | BenchmarkDo... (by [@leonvandermeer](https://github.com/leonvandermeer)) -* [00f693](https://github.com/dotnet/BenchmarkDotNet/commit/00f69361f1dda1b398407b07c8f4d6af9c783f50) Fix race in AsyncProcessOutputReader (#2180) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [36e998](https://github.com/dotnet/BenchmarkDotNet/commit/36e9985b86fde72a4c1bd8003566d8a108da741d) Disable MemoryDiagnoserSupportsNativeAOT on osx-arm64 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [9e759f](https://github.com/dotnet/BenchmarkDotNet/commit/9e759f9bc5f910f4816a4eb4753fa33db6e67b72) Disable ThreadingDiagnoserTests with ILCompiler 6.0.0-rc.1.21420.1 on osx-arm64 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [e75bdd](https://github.com/dotnet/BenchmarkDotNet/commit/e75bdd8507b4c3042091dd7aee158ae0238b8d4d) Engine.Run() should return the full list of performed measurements (fixes #21... (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [28a8e7](https://github.com/dotnet/BenchmarkDotNet/commit/28a8e78a721d685696dde3fdcfc1ba0f317e11c8) Simplify GetHashCode() (#2177) (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [36f9e7](https://github.com/dotnet/BenchmarkDotNet/commit/36f9e7309630b99a86940d32862c1f6135d2bab3) Set net6.0 as the first TFM for BenchmarkDotNet.Tests (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [761590](https://github.com/dotnet/BenchmarkDotNet/commit/761590eb1a0ab813e4c53ccfa8903608ae31cb12) Add net8.0 support to all existing runtimes and toolchains (#2192) (by [@adamsitnik](https://github.com/adamsitnik)) -* [8b6159](https://github.com/dotnet/BenchmarkDotNet/commit/8b6159139280d094630db16efa4c7fc75e13c8a5) use ImmutableConfig when doing apples-to-apples comparison (#2193) (by [@adamsitnik](https://github.com/adamsitnik)) -* [a4ab68](https://github.com/dotnet/BenchmarkDotNet/commit/a4ab68f63f4185e26090ff96f41ceafef48a5d86) Docs: Add note for ETW Profiling regarding Intel TDT and Windows Defender (#2... (by [@rbanks54](https://github.com/rbanks54)) -* [9c32a8](https://github.com/dotnet/BenchmarkDotNet/commit/9c32a878f2d7bef3314e2fd4ad7bfa1048915439) fix resources leak (#2200) (by [@adamsitnik](https://github.com/adamsitnik)) -* [ad8e9b](https://github.com/dotnet/BenchmarkDotNet/commit/ad8e9b26ef22aa77abff2469f7668986e1449127) fix WASM support (#2201) (by [@adamsitnik](https://github.com/adamsitnik)) -* [ccbaf0](https://github.com/dotnet/BenchmarkDotNet/commit/ccbaf08b03b38d1d418756a9e528c60c9f4951d1) Remove duplicated jobs when creating immutable config (#2202) (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [90c82b](https://github.com/dotnet/BenchmarkDotNet/commit/90c82bb1e3188787471076a2604017103f93a361) Deprecate methods (#2204) (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [47b8b7](https://github.com/dotnet/BenchmarkDotNet/commit/47b8b7269f561b640261fdbd6259ae082eebfb38) Avoid hangs when starting benchmark process fails (#2207) (by [@adamsitnik](https://github.com/adamsitnik)) -* [7982b8](https://github.com/dotnet/BenchmarkDotNet/commit/7982b8c6500348f46ea8aa870b886f73c6f441c2) Fix Full Framework tests (#2208) (by [@adamsitnik](https://github.com/adamsitnik)) -* [61b3c5](https://github.com/dotnet/BenchmarkDotNet/commit/61b3c56d94a4f6f014bb58686f2f19f9268f99cb) Update SDK to .NET 7, re-enable NativeAOT tests, fix some other tests (#2209) (by [@adamsitnik](https://github.com/adamsitnik)) -* [d38313](https://github.com/dotnet/BenchmarkDotNet/commit/d383135825b66a99447bf4460255ed694375ca47) use the new, strong-name signed Capstone.NET (#2212) (by [@adamsitnik](https://github.com/adamsitnik)) -* [b40150](https://github.com/dotnet/BenchmarkDotNet/commit/b4015052b9e94306582d0c602c845e13eb3fa0bb) add Armv6 and Ppc64le architectures support (#2219) (by [@adamsitnik](https://github.com/adamsitnik)) -* [5ce28b](https://github.com/dotnet/BenchmarkDotNet/commit/5ce28b20ad8429caf25e1d51774569b7d9a20050) Bump Newtonsoft.Json (#2217) (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [3531c1](https://github.com/dotnet/BenchmarkDotNet/commit/3531c127d1d2521fcb5ed228c8ceb9d1eaa40872) Port JetBrains' nullability annotations and clean-up code. (#2018) (by [@teo-tsirpanis](https://github.com/teo-tsirpanis)) -* [5ef855](https://github.com/dotnet/BenchmarkDotNet/commit/5ef855a4f23338e639d70b49bdaf895cd2537870) Remove duplicate reference (#2220) (by [@YegorStepanov](https://github.com/YegorStepanov)) -* [ee24d7](https://github.com/dotnet/BenchmarkDotNet/commit/ee24d7b1671683942b364ae456a415faeabc9236) NuGet.org should be the default feed for NativeAOT 7.0 ILCompiler package (#2... (by [@adamsitnik](https://github.com/adamsitnik)) -* [530d00](https://github.com/dotnet/BenchmarkDotNet/commit/530d001aa803ab85f199816a3cb57a7775bba9ca) arm64 disassembler tests (#2222) (by [@adamsitnik](https://github.com/adamsitnik)) -* [699285](https://github.com/dotnet/BenchmarkDotNet/commit/69928565a98a26d489611a966d99e90ce52f1952) Add support for MonoVM to MemoryDiagnoser (#2227) (by [@adamsitnik](https://github.com/adamsitnik)) -* [0c90af](https://github.com/dotnet/BenchmarkDotNet/commit/0c90af71e1784f3cd304ac9fbd77f949bf991162) change something small just to triegger the CI (by [@adamsitnik](https://github.com/adamsitnik)) -* [2cce42](https://github.com/dotnet/BenchmarkDotNet/commit/2cce425a69f23b2c9a0de93ceb80c0cc915e5ec6) improve Android support (#2231) (by [@adamsitnik](https://github.com/adamsitnik)) -* [a6ef73](https://github.com/dotnet/BenchmarkDotNet/commit/a6ef739bce41e6c12e82a1866dcbf40895b3847e) don't run Long Running Test on AppVeyor, try to avoid 1h timeouts (by [@adamsitnik](https://github.com/adamsitnik)) -* [bf8b53](https://github.com/dotnet/BenchmarkDotNet/commit/bf8b53163f3937f10b5d723fff15b7c51c05f758) Increase max supported affinity from 31 to 64 (#2211) (#2228) (by [@Donis-](https://github.com/Donis-)) -* [82f03f](https://github.com/dotnet/BenchmarkDotNet/commit/82f03f4d4222dfcf4e19e1f32a47867342a680d1) Add support for .NET SDK that uses Mono instead CLR as a default VM (#2230) (by [@adamsitnik](https://github.com/adamsitnik)) -* [968448](https://github.com/dotnet/BenchmarkDotNet/commit/96844853b8c15eeed65ef8349aa9dbe47fb05248) Disassembler realiability fixes (#2234) (by [@adamsitnik](https://github.com/adamsitnik)) -* [a098bc](https://github.com/dotnet/BenchmarkDotNet/commit/a098bc1761c9157dbca5bd10ef6d08840620136e) tests can't assume x64 hardware (#2235) (by [@adamsitnik](https://github.com/adamsitnik)) -* [2665ac](https://github.com/dotnet/BenchmarkDotNet/commit/2665ac7c38f3edecbd7f593f25941eb613cbd779) Prepare v0.13.3 changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [0714f5](https://github.com/dotnet/BenchmarkDotNet/commit/0714f5f4a97bc74ff0ac5860525527c8e8825205) Set library version: 0.13.3 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (22) - -* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik)) -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* Ankit Jain ([@radical](https://github.com/radical)) -* blouflashdb ([@blouflashdb](https://github.com/blouflashdb)) -* Donis- ([@Donis-](https://github.com/Donis-)) -* Emanuel Ramos ([@emanuel-v-r](https://github.com/emanuel-v-r)) -* Fan Yang ([@fanyang-mono](https://github.com/fanyang-mono)) -* farQtech ([@farQtech](https://github.com/farQtech)) -* franciscomoloureiro ([@franciscomoloureiro](https://github.com/franciscomoloureiro)) -* Johan von Tangen Sivertsen ([@johanvts](https://github.com/johanvts)) -* leonvandermeer ([@leonvandermeer](https://github.com/leonvandermeer)) -* Maykon Elias ([@melias](https://github.com/melias)) -* Mukund Raghav Sharma (Moko) ([@mrsharm](https://github.com/mrsharm)) -* norepro ([@norepro](https://github.com/norepro)) -* Richard Banks ([@rbanks54](https://github.com/rbanks54)) -* Sean Killeen ([@SeanKilleen](https://github.com/SeanKilleen)) -* Sergey Aseev ([@Serg046](https://github.com/Serg046)) -* Sergiusz Zalewski ([@KeterSCP](https://github.com/KeterSCP)) -* Theodore Tsirpanis ([@teo-tsirpanis](https://github.com/teo-tsirpanis)) -* Tim Cassell ([@timcassell](https://github.com/timcassell)) -* Yegor Stepanov ([@YegorStepanov](https://github.com/YegorStepanov)) -* Youssef Victor ([@Youssef1313](https://github.com/Youssef1313)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.13.4.md b/docs/_changelog/details/v0.13.4.md deleted file mode 100644 index ddb6e9c248..0000000000 --- a/docs/_changelog/details/v0.13.4.md +++ /dev/null @@ -1,39 +0,0 @@ -## Milestone details - -In the [v0.13.4](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.13.4) scope, -1 issues were resolved and 4 pull requests were merged. -This release includes 9 commits by 5 contributors. - -## Resolved issues (1) - -* [#2237](https://github.com/dotnet/BenchmarkDotNet/issues/2237) Version 0.13.3 breaks LINQPad (and any non-Console application) - -## Merged pull requests (4) - -* [#2206](https://github.com/dotnet/BenchmarkDotNet/pull/2206) Add single quote when use pattern with filters (by [@erlangxk](https://github.com/erlangxk)) -* [#2218](https://github.com/dotnet/BenchmarkDotNet/pull/2218) Improve getting started guide (by [@reflectronic](https://github.com/reflectronic)) -* [#2238](https://github.com/dotnet/BenchmarkDotNet/pull/2238) Fix IOException when Console window unavailable (#2237) (by [@albahari](https://github.com/albahari)) -* [#2243](https://github.com/dotnet/BenchmarkDotNet/pull/2243) JitStatsDiagnoser (by [@adamsitnik](https://github.com/adamsitnik)) - -## Commits (9) - -* [dc7734](https://github.com/dotnet/BenchmarkDotNet/commit/dc7734d3eba06880428c0e16d287c9ca837a9d40) Postrelease v0.13.3 update (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [e04e2d](https://github.com/dotnet/BenchmarkDotNet/commit/e04e2d7d0cc4fefb954f8a8bd90b8f82100802f9) Fix IOException when Console window unavailable (#2237) (#2238) (by [@albahari](https://github.com/albahari)) -* [7694d0](https://github.com/dotnet/BenchmarkDotNet/commit/7694d0e79b7446373f893ff532b801a519f1b700) Update copyright year (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [5e8a31](https://github.com/dotnet/BenchmarkDotNet/commit/5e8a318d2243701d0141d74a6c89307149486156) Revert comments in DocFxChangelogDownloadTask (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [ea0eb2](https://github.com/dotnet/BenchmarkDotNet/commit/ea0eb2fe403cab9c1daa0e5aa6e42ab038100418) Add single quote when use pattern with filters (#2206) (by [@erlangxk](https://github.com/erlangxk)) -* [0cf185](https://github.com/dotnet/BenchmarkDotNet/commit/0cf185020583a5c5c987d064d09426edc4399a5b) Improve getting started guide (#2218) (by [@reflectronic](https://github.com/reflectronic)) -* [12bf22](https://github.com/dotnet/BenchmarkDotNet/commit/12bf220e11fddc8e65b066eb1f300b63bfde7e9b) JitStatsDiagnoser (#2243) (by [@adamsitnik](https://github.com/adamsitnik)) -* [858a86](https://github.com/dotnet/BenchmarkDotNet/commit/858a86f112ce251188b39291abe4633209a98fed) Prepare v0.13.4 changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [0dbc1f](https://github.com/dotnet/BenchmarkDotNet/commit/0dbc1fa40bbb5e9bc436f2c0db9c52244a5116f3) Set library version: 0.13.4 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (5) - -* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik)) -* albahari ([@albahari](https://github.com/albahari)) -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* erlangxk ([@erlangxk](https://github.com/erlangxk)) -* John Tur ([@reflectronic](https://github.com/reflectronic)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.13.5.md b/docs/_changelog/details/v0.13.5.md deleted file mode 100644 index ca2d480572..0000000000 --- a/docs/_changelog/details/v0.13.5.md +++ /dev/null @@ -1,54 +0,0 @@ -## Milestone details - -In the [v0.13.5](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.13.5) scope, -3 issues were resolved and 11 pull requests were merged. -This release includes 16 commits by 4 contributors. - -## Resolved issues (3) - -* [#1942](https://github.com/dotnet/BenchmarkDotNet/issues/1942) Consider changing `Consume` to not hold onto references for very long (assignee: [@timcassell](https://github.com/timcassell)) -* [#2252](https://github.com/dotnet/BenchmarkDotNet/issues/2252) msbuild binlog for the benchmark projects gets cleaned up too, making diagnosis of build impossible (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#2258](https://github.com/dotnet/BenchmarkDotNet/issues/2258) Strong name validation failed - -## Merged pull requests (11) - -* [#2178](https://github.com/dotnet/BenchmarkDotNet/pull/2178) Introduce MockToolchain (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#2191](https://github.com/dotnet/BenchmarkDotNet/pull/2191) Don't hold onto references in Consumer (by [@timcassell](https://github.com/timcassell)) -* [#2246](https://github.com/dotnet/BenchmarkDotNet/pull/2246) improve the numbers reported for Tiered JIT (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2248](https://github.com/dotnet/BenchmarkDotNet/pull/2248) Remove deprecated InProcessToolchain (by [@timcassell](https://github.com/timcassell)) -* [#2250](https://github.com/dotnet/BenchmarkDotNet/pull/2250) Add JitStatsDiagnoserAttribute (by [@KeterSCP](https://github.com/KeterSCP)) -* [#2251](https://github.com/dotnet/BenchmarkDotNet/pull/2251) UnresolvedDiagnoser needs to have an Id as well (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2254](https://github.com/dotnet/BenchmarkDotNet/pull/2254) Keep generated files when MSBuild bin log is requested (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2263](https://github.com/dotnet/BenchmarkDotNet/pull/2263) Enabled strong-named assemblies on all OS, fix #2258 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#2267](https://github.com/dotnet/BenchmarkDotNet/pull/2267) Bump Cake to 3.0.0 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#2268](https://github.com/dotnet/BenchmarkDotNet/pull/2268) simplify the MockRunner design (by [@adamsitnik](https://github.com/adamsitnik)) -* [#2269](https://github.com/dotnet/BenchmarkDotNet/pull/2269) bump SDK version to pick up .NET Runtime fix that should fix disassembler test issues (by [@adamsitnik](https://github.com/adamsitnik)) - -## Commits (16) - -* [9193d4](https://github.com/dotnet/BenchmarkDotNet/commit/9193d45c89516d9cf8036fe0393f5589c17aa502) Postrelease v0.13.4 update (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [7b1f29](https://github.com/dotnet/BenchmarkDotNet/commit/7b1f29c041e12ed01c1a4331a6572bda4b912c2a) Set net7.0 as primary TFM for BenchmarkDotNet.Samples (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [86f212](https://github.com/dotnet/BenchmarkDotNet/commit/86f212b79e297d87d3942e4c50130fe6e214f3c8) Support macOS 13 (Ventura) in OsBrandStringHelper (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [0c2699](https://github.com/dotnet/BenchmarkDotNet/commit/0c26996ea685a99068aca71e7ae547b0851d3c64) Support Windows 22H2 in OsBrandStringHelper (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [e715d5](https://github.com/dotnet/BenchmarkDotNet/commit/e715d5bb63984fca65120d9a497f7d16395f9e5b) improve JitStatsDiagnoser based on feedback from @kouvel (#2246) (by [@adamsitnik](https://github.com/adamsitnik)) -* [a992b5](https://github.com/dotnet/BenchmarkDotNet/commit/a992b57490e844acf587bc2e01b08a7040dbc8e2) UnresolvedDiagnoser needs to have an Id as well, otherwise CompositeDiagnoser... (by [@adamsitnik](https://github.com/adamsitnik)) -* [512413](https://github.com/dotnet/BenchmarkDotNet/commit/512413ceb24077154bdf6d6306138accffe64c7a) Add JitStatsDiagnoserAttribute (#2250) (by [@KeterSCP](https://github.com/KeterSCP)) -* [5cd288](https://github.com/dotnet/BenchmarkDotNet/commit/5cd288996ca13292fcf638be299c097a600aea7b) Enabled strong-named assemblies on all OS, fix #2258 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [615384](https://github.com/dotnet/BenchmarkDotNet/commit/615384d2553434d7f35c03ab3174d761f82c6c2d) Removed deprecated InProcessToolchain. (#2248) (by [@timcassell](https://github.com/timcassell)) -* [d3fbc0](https://github.com/dotnet/BenchmarkDotNet/commit/d3fbc03d6dabeb52f23c6b7e50287150e66957cc) Keep generated files when MSBuild bin log is requested (#2254) (by [@adamsitnik](https://github.com/adamsitnik)) -* [ff5dbe](https://github.com/dotnet/BenchmarkDotNet/commit/ff5dbe662478f547e4be8d734eaeb6a106f40875) Don't hold onto references in Consumer (#2191) (by [@timcassell](https://github.com/timcassell)) -* [59e17f](https://github.com/dotnet/BenchmarkDotNet/commit/59e17fc30b85439072dd070007a308be9fe67c18) Bump Cake: 2.0.0->3.0.0 (#2267) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [f76c68](https://github.com/dotnet/BenchmarkDotNet/commit/f76c6829826518f43b4e79d26d34a2133109bd61) Introduce MockToolchain (#2178) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [9e88e4](https://github.com/dotnet/BenchmarkDotNet/commit/9e88e47a63836132ae1f8a0d816a9c21b83d7878) bump SDK version to pick up .NET Runtime fix that should fix disassembler tes... (by [@adamsitnik](https://github.com/adamsitnik)) -* [e2593c](https://github.com/dotnet/BenchmarkDotNet/commit/e2593ccbc8d81beeaa3aebafd41394a317721c04) Prepare v0.13.5 changelog (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [ec962b](https://github.com/dotnet/BenchmarkDotNet/commit/ec962b0bd6854c991d7a3ebd77037579165acb36) Set library version: 0.13.5 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (4) - -* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik)) -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* Sergiusz Zalewski ([@KeterSCP](https://github.com/KeterSCP)) -* Tim Cassell ([@timcassell](https://github.com/timcassell)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.7.0.md b/docs/_changelog/details/v0.7.0.md deleted file mode 100644 index 45ca3a5e34..0000000000 --- a/docs/_changelog/details/v0.7.0.md +++ /dev/null @@ -1,81 +0,0 @@ -## Milestone details - -In the [v0.7.0](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.7.0) scope, -0 issues were resolved and 0 pull requests were merged. -This release includes 59 commits by 2 contributors. - -## Resolved issues (0) - - -## Merged pull requests (0) - - -## Commits (59) - -* [7f1c49](https://github.com/dotnet/BenchmarkDotNet/commit/7f1c491b892faf861adccc2c3c3c2b3d2befdb14) Add ShiftVsMultiplyBenchmark (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [21298c](https://github.com/dotnet/BenchmarkDotNet/commit/21298c52e4051567098c5a22e148867acee1c03f) Renaming (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [86aada](https://github.com/dotnet/BenchmarkDotNet/commit/86aadad9d7b3104186b305f984ac61d9fe4afd1e) Add ReverseSortProgram (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [5830ef](https://github.com/dotnet/BenchmarkDotNet/commit/5830ef2293802c4a62b15649d9b341b18e2994e4) Add MakeRefVsBoxingProgram (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [fe121e](https://github.com/dotnet/BenchmarkDotNet/commit/fe121ea83f5afee4c66b0645314f4154707b1010) Automatic adjustment WarmUpIterationCount (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [d3dd9c](https://github.com/dotnet/BenchmarkDotNet/commit/d3dd9c76d9af3b3681aa067845c524b761585082) Improved console output (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [5e5df2](https://github.com/dotnet/BenchmarkDotNet/commit/5e5df2b5db6acb2a6c4ad4a807c91d518306e881) Update IncrementProgram (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [dca61d](https://github.com/dotnet/BenchmarkDotNet/commit/dca61d5dad27d65b372da873ac1866e93bf87db4) Change Average statistic to Median (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [9d57e6](https://github.com/dotnet/BenchmarkDotNet/commit/9d57e694cfaa69df82ebd46011752937ab677287) Update README.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [7cca77](https://github.com/dotnet/BenchmarkDotNet/commit/7cca7715b90bf6f911d7f1c379e91f5691a441b1) StaticFieldProgram -> ArrayIterationProgram (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [e02906](https://github.com/dotnet/BenchmarkDotNet/commit/e02906734b09825bb7222a797f4a0f68577410e0) Add ForeachArray and ForeachList programs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [8e3f6e](https://github.com/dotnet/BenchmarkDotNet/commit/8e3f6e94a26ddb2f979b04dfe0e72e99f05ab7a1) Add StandardDeviation calculation (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [8b0c50](https://github.com/dotnet/BenchmarkDotNet/commit/8b0c505002683d2168fc44c4cd51f3c1ab3a22cf) Add BenchmarkSettings singleton with DetailedMode property (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [eae5bf](https://github.com/dotnet/BenchmarkDotNet/commit/eae5bf127fac077bbd5409f2ee7a676f151e4af8) Add useful arguments for console application (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [6f15f0](https://github.com/dotnet/BenchmarkDotNet/commit/6f15f000ba6a165bd468fb801454cf2026684142) Update README.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [c1c44b](https://github.com/dotnet/BenchmarkDotNet/commit/c1c44b3e4eedaf29cea76aa626974ea94157ff90) Add StackFrameProgram (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [bbc6e7](https://github.com/dotnet/BenchmarkDotNet/commit/bbc6e76035a62b5b80038c6c2a84545d755d551b) Update StackFrameProgram (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [5f8121](https://github.com/dotnet/BenchmarkDotNet/commit/5f8121690c6711acf94851950b1de5d295e4e3b0) Set version number and add NuGet package metadata (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [9425cb](https://github.com/dotnet/BenchmarkDotNet/commit/9425cb813fef1d2f0ff8c0d75b248542a5f3d149) Add ProcessorAffinity to settings (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [bcc037](https://github.com/dotnet/BenchmarkDotNet/commit/bcc037bd28eb7fc4154558760199bb9376c16f7c) Add single result benchmark mode (--single) and disable warmup mode (--disabl... (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [4ce0b4](https://github.com/dotnet/BenchmarkDotNet/commit/4ce0b4ea5999bd17979b67cc56d6e796b793367d) Add build.bat for Benchmarks project (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [69fbc7](https://github.com/dotnet/BenchmarkDotNet/commit/69fbc710b87b8b2d7160dcc2ad30ed2c308fb82e) Add --output-file option (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [df2092](https://github.com/dotnet/BenchmarkDotNet/commit/df209203de1d08f886b57d8e11ae4c0b5f6da09f) Update build system (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [addd25](https://github.com/dotnet/BenchmarkDotNet/commit/addd251b6079b64b494b3a18ce0aae882824eb2f) Update run.bat (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [b5c154](https://github.com/dotnet/BenchmarkDotNet/commit/b5c154dd88514975af8b8bb611cd30b9e25dd251) Add Mono support to run.bat (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [a4b42a](https://github.com/dotnet/BenchmarkDotNet/commit/a4b42a230c5cc229483e3b4bdb814b6b8c8360ab) Update build system (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [65bbf7](https://github.com/dotnet/BenchmarkDotNet/commit/65bbf7fb990db2e48561bc81602d4b3331b8330c) Benchmarks: add support of selecting target program via number (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [d4317b](https://github.com/dotnet/BenchmarkDotNet/commit/d4317b4a5ea7de695fe07afdcf2ad6b5042d7023) Add MedianTicks to CompetitionResult report in DetailedMode fixed #1 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [3999e0](https://github.com/dotnet/BenchmarkDotNet/commit/3999e05be173fb41ad9628c75227222ce7ff5209) Update README.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [bd7452](https://github.com/dotnet/BenchmarkDotNet/commit/bd74527fe767b71e29f6fc59138eea93d5b65eb3) Update EnvironmentTickCount hack (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [cf7aa6](https://github.com/dotnet/BenchmarkDotNet/commit/cf7aa6840f65c88babd814683e1b6989b732e6f0) Add CultureInfo setting (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [16bb5e](https://github.com/dotnet/BenchmarkDotNet/commit/16bb5e29899e9e63f399e2d18702b638f0b12eb6) Set BenchmarkDotNet version: 0.5.1 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [07cf52](https://github.com/dotnet/BenchmarkDotNet/commit/07cf528a14fba43a187aa41709505d150a54b511) Add CompetitionBase: now competitions can be created in form of unit tests. (by [@mijay](https://github.com/mijay)) -* [284b78](https://github.com/dotnet/BenchmarkDotNet/commit/284b78e97da6bed3326b6b89d222c85f0795d1a6) Full refactoring (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [2943d9](https://github.com/dotnet/BenchmarkDotNet/commit/2943d9a210f813e2bd8c6d6d77559822446ea842) Add BenchmarkDotNet.Samples project (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [572483](https://github.com/dotnet/BenchmarkDotNet/commit/572483056acbf6134e5b4c67c426df4b84ffb043) Merge branch 'dev' (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [324d99](https://github.com/dotnet/BenchmarkDotNet/commit/324d99e8fb49dc93969fe16250834c14143f3ad2) Remove ReflectionVsExpressionCompetition (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [ce5c67](https://github.com/dotnet/BenchmarkDotNet/commit/ce5c678e52ca4364c872b40dfbbc226572227e12) Add CacheConsiousBinarySearchCompetition (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [ba8725](https://github.com/dotnet/BenchmarkDotNet/commit/ba8725add74c8c439318d6244bc07f892f05668e) Add SelectVsConvertAllCompetition (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [60b002](https://github.com/dotnet/BenchmarkDotNet/commit/60b002a6fb0f9a7d7cc4efa9d0c98935272b3ebf) Set BenchmarkDotNet version: 0.5.2 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [3a4213](https://github.com/dotnet/BenchmarkDotNet/commit/3a4213ed8d994df1ba3cd4c233083a0c911107d2) Fix in GetBenchmarkMethodClean (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [73ee56](https://github.com/dotnet/BenchmarkDotNet/commit/73ee5649b72d250b9b1ed1440a93e5c60773abf7) Add BitCountCompetition (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [72836a](https://github.com/dotnet/BenchmarkDotNet/commit/72836ae80fd38205ae93863a28ef22d03644b2a1) Add missed Clean in BenchmarkCompetitionTask, Fixed #4 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [1258cb](https://github.com/dotnet/BenchmarkDotNet/commit/1258cb4a27c8ac3723a72fb44c05d103da4b277d) Big refactoring (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [03bf14](https://github.com/dotnet/BenchmarkDotNet/commit/03bf14cffca1dc1492c3640d351e508c347f3467) Attributes renaming (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [98a3cd](https://github.com/dotnet/BenchmarkDotNet/commit/98a3cd91ed34e70c83df7d6685e5baef442af76d) Improved environment info (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [fe6e4e](https://github.com/dotnet/BenchmarkDotNet/commit/fe6e4efd7e4750bd2a4302cf86287223cb83e178) New benchmarks: ArrayBoundEliminationCompetition, InstructionLevelParallelism... (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [c89054](https://github.com/dotnet/BenchmarkDotNet/commit/c890546c8effa28affa6334bc84e4c9ec8c95a05) Fix in EnvironmentHelper.GetConfiguration() (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [90d260](https://github.com/dotnet/BenchmarkDotNet/commit/90d260b505e432521181605381383eb8afb49ff7) Add icon (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [beb681](https://github.com/dotnet/BenchmarkDotNet/commit/beb6818e09e4a254750f3a722ecb4b1e5e529812) Improved WarmUp (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [7a63b6](https://github.com/dotnet/BenchmarkDotNet/commit/7a63b6b0250458f8f054d7e4b3a3a7d867d0ea9e) Big refactoring (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [8197e5](https://github.com/dotnet/BenchmarkDotNet/commit/8197e5a61fa51f14f72f2b07eb10fd81b19c17ef) Update samples (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [c8d348](https://github.com/dotnet/BenchmarkDotNet/commit/c8d34850a80f17fb206d528588ab57c2548d337f) Add BenchmarkProperties (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [97c73a](https://github.com/dotnet/BenchmarkDotNet/commit/97c73a22e20888564fe2269b55ee446727a72c80) Update Cpu_InstructionLevelParallelism (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [957714](https://github.com/dotnet/BenchmarkDotNet/commit/957714753aef9e169e4738b46fd1d73fdcbebdf3) Small fixes (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [fdf4dd](https://github.com/dotnet/BenchmarkDotNet/commit/fdf4dd54c47b8f689d349b20379e48cac94698a4) Update README (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [8ac1ab](https://github.com/dotnet/BenchmarkDotNet/commit/8ac1ab6699dd24ff3dfb21117888a381b7df67f2) Merge branch 'big-refactoring' (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [18a256](https://github.com/dotnet/BenchmarkDotNet/commit/18a256823b4e74ae4499d18b2129c83c1d4af476) Small fixes (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [20df13](https://github.com/dotnet/BenchmarkDotNet/commit/20df13026fd377a188653cdd68889ac1b14ec2e8) NuGet version: 0.7.0 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (2) - -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* Mitya Kononchuk ([@mijay](https://github.com/mijay)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.7.1.md b/docs/_changelog/details/v0.7.1.md deleted file mode 100644 index f2250db599..0000000000 --- a/docs/_changelog/details/v0.7.1.md +++ /dev/null @@ -1,25 +0,0 @@ -## Milestone details - -In the [v0.7.1](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.7.1) scope, -0 issues were resolved and 0 pull requests were merged. -This release includes 4 commits by 1 contributors. - -## Resolved issues (0) - - -## Merged pull requests (0) - - -## Commits (4) - -* [b2bc76](https://github.com/dotnet/BenchmarkDotNet/commit/b2bc76b1277e6b84ae7b93af5b396dd9dd18c5c0) A bugfix (MSBuild fail case) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [ce7f58](https://github.com/dotnet/BenchmarkDotNet/commit/ce7f58d789ad92d90aa923943e8f71f74c5dbc40) Improved SingleRun (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [295cc2](https://github.com/dotnet/BenchmarkDotNet/commit/295cc26843191c28c88395d536ec512517403897) Current values for JitVersion, Platform, and Framework (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [744eba](https://github.com/dotnet/BenchmarkDotNet/commit/744eba0df4595d137471f67d322d2a507094fef7) Set library version: 0.7.1 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (1) - -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.7.2.md b/docs/_changelog/details/v0.7.2.md deleted file mode 100644 index 5b49dd7981..0000000000 --- a/docs/_changelog/details/v0.7.2.md +++ /dev/null @@ -1,23 +0,0 @@ -## Milestone details - -In the [v0.7.2](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.7.2) scope, -0 issues were resolved and 0 pull requests were merged. -This release includes 2 commits by 1 contributors. - -## Resolved issues (0) - - -## Merged pull requests (0) - - -## Commits (2) - -* [19f1e2](https://github.com/dotnet/BenchmarkDotNet/commit/19f1e27adf7633fe56b851d6c1f3e1881434b572) Add templates for BenchmarkProjectGenerator (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [043c04](https://github.com/dotnet/BenchmarkDotNet/commit/043c049ab15a51dd340e3f2a27ee87c9579d9ea5) v0.7.2: BenchmarkMode.Throughput, OperationCountAttribute, minor improvements... (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (1) - -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.7.3.md b/docs/_changelog/details/v0.7.3.md deleted file mode 100644 index faaa2c9702..0000000000 --- a/docs/_changelog/details/v0.7.3.md +++ /dev/null @@ -1,22 +0,0 @@ -## Milestone details - -In the [v0.7.3](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.7.3) scope, -0 issues were resolved and 0 pull requests were merged. -This release includes 1 commits by 1 contributors. - -## Resolved issues (0) - - -## Merged pull requests (0) - - -## Commits (1) - -* [42e13b](https://github.com/dotnet/BenchmarkDotNet/commit/42e13b060f63e60f1a7eb8628523611858a34179) v0.7.3: Small bug fixes (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (1) - -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.7.4.md b/docs/_changelog/details/v0.7.4.md deleted file mode 100644 index e85103b1e5..0000000000 --- a/docs/_changelog/details/v0.7.4.md +++ /dev/null @@ -1,23 +0,0 @@ -## Milestone details - -In the [v0.7.4](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.7.4) scope, -0 issues were resolved and 0 pull requests were merged. -This release includes 2 commits by 1 contributors. - -## Resolved issues (0) - - -## Merged pull requests (0) - - -## Commits (2) - -* [c5e924](https://github.com/dotnet/BenchmarkDotNet/commit/c5e924a24a60a77c91ca3f8d93b627c0b11e4d1b) Update README (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [641c95](https://github.com/dotnet/BenchmarkDotNet/commit/641c95140834aa726c39b19bc98b932bd3abcb61) v0.7.4: New benchmark Invoker, new samples, refactoring, minor fixes (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (1) - -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.7.5.md b/docs/_changelog/details/v0.7.5.md deleted file mode 100644 index 93eac2b785..0000000000 --- a/docs/_changelog/details/v0.7.5.md +++ /dev/null @@ -1,25 +0,0 @@ -## Milestone details - -In the [v0.7.5](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.7.5) scope, -0 issues were resolved and 0 pull requests were merged. -This release includes 4 commits by 1 contributors. - -## Resolved issues (0) - - -## Merged pull requests (0) - - -## Commits (4) - -* [957a01](https://github.com/dotnet/BenchmarkDotNet/commit/957a012aa5a51950e55535210b3886cf3341d1c3) Update samples (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [118e2f](https://github.com/dotnet/BenchmarkDotNet/commit/118e2f0de5308a8fac33816c9a5fc4ab6db43512) Add the Cpu_Ilp_RyuJit sample (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [b7e564](https://github.com/dotnet/BenchmarkDotNet/commit/b7e56469e71ee36a927e203263d73b820b4cd50c) Update copyrights (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [b6cce3](https://github.com/dotnet/BenchmarkDotNet/commit/b6cce3cb051f1d0a4ae1be93fe5b50e307db902e) v0.7.5: Improved project building (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (1) - -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.7.6.md b/docs/_changelog/details/v0.7.6.md deleted file mode 100644 index 26272292fb..0000000000 --- a/docs/_changelog/details/v0.7.6.md +++ /dev/null @@ -1,34 +0,0 @@ -## Milestone details - -In the [v0.7.6](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.7.6) scope, -0 issues were resolved and 0 pull requests were merged. -This release includes 9 commits by 5 contributors. - -## Resolved issues (0) - - -## Merged pull requests (0) - - -## Commits (9) - -* [8e9942](https://github.com/dotnet/BenchmarkDotNet/commit/8e9942f273ca9f784a4b394ad8dc4da16014a85e) Update README.md (by [@NN---](https://github.com/NN---)) -* [51ef26](https://github.com/dotnet/BenchmarkDotNet/commit/51ef267bd77071e23062ec3d10409d7a5161a61e) Merge pull request #11 from NN---/patch-2 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [db8791](https://github.com/dotnet/BenchmarkDotNet/commit/db87912cda079e861f338bb3670822f028defaa6) Fixed link to samples. (by [@redknightlois](https://github.com/redknightlois)) -* [14ddf4](https://github.com/dotnet/BenchmarkDotNet/commit/14ddf43d19ad3ceb7e2f7752413579b0a6f43e1d) Merge pull request #12 from redknightlois/patch-1 (by [@mattwarren](https://github.com/mattwarren)) -* [d70b4c](https://github.com/dotnet/BenchmarkDotNet/commit/d70b4cd339c3c40a3a1f7b996b4004ba59c25ff4) Accessibility and genericness checks added for benchmark methods. (by [@krk](https://github.com/krk)) -* [04ce12](https://github.com/dotnet/BenchmarkDotNet/commit/04ce12b5a0c73a976482fda7ec6cc23e48bf6e75) Benchmark methods defined in nested classes are supported. (by [@krk](https://github.com/krk)) -* [a5caba](https://github.com/dotnet/BenchmarkDotNet/commit/a5cabaa19330dec2961d906ef75a9ff0d8586a8c) Improvements in log parser (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [d750b9](https://github.com/dotnet/BenchmarkDotNet/commit/d750b90b6ae7f749be85a1f0768dc20443462917) Merge pull request #13 from krk/master (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [eab4bd](https://github.com/dotnet/BenchmarkDotNet/commit/eab4bdcb7eb4994db77181c7817e67dcccad6280) Set library version: 0.7.6 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (5) - -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* Federico Andres Lois ([@redknightlois](https://github.com/redknightlois)) -* Kerem Kat ([@krk](https://github.com/krk)) -* Matt Warren ([@mattwarren](https://github.com/mattwarren)) -* NN ([@NN---](https://github.com/NN---)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.7.7.md b/docs/_changelog/details/v0.7.7.md deleted file mode 100644 index b43ac0ad2a..0000000000 --- a/docs/_changelog/details/v0.7.7.md +++ /dev/null @@ -1,36 +0,0 @@ -## Milestone details - -In the [v0.7.7](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.7.7) scope, -0 issues were resolved and 0 pull requests were merged. -This release includes 14 commits by 2 contributors. - -## Resolved issues (0) - - -## Merged pull requests (0) - - -## Commits (14) - -* [c94525](https://github.com/dotnet/BenchmarkDotNet/commit/c94525022406551aea7de0bade3f0f5597c6f7ae) Add Cpu_BranchPerdictor (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [44cbb0](https://github.com/dotnet/BenchmarkDotNet/commit/44cbb0a44a9a0495ac134c8cd238fb0d79373f0b) Add Algo_Md5VsSha256 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [4d789c](https://github.com/dotnet/BenchmarkDotNet/commit/4d789cf3efccdf99fd6507e83422df4dc47e1db1) Most significant bit and bool to int conversions. (by [@redknightlois](https://github.com/redknightlois)) -* [09446b](https://github.com/dotnet/BenchmarkDotNet/commit/09446bc672c443f375eed3996ae37e0c2390c6e2) Updated to avoid using an array. (by [@redknightlois](https://github.com/redknightlois)) -* [b16153](https://github.com/dotnet/BenchmarkDotNet/commit/b16153dcf39713b5fd6f2e784a327d2fb48f990b) Fixed a bug where converting a bool to int instead to byte (which is the nati... (by [@redknightlois](https://github.com/redknightlois)) -* [52acca](https://github.com/dotnet/BenchmarkDotNet/commit/52acca1c5cc0cf7eb408c8ccb4223c2973ba8fe2) Merge pull request #15 from redknightlois/master (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [66cce4](https://github.com/dotnet/BenchmarkDotNet/commit/66cce477d016979cde3203d5f7125710cffdf4a4) Fix troubles with inlining (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [a8e641](https://github.com/dotnet/BenchmarkDotNet/commit/a8e6411c47ed65dcd122155efbe9b56df158a245) Fixes in Jit_BoolToInt (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [cfbb88](https://github.com/dotnet/BenchmarkDotNet/commit/cfbb88bbd8b9e8123718a610e21cda4191f5a26c) Rename task parameters: Current -> Host (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [209b4f](https://github.com/dotnet/BenchmarkDotNet/commit/209b4f429854bd884cc1c9e7605d4b3d02f6de53) Rename Task to BenchmarkTask, fix #9 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [74be9d](https://github.com/dotnet/BenchmarkDotNet/commit/74be9dfe6954698447fffb0e835217a5728021fc) Fix typos (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [adc6c2](https://github.com/dotnet/BenchmarkDotNet/commit/adc6c232a2b12360282930f858965a864af68a4d) Fix Intro_01_MethodTasks (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [438042](https://github.com/dotnet/BenchmarkDotNet/commit/438042ca6b718ef1b9ac99f609632dd1007b8583) Add BenchmarkRunner.RunUrl (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [72d606](https://github.com/dotnet/BenchmarkDotNet/commit/72d606d2eae5a5b87372750438e3afc39bce38d1) Set library version: 0.7.7 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (2) - -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* Federico Andres Lois ([@redknightlois](https://github.com/redknightlois)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.7.8.md b/docs/_changelog/details/v0.7.8.md deleted file mode 100644 index d2bb46d1d1..0000000000 --- a/docs/_changelog/details/v0.7.8.md +++ /dev/null @@ -1,61 +0,0 @@ -## Milestone details - -In the [v0.7.8](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.7.8) scope, -0 issues were resolved and 0 pull requests were merged. -This release includes 36 commits by 5 contributors. - -## Resolved issues (0) - - -## Merged pull requests (0) - - -## Commits (36) - -* [6ede76](https://github.com/dotnet/BenchmarkDotNet/commit/6ede76aa0ff75d78f6c00d8ea185406e3974f159) Reporting: better number formats for ops/sec. (by [@ppanyukov](https://github.com/ppanyukov)) -* [118bc9](https://github.com/dotnet/BenchmarkDotNet/commit/118bc92c2b46f78cbae709892a329c16562e7b24) Merge pull request #17 from ppanyukov/feature/report-num-align (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [994cbc](https://github.com/dotnet/BenchmarkDotNet/commit/994cbc0ebac965869e68474782ec0a4d7aa30435) Markdown friendly reporting (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [91bbb4](https://github.com/dotnet/BenchmarkDotNet/commit/91bbb4b0c4ea6609a2cd57c0b64c9fa7662224e6) Reporting: use fixed precision for AvrTime and StdDev. (by [@ppanyukov](https://github.com/ppanyukov)) -* [e9b8fe](https://github.com/dotnet/BenchmarkDotNet/commit/e9b8fe16365c0ff94c98ef4a4a9ed1d1036e641b) Merge pull request #18 from ppanyukov/feature/report-num-align (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [121c3d](https://github.com/dotnet/BenchmarkDotNet/commit/121c3d89a72aede0b04ee352be4fc2f4f1b45539) Reporting: uniform time units across all benchmarks. (by [@ppanyukov](https://github.com/ppanyukov)) -* [1cb520](https://github.com/dotnet/BenchmarkDotNet/commit/1cb5207e57c01d6eb499107c1edff3f9afc7f613) Merge pull request #21 from ppanyukov/feature/report-num-align (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [a4f53e](https://github.com/dotnet/BenchmarkDotNet/commit/a4f53e07336f06617474e16a87d722e96369d418) Reporting: refactor use of BenchmarkTimeSpan. (by [@ppanyukov](https://github.com/ppanyukov)) -* [7fbf63](https://github.com/dotnet/BenchmarkDotNet/commit/7fbf6368826fca8c9cfa576614b69257f9e432ba) Merge pull request #24 from ppanyukov/feature/report-num-align (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [c8c893](https://github.com/dotnet/BenchmarkDotNet/commit/c8c893f20930104b3084329630e6830be6518a8f) message for Obsolete warning which tells what to use now + updated README (by [@adamsitnik](https://github.com/adamsitnik)) -* [b48756](https://github.com/dotnet/BenchmarkDotNet/commit/b4875650123929bf0e890690cfadb195977953ef) Merge pull request #26 from adamsitnik/master (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [36f849](https://github.com/dotnet/BenchmarkDotNet/commit/36f8492e08790de12e5cd92d7c0e9107ede2e472) Add Jit_RegistersVsStack (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [32cafc](https://github.com/dotnet/BenchmarkDotNet/commit/32cafc70897c92239b0d354604811c753a3df607) Allow a [Setup] method to be used on Benchmarks (by [@mattwarren](https://github.com/mattwarren)) -* [8a14a8](https://github.com/dotnet/BenchmarkDotNet/commit/8a14a8c5f664d5f31ae83ab04aec7b1d7cd80feb) Missed out of last commit (by [@mattwarren](https://github.com/mattwarren)) -* [0103b7](https://github.com/dotnet/BenchmarkDotNet/commit/0103b72744c12049ef73116d4fb9306327b5db28) Integration tests for [Setup] method closes #23, closes #7 (by [@mattwarren](https://github.com/mattwarren)) -* [1e7c25](https://github.com/dotnet/BenchmarkDotNet/commit/1e7c255712996aac49caf35ffaa094898b82b682) Display MSBuild errors in the console output, see #22 (by [@mattwarren](https://github.com/mattwarren)) -* [876303](https://github.com/dotnet/BenchmarkDotNet/commit/876303721cb585cfedce66730d9ffc36dd7e26c0) Added new benchmark for Stopwatch v DateTime (by [@mattwarren](https://github.com/mattwarren)) -* [e5f748](https://github.com/dotnet/BenchmarkDotNet/commit/e5f7484f4d0f7acd9a23d91cbcc6615c8fa8154b) New ReportExporter system (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [e0fdbc](https://github.com/dotnet/BenchmarkDotNet/commit/e0fdbcebda9fbc6898becd15ed158b65f1f961ee) Add BenchmarkDotNet.Visualizer (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [954d08](https://github.com/dotnet/BenchmarkDotNet/commit/954d08d83d240bc872d947894e728c268187a641) Fix bug in op/s reporting (by [@mattwarren](https://github.com/mattwarren)) -* [d9dcf4](https://github.com/dotnet/BenchmarkDotNet/commit/d9dcf410d66b205e03b78d3f5a0634745732816c) Tidying up BenchmarkDotNet.Samples layout see #29 (by [@mattwarren](https://github.com/mattwarren)) -* [7abb1b](https://github.com/dotnet/BenchmarkDotNet/commit/7abb1b630a111f6f88ecbb407f2e3d07b7a42646) Making Visualizer samples point to the new location (see #29) (by [@mattwarren](https://github.com/mattwarren)) -* [96d5b9](https://github.com/dotnet/BenchmarkDotNet/commit/96d5b90655b4285bc7f8c14f7e8cb1796811a6ef) Speed up the integration tests, closes #23 (by [@mattwarren](https://github.com/mattwarren)) -* [2568a1](https://github.com/dotnet/BenchmarkDotNet/commit/2568a133b0b4641016b0af4d1b33202e9c8c532a) Initial work on Params attribute (see #8) (by [@mattwarren](https://github.com/mattwarren)) -* [47fad8](https://github.com/dotnet/BenchmarkDotNet/commit/47fad81c3b417422331919c39ef010290381998f) Ensure Benchmarks with Params show up properly in Reports (by [@mattwarren](https://github.com/mattwarren)) -* [36e060](https://github.com/dotnet/BenchmarkDotNet/commit/36e0608e8cfbc7ab9d95c6c02c2c0f21e45f08c7) Integration tests and sample for Params attribute (by [@mattwarren](https://github.com/mattwarren)) -* [76ad88](https://github.com/dotnet/BenchmarkDotNet/commit/76ad88e34b7397f57fdd6261a020088687d8bf30) Fixing some spelling mistakes (by [@mattwarren](https://github.com/mattwarren)) -* [81e6eb](https://github.com/dotnet/BenchmarkDotNet/commit/81e6eb8e7af679aee7870af15b5a525d1d2b302c) Update BenchmarkProgram.txt (by [@mattwarren](https://github.com/mattwarren)) -* [4008cf](https://github.com/dotnet/BenchmarkDotNet/commit/4008cfd8acdff6800916383442e1fa8be1519a02) Merge pull request #32 from PerfDotNet/mattwarren-exception-handling (by [@mattwarren](https://github.com/mattwarren)) -* [9e893e](https://github.com/dotnet/BenchmarkDotNet/commit/9e893ed7caa1f9bde21ed92e50d3da6ea47e995c) Statistic improvements (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [9ce9f9](https://github.com/dotnet/BenchmarkDotNet/commit/9ce9f9881052045238eec1e906c4a47e7f135ad3) Ensure that Params attribute can work with static fields/properties (by [@mattwarren](https://github.com/mattwarren)) -* [7c3782](https://github.com/dotnet/BenchmarkDotNet/commit/7c37825b23ba5cf25b2285c4fbe1b0d5971c5ea6) Update README.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [5a1783](https://github.com/dotnet/BenchmarkDotNet/commit/5a1783bc18906cdac2eee0f446a904514d571bd9) Update Array_HeapAllocVsStackAlloc.cs (by [@mattwarren](https://github.com/mattwarren)) -* [50ff16](https://github.com/dotnet/BenchmarkDotNet/commit/50ff167ae93826b4f2c756a69938f8397c9f6392) Allow just number param in RunCompetitions. (by [@vkkoshelev](https://github.com/vkkoshelev)) -* [04c306](https://github.com/dotnet/BenchmarkDotNet/commit/04c3067fc122cbe8e4ce9f73f74fc610b93410e0) Merge pull request #34 from vedun-z/master (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [a630dc](https://github.com/dotnet/BenchmarkDotNet/commit/a630dca6953f0c538b802a71feb415d9deab75dd) Set library version: 0.7.8 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (5) - -* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik)) -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* Matt Warren ([@mattwarren](https://github.com/mattwarren)) -* Philip Panyukov ([@ppanyukov](https://github.com/ppanyukov)) -* vkkoshelev ([@vkkoshelev](https://github.com/vkkoshelev)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.8.0.md b/docs/_changelog/details/v0.8.0.md deleted file mode 100644 index 5dc20b8998..0000000000 --- a/docs/_changelog/details/v0.8.0.md +++ /dev/null @@ -1,92 +0,0 @@ -## Milestone details - -In the [v0.8.0](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.8.0) scope, -0 issues were resolved and 0 pull requests were merged. -This release includes 67 commits by 5 contributors. - -## Resolved issues (0) - - -## Merged pull requests (0) - - -## Commits (67) - -* [042631](https://github.com/dotnet/BenchmarkDotNet/commit/0426315738e7ff732f098970f8a40ddbc61ccbd2) Atomics sample (by [@redknightlois](https://github.com/redknightlois)) -* [6ce693](https://github.com/dotnet/BenchmarkDotNet/commit/6ce6939e970b41171c66539fe9caef1dc6cc15f3) Merge pull request #35 from redknightlois/master (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [e73ce4](https://github.com/dotnet/BenchmarkDotNet/commit/e73ce4fe6348436968e426f17819d51417d4f4a1) Update Intro_03_SingleRun (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [add75c](https://github.com/dotnet/BenchmarkDotNet/commit/add75c5e5df8df1de67569c29bed19a38e2734c9) Samples: add Js_AsVsCast (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [1d4653](https://github.com/dotnet/BenchmarkDotNet/commit/1d465364fadcc9eeeefba5d97cc0cb72bc7c88c2) Samples: updates Js_AsVsCast (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [73f48f](https://github.com/dotnet/BenchmarkDotNet/commit/73f48fbf0bbf0b8f45d146d5d27cde3111a0ba22) BenchmarkRuntime support (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [8e9fec](https://github.com/dotnet/BenchmarkDotNet/commit/8e9fecf6d0112c10a736c08a17a532e74e798042) BenchmarkRuntime: fix a bug (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [0d8a86](https://github.com/dotnet/BenchmarkDotNet/commit/0d8a86d2eef9fc4a69cf032abfe5f1e551eebb55) Added RotateBits (will be interested when https://github.com/dotnet/coreclr/i... (by [@redknightlois](https://github.com/redknightlois)) -* [724970](https://github.com/dotnet/BenchmarkDotNet/commit/724970753111c96a62bfbc9d58d7954fb2847c54) Added and special case which we know it must not be optimized at all (for com... (by [@redknightlois](https://github.com/redknightlois)) -* [30ba93](https://github.com/dotnet/BenchmarkDotNet/commit/30ba936166babc8719ac5a469efe1721f79e4bfa) Merge pull request #43 from redknightlois/master (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [a2338c](https://github.com/dotnet/BenchmarkDotNet/commit/a2338ce6d6b971e0e7599ffc178fb90f2db1dacd) Big refactoring (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [dc8d02](https://github.com/dotnet/BenchmarkDotNet/commit/dc8d0227cf848c50e8106ad3a20af40bd7fe1881) Make the "Getting Started" guide read better (by [@mattwarren](https://github.com/mattwarren)) -* [9883ca](https://github.com/dotnet/BenchmarkDotNet/commit/9883ca41fda2127fe0f215f29751b6aa036bef21) Update README.md (by [@mattwarren](https://github.com/mattwarren)) -* [3cd76b](https://github.com/dotnet/BenchmarkDotNet/commit/3cd76bd650f4042a7124ae1b808d2e9f972ca9c6) Update README.md (by [@mattwarren](https://github.com/mattwarren)) -* [6a3d00](https://github.com/dotnet/BenchmarkDotNet/commit/6a3d0057135247872e83cfae1791099fa40d7de3) Update README.md (by [@mattwarren](https://github.com/mattwarren)) -* [7de832](https://github.com/dotnet/BenchmarkDotNet/commit/7de832e5d3a435b9a4798ff3b9b8f72da2648c18) Better way of generating Benchmark competition list (by [@mattwarren](https://github.com/mattwarren)) -* [10ded0](https://github.com/dotnet/BenchmarkDotNet/commit/10ded03ed2bebe0786dc9899828d200b4c4be932) Add Jit_GenericsMethod (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [e5538b](https://github.com/dotnet/BenchmarkDotNet/commit/e5538b9da19345714a9a5fce22c0bbdd30e87ba5) Fix for #42 (make benchmarks work in LINQPad) (by [@mattwarren](https://github.com/mattwarren)) -* [873450](https://github.com/dotnet/BenchmarkDotNet/commit/8734501e40bf6a690206a6bfd7cdc479240fa0b1) Make logging robust when strings contain '{' or '} (by [@mattwarren](https://github.com/mattwarren)) -* [2ee55a](https://github.com/dotnet/BenchmarkDotNet/commit/2ee55a265a7f093f8432e8c12617de9d1c9fc038) Create a batch file that builds the benchmark (by [@mattwarren](https://github.com/mattwarren)) -* [d14b18](https://github.com/dotnet/BenchmarkDotNet/commit/d14b18289aae56de21ed65abcbaf552c9909b366) Adding "Advanced Features" section (by [@mattwarren](https://github.com/mattwarren)) -* [deb1a9](https://github.com/dotnet/BenchmarkDotNet/commit/deb1a901fbfedc89ba4cc941844f8308421c7338) Sample benchmark for different types of loops (by [@mattwarren](https://github.com/mattwarren)) -* [26e7b0](https://github.com/dotnet/BenchmarkDotNet/commit/26e7b0d9132f35a4eb52af75f0c3b3a88a0c00bc) Move sample to correct namespace (by [@mattwarren](https://github.com/mattwarren)) -* [505711](https://github.com/dotnet/BenchmarkDotNet/commit/505711e5991c9eed888734e80450dd9e6e488410) Grouping parameter results together (fixes #36) (by [@mattwarren](https://github.com/mattwarren)) -* [1ee786](https://github.com/dotnet/BenchmarkDotNet/commit/1ee786319340cc491dbc240e81b9d1369493f08d) Merge branch 'master' of https://github.com/PerfDotNet/BenchmarkDotNet (by [@mattwarren](https://github.com/mattwarren)) -* [496ae1](https://github.com/dotnet/BenchmarkDotNet/commit/496ae1cf912b154b9aedaaea5ba6908c9a54d42a) Add support for benchmarking methods of generic classes (#44) (by [@mattwarren](https://github.com/mattwarren)) -* [ad12e1](https://github.com/dotnet/BenchmarkDotNet/commit/ad12e14cd4f91bace12be341c3afc4c839fcfd72) Return of the Params (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [f80613](https://github.com/dotnet/BenchmarkDotNet/commit/f80613c432f6b4696f5d9f32cecee42e529aa72f) Little cleanup (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [52a076](https://github.com/dotnet/BenchmarkDotNet/commit/52a0764cf6521e1305fa3c267a996d885ca6d39f) Little refactoring (Flow -> Toolchain) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [2f383e](https://github.com/dotnet/BenchmarkDotNet/commit/2f383e6a7c91800e65096c50e0186c426c2135e5) Moar samples (by [@mattwarren](https://github.com/mattwarren)) -* [30b162](https://github.com/dotnet/BenchmarkDotNet/commit/30b16224cd6cf858966bd1eeb6ad9fa6d4507d64) Initial work on code for asm/IL viewing (by [@mattwarren](https://github.com/mattwarren)) -* [6a8873](https://github.com/dotnet/BenchmarkDotNet/commit/6a88734dcbbd63571096fd4a3800b7cd065c6f5e) Initial support for printing Assembly code (by [@mattwarren](https://github.com/mattwarren)) -* [8cd841](https://github.com/dotnet/BenchmarkDotNet/commit/8cd8419cbcfa963658cdbbdf4f3f18df4943b677) Print diagnostic info (with flag "-printDiagnostics") (by [@mattwarren](https://github.com/mattwarren)) -* [236043](https://github.com/dotnet/BenchmarkDotNet/commit/2360431c29486f4278718b9f042bb13c684a0d6e) Adding missing CLRMD dependancies (by [@mattwarren](https://github.com/mattwarren)) -* [58b7a3](https://github.com/dotnet/BenchmarkDotNet/commit/58b7a3d3d900906f365663b5c33f62b6524da08a) Print the method when we have a "call" asm instruction (by [@mattwarren](https://github.com/mattwarren)) -* [1dae2b](https://github.com/dotnet/BenchmarkDotNet/commit/1dae2b3f588d05a4cf13d05bff1f74c4693db32d) Change Jit_GenericsMethod benchmark to reproduce on x64 both Legacy & RuyJit (by [@alexandrnikitin](https://github.com/alexandrnikitin)) -* [6ae157](https://github.com/dotnet/BenchmarkDotNet/commit/6ae157d7314d6a56b1ed030cf4b10740ca594ca4) Merge pull request #47 from alexandrnikitin/samples-Jit_GenericsMethod-x64repro (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [c39b7c](https://github.com/dotnet/BenchmarkDotNet/commit/c39b7cd8495e001dcdcce73e192a5121cb37e652) README: add gitter link (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [b0768e](https://github.com/dotnet/BenchmarkDotNet/commit/b0768efcf089209f57617534d3e0e1b02a38e71a) Ensure we "close" the code section in the markdown we generate (by [@mattwarren](https://github.com/mattwarren)) -* [6c9ae7](https://github.com/dotnet/BenchmarkDotNet/commit/6c9ae75f1e862d72cca21d3a165ea370aca26d7c) Merge branch 'master' of https://github.com/PerfDotNet/BenchmarkDotNet (by [@mattwarren](https://github.com/mattwarren)) -* [9ed66d](https://github.com/dotnet/BenchmarkDotNet/commit/9ed66dec6e2fc687b8bd9ac60259aa632da80670) Show how you can write "Performance" Unit Tests (by [@mattwarren](https://github.com/mattwarren)) -* [7c9c6d](https://github.com/dotnet/BenchmarkDotNet/commit/7c9c6d75b7a77b0b5ab2ca4e3c74e8d0cd105e05) Helper methods for Performance Unit Tests (by [@mattwarren](https://github.com/mattwarren)) -* [3a2c75](https://github.com/dotnet/BenchmarkDotNet/commit/3a2c75d17cd7f000cfba82e2628c09b36f055828) Make Perf Unit Test more robust!! (by [@mattwarren](https://github.com/mattwarren)) -* [d1ddd3](https://github.com/dotnet/BenchmarkDotNet/commit/d1ddd3f76554c5d6e768c15f40be158945d3b1b3) Ensure the Description is used when sorting (if available) (by [@mattwarren](https://github.com/mattwarren)) -* [27d662](https://github.com/dotnet/BenchmarkDotNet/commit/27d662174e5fef9f7c0418a883ea534ddbe952ea) Moving assembly viewer into BenchmarkDotNet.Diagnostics (by [@mattwarren](https://github.com/mattwarren)) -* [1ef961](https://github.com/dotnet/BenchmarkDotNet/commit/1ef961edd6be44964fbc24d544e6ef72d749c5cf) Load BenchmarkDotNet.Diagnostics dynamically (by [@mattwarren](https://github.com/mattwarren)) -* [7eb70a](https://github.com/dotnet/BenchmarkDotNet/commit/7eb70a1c6f041c72f7c02e29214d28596d52759a) New plugin system (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [2114d7](https://github.com/dotnet/BenchmarkDotNet/commit/2114d70d34baefd04f9fb8fe060d45109f04b2d3) Fix typos in API (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [e0a488](https://github.com/dotnet/BenchmarkDotNet/commit/e0a488afa0462736f6c6e1184c9936c822d9a94f) Fix in PerformanceUnitTest (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [02cddd](https://github.com/dotnet/BenchmarkDotNet/commit/02cddd7952e63ef0e40b8446a5703c780106ad03) BenchmarkDotNet.Tests: upgrade xunit to 2.1 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [3d8ff2](https://github.com/dotnet/BenchmarkDotNet/commit/3d8ff2318c337b8bd874c940f426488b0a804f98) IntegrationTests: replace GetTestOutput by AccumulationLogger (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [5ebf69](https://github.com/dotnet/BenchmarkDotNet/commit/5ebf69ccd4dc901a8348d80d11ec587a1ecb473a) IntegrationTests: upgrade xunit to 2.1 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [280834](https://github.com/dotnet/BenchmarkDotNet/commit/28083486f9423229545969617cab4b05909ba346) Diagnostic refactoring (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [79ee42](https://github.com/dotnet/BenchmarkDotNet/commit/79ee42d0d9de650f1b1b375bbf23fc9418763aef) Custom toolchains (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [527df6](https://github.com/dotnet/BenchmarkDotNet/commit/527df65a259b1dd88034ddf261d6f6f12cea89bb) Analysers (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [3d8199](https://github.com/dotnet/BenchmarkDotNet/commit/3d819928eb64ee0e37dc0ca0774f188bdd19d519) Fix in BuildTable (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [699588](https://github.com/dotnet/BenchmarkDotNet/commit/699588267e7552acb84662b8be76cf1ed0a084f9) Tidy up of Source Diagnoser code (part of #53) (by [@mattwarren](https://github.com/mattwarren)) -* [5ab029](https://github.com/dotnet/BenchmarkDotNet/commit/5ab0296c8e59ce610ae5a10f8698fcaabc8f37c6) Better way of getting the called method name (part of #53) (by [@mattwarren](https://github.com/mattwarren)) -* [37f468](https://github.com/dotnet/BenchmarkDotNet/commit/37f468db46c997d67f9ef3efe399bfe9a8e31b49) Integration test for Source Diagnostics (see #53) (by [@mattwarren](https://github.com/mattwarren)) -* [da0093](https://github.com/dotnet/BenchmarkDotNet/commit/da0093cdea74a6cd3631668d3b95b9ecc95b118f) Spelling mistakes and remove unused using stmts (by [@mattwarren](https://github.com/mattwarren)) -* [fbf409](https://github.com/dotnet/BenchmarkDotNet/commit/fbf409d74d287f5e860c589432bf7aa9512a96ca) Fix typo in README (by [@ForNeVeR](https://github.com/ForNeVeR)) -* [4895c6](https://github.com/dotnet/BenchmarkDotNet/commit/4895c64e29cf93cf7c8e7518cd3610cfc88086f0) Merge pull request #61 from ForNeVeR/patch-1 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [dd5f1f](https://github.com/dotnet/BenchmarkDotNet/commit/dd5f1f4b5d0511c3ec35b1429970546985a77c3d) Rename: exec -> execute (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [6826a9](https://github.com/dotnet/BenchmarkDotNet/commit/6826a97789f30bb446c09b63738f581799f5c5d3) BenchmarkSwitcher: update the promt message (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [f2a63f](https://github.com/dotnet/BenchmarkDotNet/commit/f2a63fda77381525924145a458b5264e622116a6) Update README.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [54cfdc](https://github.com/dotnet/BenchmarkDotNet/commit/54cfdc543a642aab2afe40abf3c4855e9ed15d1f) Samples/Program.cs: small fix (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [a927e9](https://github.com/dotnet/BenchmarkDotNet/commit/a927e93a24d0bcb7cbf22d159526ba2218708ecd) Set library version: 0.8.0 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (5) - -* Alexandr Nikitin ([@alexandrnikitin](https://github.com/alexandrnikitin)) -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* Federico Andres Lois ([@redknightlois](https://github.com/redknightlois)) -* Friedrich von Never ([@ForNeVeR](https://github.com/ForNeVeR)) -* Matt Warren ([@mattwarren](https://github.com/mattwarren)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.8.1.md b/docs/_changelog/details/v0.8.1.md deleted file mode 100644 index 327df48cfd..0000000000 --- a/docs/_changelog/details/v0.8.1.md +++ /dev/null @@ -1,34 +0,0 @@ -## Milestone details - -In the [v0.8.1](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.8.1) scope, -0 issues were resolved and 0 pull requests were merged. -This release includes 12 commits by 2 contributors. - -## Resolved issues (0) - - -## Merged pull requests (0) - - -## Commits (12) - -* [79ee93](https://github.com/dotnet/BenchmarkDotNet/commit/79ee93ce9dfd8576536dd2049f91ab5bf2ca2767) README.md: small fixes (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [a3e2dc](https://github.com/dotnet/BenchmarkDotNet/commit/a3e2dc83c3074538082a140d4cee54079b99d899) Adding missing CLRMD binary dependencies (by [@mattwarren](https://github.com/mattwarren)) -* [7492c1](https://github.com/dotnet/BenchmarkDotNet/commit/7492c1bd65dd4285e7de03b6262e10b741b6dac9) Merge branch 'master' of https://github.com/PerfDotNet/BenchmarkDotNet (by [@mattwarren](https://github.com/mattwarren)) -* [ddae06](https://github.com/dotnet/BenchmarkDotNet/commit/ddae0660d0573f3b0c145c7f7c3d0f0239e59619) Lazy-load the Diagnostic plug-ins, fixes #63 (by [@mattwarren](https://github.com/mattwarren)) -* [5df0df](https://github.com/dotnet/BenchmarkDotNet/commit/5df0df91bd463c41417873a6c79e2f9d5ab58afd) More robust version of the Diagnostic Library (see #53) (by [@mattwarren](https://github.com/mattwarren)) -* [9f3ba0](https://github.com/dotnet/BenchmarkDotNet/commit/9f3ba0004d0f7b07ac552d2b6935381d2fbc0580) Ensure that non-void SingleRun Benchmarks work (by [@mattwarren](https://github.com/mattwarren)) -* [de5bca](https://github.com/dotnet/BenchmarkDotNet/commit/de5bcae0d1d4e6dbff9405df2db286ff6d88f6b6) Allow Benchmarks that use Inner classes (see #55) (by [@mattwarren](https://github.com/mattwarren)) -* [5d000f](https://github.com/dotnet/BenchmarkDotNet/commit/5d000fcf75f65241b18f5911621bfc3e02485674) Ensure we can run Benchmarks produced by F# (see #59) (by [@mattwarren](https://github.com/mattwarren)) -* [8b0563](https://github.com/dotnet/BenchmarkDotNet/commit/8b05636a8475e6acec463dfaec5a135af4b92b18) Added missing binary dependency (part of #59) (by [@mattwarren](https://github.com/mattwarren)) -* [60047e](https://github.com/dotnet/BenchmarkDotNet/commit/60047e7a2f1a697d1b076376053fd721e619220e) Fixing #45 (by [@mattwarren](https://github.com/mattwarren)) -* [3bede9](https://github.com/dotnet/BenchmarkDotNet/commit/3bede9debd0e6e0c3a36b56cb5d3d7937a820e7f) Implemented Ctrl-C handling in the Console (Fixes #50) (by [@mattwarren](https://github.com/mattwarren)) -* [719391](https://github.com/dotnet/BenchmarkDotNet/commit/719391f9930896f2eda43a96372245bcee023d2d) Set library version: 0.8.1 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (2) - -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* Matt Warren ([@mattwarren](https://github.com/mattwarren)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.8.2.md b/docs/_changelog/details/v0.8.2.md deleted file mode 100644 index 24cc6fbc26..0000000000 --- a/docs/_changelog/details/v0.8.2.md +++ /dev/null @@ -1,57 +0,0 @@ -## Milestone details - -In the [v0.8.2](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.8.2) scope, -0 issues were resolved and 0 pull requests were merged. -This release includes 34 commits by 3 contributors. - -## Resolved issues (0) - - -## Merged pull requests (0) - - -## Commits (34) - -* [de0140](https://github.com/dotnet/BenchmarkDotNet/commit/de0140193d547f905b4175abd2d3aaeba95e63ea) Add BenchmarkEnvironmentAnalyser (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [9ea78f](https://github.com/dotnet/BenchmarkDotNet/commit/9ea78f8a32ada717492673100ef385ff8d75f0e5) Improved confidence intervals (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [b8d4b6](https://github.com/dotnet/BenchmarkDotNet/commit/b8d4b623af65628c00df46d31470a86fe0af6ba5) Rename: PreWarmup -> Pilot (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [988efc](https://github.com/dotnet/BenchmarkDotNet/commit/988efc51e37b580eacaa7ee5666fb41bf012a6f9) Reporting: change StandardDeviation to StandardError (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [4da39d](https://github.com/dotnet/BenchmarkDotNet/commit/4da39d0bc498282f12a9dc3ae1fcb84803836187) Big refactoring (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [6a0caa](https://github.com/dotnet/BenchmarkDotNet/commit/6a0caac8e108aa0a979f104b2f7e53d124873540) Add BenchmarkRPlotExporter (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [3a6ea4](https://github.com/dotnet/BenchmarkDotNet/commit/3a6ea445cfc4e9c5f5b683676d12250eddb1f164) Allow plugins to extend the Results Table (by [@mattwarren](https://github.com/mattwarren)) -* [7a7991](https://github.com/dotnet/BenchmarkDotNet/commit/7a7991c207c2b912a99f6884135d10ff2077ea1c) Create a "Result Extender" plug-in for #64 (by [@mattwarren](https://github.com/mattwarren)) -* [70ea89](https://github.com/dotnet/BenchmarkDotNet/commit/70ea89c54ac5bbb11a95f5bd1a10b59df1a628c5) Integration tests for #64 (by [@mattwarren](https://github.com/mattwarren)) -* [a2d0ec](https://github.com/dotnet/BenchmarkDotNet/commit/a2d0eca30026ffdcce7f528b27c0cd9bab91e614) Separate class for string extensions. (by [@alinasmirnova](https://github.com/alinasmirnova)) -* [5d6c78](https://github.com/dotnet/BenchmarkDotNet/commit/5d6c786572d9463f6562d07b353061226c7bf27b) Multiline prefix string extension. (by [@alinasmirnova](https://github.com/alinasmirnova)) -* [bdd84e](https://github.com/dotnet/BenchmarkDotNet/commit/bdd84e66a4fec33b8d1e063a1e39ff6389eef2bf) New logger type for adding prefix. StackOverflow markdowns. (by [@alinasmirnova](https://github.com/alinasmirnova)) -* [ba9ec5](https://github.com/dotnet/BenchmarkDotNet/commit/ba9ec5ad65ed289e1730280ea7dde33969ab7c75) Move ExportToFile to ExporterBase. Add file suffix. (by [@alinasmirnova](https://github.com/alinasmirnova)) -* [38cd8c](https://github.com/dotnet/BenchmarkDotNet/commit/38cd8cf275632aeeafba9d3696f5e8ddc60854df) GitHub markdown support. (by [@alinasmirnova](https://github.com/alinasmirnova)) -* [732420](https://github.com/dotnet/BenchmarkDotNet/commit/7324205c45544f26f8c87da0735847ebe0341356) Markdown readme edits (by [@alinasmirnova](https://github.com/alinasmirnova)) -* [541eef](https://github.com/dotnet/BenchmarkDotNet/commit/541eef2e62448b5ab80e453433013f0cb0f8f360) Merge pull request #71 from alinasmirnova/refactoring (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [c53618](https://github.com/dotnet/BenchmarkDotNet/commit/c5361827a5b0b86db73fe3b5f7b578f7a001ee11) Merge remote-tracking branch 'refs/remotes/origin/develop' into refactoring (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [e3f420](https://github.com/dotnet/BenchmarkDotNet/commit/e3f420817979008aba4369bd8e87897354c28d2e) Samples: add Intro_08_Baseline (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [145b78](https://github.com/dotnet/BenchmarkDotNet/commit/145b78fb55fb42bf868a03d9cfa31ece25dc133f) README: add NuGet badge (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [b0e108](https://github.com/dotnet/BenchmarkDotNet/commit/b0e108214fb3fe2d039e6fea56ef9c28bc2ff18a) Minor fixes (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [565c25](https://github.com/dotnet/BenchmarkDotNet/commit/565c25d3719f10715a7b156d00a57a87b142ac50) Update README (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [045e2a](https://github.com/dotnet/BenchmarkDotNet/commit/045e2ad4e88b1e745ecee9b34830679a40d418f1) Add BenchmarkStatResultExtender (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [20c6d2](https://github.com/dotnet/BenchmarkDotNet/commit/20c6d26e0fafdb98bcf576cadec6e5b533d0ce6d) Minor fixes (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [f80edc](https://github.com/dotnet/BenchmarkDotNet/commit/f80edc31f7e480a71be5194522c90e2031f2c2b7) Update README (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [3d2309](https://github.com/dotnet/BenchmarkDotNet/commit/3d230914be585f1f0381afb6e46a027e3fa204f2) README: links to wiki (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [d60d0f](https://github.com/dotnet/BenchmarkDotNet/commit/d60d0f549719a22659946b54f3c551b187c2d217) Fix bug in TimeUnit (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [034961](https://github.com/dotnet/BenchmarkDotNet/commit/034961487344cc556b2e13698d7f9b7e2b7956f5) Unit tests for TimeUnit (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [f2c6f1](https://github.com/dotnet/BenchmarkDotNet/commit/f2c6f16ed891c8048b8c93d6e5fadadf54a66548) Logs: add total time (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [140dec](https://github.com/dotnet/BenchmarkDotNet/commit/140decccfaee7b62dbee74775f004c8ad17ea165) Merge branch 'refs/heads/refactoring' into develop (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [9e16e8](https://github.com/dotnet/BenchmarkDotNet/commit/9e16e8c19a9378311c36c8510a0cb666b801741e) Ensure that the DeltaResultExtender doesn't throw (by [@mattwarren](https://github.com/mattwarren)) -* [60f7c9](https://github.com/dotnet/BenchmarkDotNet/commit/60f7c93de5b16c6586b0ee9f0e351b0b41c962cd) Merge branch 'develop' of https://github.com/PerfDotNet/BenchmarkDotNet into ... (by [@mattwarren](https://github.com/mattwarren)) -* [77b24b](https://github.com/dotnet/BenchmarkDotNet/commit/77b24b38043a22c510c904d08482b4f8e4a505b8) Rollback of bad changes from the last merge (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [3df71a](https://github.com/dotnet/BenchmarkDotNet/commit/3df71ac88a9596543b7dbab4334d3005517e5646) More robust way of wiring up BenchmarkBaselineDeltaResultExtender (by [@mattwarren](https://github.com/mattwarren)) -* [8e5a0e](https://github.com/dotnet/BenchmarkDotNet/commit/8e5a0ed384e8b645e74ca19f1c2fe5e5a921077a) Set library version: 0.8.2 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (3) - -* Alina Smirnova ([@alinasmirnova](https://github.com/alinasmirnova)) -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* Matt Warren ([@mattwarren](https://github.com/mattwarren)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.9.0.md b/docs/_changelog/details/v0.9.0.md deleted file mode 100644 index 5e8e734902..0000000000 --- a/docs/_changelog/details/v0.9.0.md +++ /dev/null @@ -1,58 +0,0 @@ -## Milestone details - -In the [v0.9.0](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.9.0) scope, -0 issues were resolved and 0 pull requests were merged. -This release includes 34 commits by 4 contributors. - -## Resolved issues (0) - - -## Merged pull requests (0) - - -## Commits (34) - -* [71369d](https://github.com/dotnet/BenchmarkDotNet/commit/71369d3bdb3603dafd2a14e4f37002911c3319c9) Add benchmarks to tests different ways of accessing arrays. Copypasted from h... (by [@alexandrnikitin](https://github.com/alexandrnikitin)) -* [9a5930](https://github.com/dotnet/BenchmarkDotNet/commit/9a5930bb00079610104b6547bcd327bd812d5653) Merge pull request #79 from alexandrnikitin/samples-array-access (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [1b8cf9](https://github.com/dotnet/BenchmarkDotNet/commit/1b8cf9f4f296721f35f104beec0d7ddbbe755866) MathSummaryTests: fix output (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [92503b](https://github.com/dotnet/BenchmarkDotNet/commit/92503b422ad72fdd9b4984d778d821f35d504673) BenchmarkSwitcher improvements (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [ebaeea](https://github.com/dotnet/BenchmarkDotNet/commit/ebaeea72f253656332d6729adfe1f9ea32187c9f) Big API refactoring (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [f149cb](https://github.com/dotnet/BenchmarkDotNet/commit/f149cb14c864e1b09d2f71e3bf558f9bb59bf77b) Big API refactoring, Part 2 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [380d9a](https://github.com/dotnet/BenchmarkDotNet/commit/380d9ad255d9fe69646326b7f9e02b970105aeb0) Big API refactoring, Part 3 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [6cd2ce](https://github.com/dotnet/BenchmarkDotNet/commit/6cd2ce1b958709f621ba1d4de05e815523b8931c) Big API refactoring, Part 4 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [1665d8](https://github.com/dotnet/BenchmarkDotNet/commit/1665d8afafd219fcc8998a7c6e04cd7ff75ee15f) Big API refactoring, Part 5 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [140312](https://github.com/dotnet/BenchmarkDotNet/commit/14031268bd8065be41c0b2fb78fac258e9c1fa59) A better way of running a F# integration test (by [@mattwarren](https://github.com/mattwarren)) -* [8e58ab](https://github.com/dotnet/BenchmarkDotNet/commit/8e58ab7e9e24f6d180a512af92c12abccec80dd8) Big API refactoring, Part 6 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [9ec71b](https://github.com/dotnet/BenchmarkDotNet/commit/9ec71b675b53871d1f0a80fd1ae6d6da940d006f) Add html export, resolved #75 (by [@alinasmirnova](https://github.com/alinasmirnova)) -* [7ae4ed](https://github.com/dotnet/BenchmarkDotNet/commit/7ae4ed3b78feabcd30bbf0bdf6ace25459e1dc12) Merge pull request #86 from alinasmirnova/refactoring (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [bfbc80](https://github.com/dotnet/BenchmarkDotNet/commit/bfbc807baaf91c612402dc2f31e2e89b5cb45aec) Big API refactoring, Part 7 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [256ed4](https://github.com/dotnet/BenchmarkDotNet/commit/256ed4027a1a17b7d7aa8095713d0c89ec8565f4) Re-design of the IDiagnoser API (by [@mattwarren](https://github.com/mattwarren)) -* [f4bad8](https://github.com/dotnet/BenchmarkDotNet/commit/f4bad8b14da6de475fe15a803d887c78147a19d5) Initial work on ETW Diagnostic Providers (by [@mattwarren](https://github.com/mattwarren)) -* [da2e3f](https://github.com/dotnet/BenchmarkDotNet/commit/da2e3f059fff878a8e88b2e1dc756b909ce9631d) Big API refactoring, Part 8 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [5df553](https://github.com/dotnet/BenchmarkDotNet/commit/5df5532c52e26e9e6a21f65457e88067bbb5364e) Big API refactoring, Part 9 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [120b7c](https://github.com/dotnet/BenchmarkDotNet/commit/120b7c8bb3720c3a48a26840fcec71c30ab5c7b7) Big API refactoring, Part 10 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [e61425](https://github.com/dotnet/BenchmarkDotNet/commit/e61425fc02ed209862316c7890f0c4bb3975c00e) Big API refactoring, Part 11 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [171ba0](https://github.com/dotnet/BenchmarkDotNet/commit/171ba004c6fae589b67228d49c2c7e0b282ec34d) Big API refactoring, Part 12 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [854633](https://github.com/dotnet/BenchmarkDotNet/commit/854633fb9a9dac6271cf5476d11cd15a1f48c981) Big API refactoring, Part 13 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [caafa9](https://github.com/dotnet/BenchmarkDotNet/commit/caafa9146cd8d4429b68e27ebf5ae3bfc9159912) Fix a bug in Templates/BenchmarkProgram.txt (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [568c44](https://github.com/dotnet/BenchmarkDotNet/commit/568c4498d35d7974821ad8fcc68eabb429eef99e) Add BenchmarkDotNet.Samples.FSharp (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [2fa773](https://github.com/dotnet/BenchmarkDotNet/commit/2fa773bfa13014cd7535cdc0182b98aa2614e8e3) Fix a bug in Generator (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [30e855](https://github.com/dotnet/BenchmarkDotNet/commit/30e855f1f2fb418f4ff3c2c42e62840cb86c1dde) Update README (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [1164ef](https://github.com/dotnet/BenchmarkDotNet/commit/1164ef822791c42ab7e60354f200904cedb73340) Update README (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [9c357c](https://github.com/dotnet/BenchmarkDotNet/commit/9c357c1c6db6c5148736f51b8ae50f8723446138) Improved plots for benchmarks with Params (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [ef41f6](https://github.com/dotnet/BenchmarkDotNet/commit/ef41f685e7c11447c9182f849692bc29c5114260) Fix a bug in ClassicBuilder (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [02babc](https://github.com/dotnet/BenchmarkDotNet/commit/02babcd9d94a2cdacafe159235ccd24cde472e3d) Add BaselineDiffColumn.Scaled (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [4388c8](https://github.com/dotnet/BenchmarkDotNet/commit/4388c80ff8f78a597825c5a210c154397f5f8a25) Remove construction with description in BenchmarkAttribute (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [c9c25f](https://github.com/dotnet/BenchmarkDotNet/commit/c9c25f4382bc502e76737c60ddb22fbb1a1194ff) Update README (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [1cef82](https://github.com/dotnet/BenchmarkDotNet/commit/1cef824b52930bfd92878c5758007930418b5b1d) RPlotExporter improvements (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [173abf](https://github.com/dotnet/BenchmarkDotNet/commit/173abf26198ca407c773b1a0793e3e7171acee89) Set library version: 0.9.0 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (4) - -* Alexandr Nikitin ([@alexandrnikitin](https://github.com/alexandrnikitin)) -* Alina Smirnova ([@alinasmirnova](https://github.com/alinasmirnova)) -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* Matt Warren ([@mattwarren](https://github.com/mattwarren)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.9.1.md b/docs/_changelog/details/v0.9.1.md deleted file mode 100644 index 17823692f2..0000000000 --- a/docs/_changelog/details/v0.9.1.md +++ /dev/null @@ -1,27 +0,0 @@ -## Milestone details - -In the [v0.9.1](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.9.1) scope, -0 issues were resolved and 0 pull requests were merged. -This release includes 5 commits by 2 contributors. - -## Resolved issues (0) - - -## Merged pull requests (0) - - -## Commits (5) - -* [a0cfba](https://github.com/dotnet/BenchmarkDotNet/commit/a0cfba6412f91545ab9d3411eb71e595de8a9bcb) use benchmarkSwitcher and 0.9.0 api features (by [@cloudRoutine](https://github.com/cloudRoutine)) -* [a88fc0](https://github.com/dotnet/BenchmarkDotNet/commit/a88fc01d907835fe65dbec62dafffc9aad61f44b) Merge pull request #89 from cloudRoutine/patch-1 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [99d7c5](https://github.com/dotnet/BenchmarkDotNet/commit/99d7c55c892737fb97e9a231fcd388a564259e14) Improved ReflectionExtensions.GetCorrectTypeName; Fixed #90 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [770510](https://github.com/dotnet/BenchmarkDotNet/commit/770510bbaa5f9e6289e2b3fe0fc43570f9cc8ec2) Improved work with idle method that returns a value type; Fixed #70 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [3c4410](https://github.com/dotnet/BenchmarkDotNet/commit/3c4410fbd8b61e6d4c44968f1d63d485b62c6990) Set library version: 0.9.1 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (2) - -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* Jared Hester ([@cloudRoutine](https://github.com/cloudRoutine)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.9.2.md b/docs/_changelog/details/v0.9.2.md deleted file mode 100644 index 5fb08cb01f..0000000000 --- a/docs/_changelog/details/v0.9.2.md +++ /dev/null @@ -1,72 +0,0 @@ -## Milestone details - -In the [v0.9.2](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.9.2) scope, -1 issues were resolved and 1 pull requests were merged. -This release includes 48 commits by 2 contributors. - -## Resolved issues (1) - -* [#51](https://github.com/dotnet/BenchmarkDotNet/issues/51) DNX Compatibility - -## Merged pull requests (1) - -* [#87](https://github.com/dotnet/BenchmarkDotNet/pull/87) DNX451 support (by [@adamsitnik](https://github.com/adamsitnik)) - -## Commits (48) - -* [f25427](https://github.com/dotnet/BenchmarkDotNet/commit/f25427d5cd3897a7e468b0525e3f36c924a18ba0) road to DNX: part I: moving from csproj to xproj (by [@adamsitnik](https://github.com/adamsitnik)) -* [2fe5cf](https://github.com/dotnet/BenchmarkDotNet/commit/2fe5cfd4f44a0bb7285e8c029e7713f6293af859) road to DNX: part II: added dnx451 target (DNX SDK running on .Net 4.5.1) (by [@adamsitnik](https://github.com/adamsitnik)) -* [6b4400](https://github.com/dotnet/BenchmarkDotNet/commit/6b4400298de50b46c87769cb278934afdf818a72) road to DNX: part II: the moment when Unit Test has shown up in VS! (by [@adamsitnik](https://github.com/adamsitnik)) -* [c97792](https://github.com/dotnet/BenchmarkDotNet/commit/c9779243b2f0cd5cecd868d84635d8345ec2d86c) road to DNX: part II: able to debug Samples (by [@adamsitnik](https://github.com/adamsitnik)) -* [f901d6](https://github.com/dotnet/BenchmarkDotNet/commit/f901d60e016c4d30d1b8cb581e624cf8ec917a8f) road to DNX: part II: the moment when Integration Test has shown up in VS! (by [@adamsitnik](https://github.com/adamsitnik)) -* [f46296](https://github.com/dotnet/BenchmarkDotNet/commit/f46296cc4a67abb8ef8d3846a10978eab3ebf5d1) road to DNX: part II: including *.txt files as resources, excluding auto-gene... (by [@adamsitnik](https://github.com/adamsitnik)) -* [cfc1b6](https://github.com/dotnet/BenchmarkDotNet/commit/cfc1b65cab53e851882948682bc6a4761aa0a05c) updated gitignore to exclude files created during integration tests run (by [@adamsitnik](https://github.com/adamsitnik)) -* [60b343](https://github.com/dotnet/BenchmarkDotNet/commit/60b3437143f4bf81d4db305a0910cf9fe5e08d43) Road to DNX: benchmark execution : building project.json instead of .csproj (by [@adamsitnik](https://github.com/adamsitnik)) -* [0d41cb](https://github.com/dotnet/BenchmarkDotNet/commit/0d41cb6a9aeb95c1db67cd165b3fe3fd66f40b65) Road to DNX: benchmark execution : compiling project.json with Microsoft.Dnx.... (by [@adamsitnik](https://github.com/adamsitnik)) -* [31bc59](https://github.com/dotnet/BenchmarkDotNet/commit/31bc591cdab8dfd06bb1ac059501d560eb2e1680) updated versions in .json files after sync with master, (by [@adamsitnik](https://github.com/adamsitnik)) -* [c8e826](https://github.com/dotnet/BenchmarkDotNet/commit/c8e8268543d4e3643782af25f75f0ea9153c0ab2) road to DNX: compilation: adding MetadataReferences for dlls required to comp... (by [@adamsitnik](https://github.com/adamsitnik)) -* [2ebe6c](https://github.com/dotnet/BenchmarkDotNet/commit/2ebe6c1fcb477583b73f5a90e6586356b8368e72) road to DNX: compilation: adding executing assembly as dependency to project.... (by [@adamsitnik](https://github.com/adamsitnik)) -* [76a74e](https://github.com/dotnet/BenchmarkDotNet/commit/76a74ef5ed2b4f99ca781f0f5bc94e9f20bdd3c2) Road to DNX: removing dependencies to BenchmarkDotNet.Diagnostics for DNX451 ... (by [@adamsitnik](https://github.com/adamsitnik)) -* [40419a](https://github.com/dotnet/BenchmarkDotNet/commit/40419ac376341a1a154f9e8fc60468a038a2da61) road to DNX: handling "nuget-like" package versions that can contain text (as... (by [@adamsitnik](https://github.com/adamsitnik)) -* [8f06a7](https://github.com/dotnet/BenchmarkDotNet/commit/8f06a7cc6b8e879878dc72581bf4c72d07e2b9c4) it should have never happened but it does when debugging: DirectoryNotFoundEx... (by [@adamsitnik](https://github.com/adamsitnik)) -* [7c2a96](https://github.com/dotnet/BenchmarkDotNet/commit/7c2a96a5e34a166aa51cfb5ecaab490d71cfd3f5) Road to DNX: reusing MS dnu to restore and build. Simple solution that just w... (by [@adamsitnik](https://github.com/adamsitnik)) -* [e51d4d](https://github.com/dotnet/BenchmarkDotNet/commit/e51d4d296350b276777769cfb838f45f9e2afcd4) Road to DNX: alternative to MS dnu. reuses nuget and roslyn but as for now it... (by [@adamsitnik](https://github.com/adamsitnik)) -* [ada7cb](https://github.com/dotnet/BenchmarkDotNet/commit/ada7cb5ed60deb1d88ee2bfb2bb2340a959d88f0) Road to DNX: replacing dnu build with dnx run. +putting files in a folder tha... (by [@adamsitnik](https://github.com/adamsitnik)) -* [18e969](https://github.com/dotnet/BenchmarkDotNet/commit/18e969e00fc491965282e2aa542a9f44c1cac303) road to DNX: referencing the right thing, bitness the same as hosting process (by [@adamsitnik](https://github.com/adamsitnik)) -* [8e870c](https://github.com/dotnet/BenchmarkDotNet/commit/8e870c0566ed457e413955d44acc0c3444244a6c) road to DNX: setting the compiler EXPLICIT to finally make it WORKING (at lea... (by [@adamsitnik](https://github.com/adamsitnik)) -* [466d13](https://github.com/dotnet/BenchmarkDotNet/commit/466d1346079e18bd7272c13869481e07892d605a) Road to DNX: removing failed PoC,dependencies cleanup, added some comments (by [@adamsitnik](https://github.com/adamsitnik)) -* [5b3675](https://github.com/dotnet/BenchmarkDotNet/commit/5b3675e87f65c35f721db0d8d652070e91b7b813) Road to DNX: removing dependencies to MSBuild for DNX target, some project.js... (by [@adamsitnik](https://github.com/adamsitnik)) -* [3e65e8](https://github.com/dotnet/BenchmarkDotNet/commit/3e65e87810152ddcd98bf8c8fac97b1c6ee665d1) road to DNU: reference project during development, but package when released (by [@adamsitnik](https://github.com/adamsitnik)) -* [617a61](https://github.com/dotnet/BenchmarkDotNet/commit/617a616fdfae42362b77e70dd7dd06e2d4053403) road to DNX: logging output from dnu restore/dnx run + default timeout (by [@adamsitnik](https://github.com/adamsitnik)) -* [075cdc](https://github.com/dotnet/BenchmarkDotNet/commit/075cdc08a69bf2c721ac4404fef390d6ae1449a0) road to DNX: new value for toolchain enum: DNX451 (by [@adamsitnik](https://github.com/adamsitnik)) -* [bd3fea](https://github.com/dotnet/BenchmarkDotNet/commit/bd3fea7f876da55853e3470e9bfcf97942694a1c) road to DNX: being able to debug NET40 from VS (by [@adamsitnik](https://github.com/adamsitnik)) -* [da5a9a](https://github.com/dotnet/BenchmarkDotNet/commit/da5a9a8278e396410c9ebe20e0dada70641ae164) road to DNX: copying all files that used to be copied in ".csproj times" (by [@adamsitnik](https://github.com/adamsitnik)) -* [5d8717](https://github.com/dotnet/BenchmarkDotNet/commit/5d871711d455dc3e07b3752458a710c039a3315c) road to DNX: new debug profile with DNX trace mode ON, use when troubleshooti... (by [@adamsitnik](https://github.com/adamsitnik)) -* [8272f6](https://github.com/dotnet/BenchmarkDotNet/commit/8272f67c43fbb64cc58119fd1076cc2138d8819e) road to DNX: fixing tests (by [@adamsitnik](https://github.com/adamsitnik)) -* [96bcf8](https://github.com/dotnet/BenchmarkDotNet/commit/96bcf82bc594374f277d0c9f7bbe0e83dec33436) road to DNX: make sure that our child process get the right priority and affi... (by [@adamsitnik](https://github.com/adamsitnik)) -* [cd0ba8](https://github.com/dotnet/BenchmarkDotNet/commit/cd0ba801bd508edde5beda6595ac422b1181a235) road to DNX: respecting specified benchmark processor architecture (by [@adamsitnik](https://github.com/adamsitnik)) -* [b1eb28](https://github.com/dotnet/BenchmarkDotNet/commit/b1eb2873bb49e34ec13e751a0b2ec9bb32e0737f) road to DNX: added all output files from integration tests to .gitignore (by [@adamsitnik](https://github.com/adamsitnik)) -* [aa62d1](https://github.com/dotnet/BenchmarkDotNet/commit/aa62d1d3d80f344178b4f2c0c1451b794cc0b18c) fix for 4.0 (was passing arguments in wrong order) (by [@adamsitnik](https://github.com/adamsitnik)) -* [0c1251](https://github.com/dotnet/BenchmarkDotNet/commit/0c12515b979dbc9e81222891b610e78fb96051f6) merge (by [@adamsitnik](https://github.com/adamsitnik)) -* [46cd5e](https://github.com/dotnet/BenchmarkDotNet/commit/46cd5ef204b6832ba0b324f67ce953caea408d6c) F# support, limited to existing tools possibilities (can not run from VS, onl... (by [@adamsitnik](https://github.com/adamsitnik)) -* [74020c](https://github.com/dotnet/BenchmarkDotNet/commit/74020c52d9d0c84d4e2069e9b3f7d365b3f96a0f) Merge remote-tracking branch 'upstream/master' (by [@adamsitnik](https://github.com/adamsitnik)) -* [3402f0](https://github.com/dotnet/BenchmarkDotNet/commit/3402f012cc59d50491d29322c06c4e8c0a52ddde) replacing dnx with dotnet cli (by [@adamsitnik](https://github.com/adamsitnik)) -* [d634f4](https://github.com/dotnet/BenchmarkDotNet/commit/d634f405b5bab2d1acc65909ac1161c463fdd852) road to DNX: final cleanup (by [@adamsitnik](https://github.com/adamsitnik)) -* [24cd3a](https://github.com/dotnet/BenchmarkDotNet/commit/24cd3a7dc7f8491accdaf10c6a3e45e1d3f50c64) removing project.lock.json files (by [@adamsitnik](https://github.com/adamsitnik)) -* [80becb](https://github.com/dotnet/BenchmarkDotNet/commit/80becb3d8ba301a64808027c08d739e4f562630c) removing all .csproj & packages.config file + keeping only single .sln file (by [@adamsitnik](https://github.com/adamsitnik)) -* [9633d5](https://github.com/dotnet/BenchmarkDotNet/commit/9633d58678c0e2aa99b2b187a20176666f82b62a) removing nuspec (now auto-generated by VS based on project.json) + version in... (by [@adamsitnik](https://github.com/adamsitnik)) -* [617d82](https://github.com/dotnet/BenchmarkDotNet/commit/617d8200e54021e51d9b49cc7daa271e1709d9ff) running Classic Framework tests from console + minor cleanup (by [@adamsitnik](https://github.com/adamsitnik)) -* [fc9d98](https://github.com/dotnet/BenchmarkDotNet/commit/fc9d98910c6edfb4171835522d19fad6b8e5384b) DNX: running once compiled assembly directly without dotnet cli (perf+abble t... (by [@adamsitnik](https://github.com/adamsitnik)) -* [8adad8](https://github.com/dotnet/BenchmarkDotNet/commit/8adad8a02b7d5b22fb11024d696815fa3dd1323a) dnx: Diagnosers support. Currently only these which do not need umanaged libs... (by [@adamsitnik](https://github.com/adamsitnik)) -* [34c3c9](https://github.com/dotnet/BenchmarkDotNet/commit/34c3c9e2377190e744d6616f1fef4314edeb6a58) DNX: changed folder of the auto-generated files to benchmark-specific + samples (by [@adamsitnik](https://github.com/adamsitnik)) -* [9cf009](https://github.com/dotnet/BenchmarkDotNet/commit/9cf00950e4bc26f5abaf41b5eb1d2bf82a6fc196) DNX: description for development (by [@adamsitnik](https://github.com/adamsitnik)) -* [43af33](https://github.com/dotnet/BenchmarkDotNet/commit/43af33aacd38cf795863115dd13d905a235f9e62) update to dotnet cli changes: output path and exit codes , now we set output... (by [@adamsitnik](https://github.com/adamsitnik)) -* [f59d3e](https://github.com/dotnet/BenchmarkDotNet/commit/f59d3e8ee1d61f951d9b330e76c1eaa52c07aced) Merge pull request #87 from adamsitnik/master (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.9.3.md b/docs/_changelog/details/v0.9.3.md deleted file mode 100644 index 03aa084316..0000000000 --- a/docs/_changelog/details/v0.9.3.md +++ /dev/null @@ -1,37 +0,0 @@ -## Milestone details - -In the [v0.9.3](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.9.3) scope, -2 issues were resolved and 1 pull requests were merged. -This release includes 12 commits by 2 contributors. - -## Resolved issues (2) - -* [#52](https://github.com/dotnet/BenchmarkDotNet/issues/52) CoreCLR Compatibility -* [#114](https://github.com/dotnet/BenchmarkDotNet/issues/114) Update NETStandard.Library dependency - -## Merged pull requests (1) - -* [#113](https://github.com/dotnet/BenchmarkDotNet/pull/113) Core Clr support (by [@adamsitnik](https://github.com/adamsitnik)) - -## Commits (12) - -* [5b6460](https://github.com/dotnet/BenchmarkDotNet/commit/5b6460199f2d1a45dea750fa09408ccd5d29e8cb) Core: compilable main project (by [@adamsitnik](https://github.com/adamsitnik)) -* [cfdde6](https://github.com/dotnet/BenchmarkDotNet/commit/cfdde6847fa30c389b71adf37cbb8510702f278a) Core: compilable samples and tests projects (by [@adamsitnik](https://github.com/adamsitnik)) -* [ab8b26](https://github.com/dotnet/BenchmarkDotNet/commit/ab8b26559c5de4f82c00d85cf79b9235d2cd3a6b) Core: new profile for running Samples from VS (by [@adamsitnik](https://github.com/adamsitnik)) -* [9e1372](https://github.com/dotnet/BenchmarkDotNet/commit/9e13722dc0534c10a3aad911e33722f9030ff661) Core: new toolchain implementation with dnx451 code reuse (by [@adamsitnik](https://github.com/adamsitnik)) -* [de8bcc](https://github.com/dotnet/BenchmarkDotNet/commit/de8bcce5626a7dd2a6611602b881a14277259932) Core: tests: script to run both dnx and core (by [@adamsitnik](https://github.com/adamsitnik)) -* [05d50f](https://github.com/dotnet/BenchmarkDotNet/commit/05d50f0ace9fbdc0ca69a71fd871ecd8b497d59a) Core: dotnet cli supports only x64 now, workaround (by [@adamsitnik](https://github.com/adamsitnik)) -* [726c66](https://github.com/dotnet/BenchmarkDotNet/commit/726c66f213b1899bfc5298ea1532eba176f37c2b) Core: executing only supported benchmarks (x86 and Legacy Jit are not supported) (by [@adamsitnik](https://github.com/adamsitnik)) -* [de3371](https://github.com/dotnet/BenchmarkDotNet/commit/de337116a0c1b84b90e20353b6a70eadba834f82) Core: Dnx and Core as Runtimes, removed Toolchain configuration (by [@adamsitnik](https://github.com/adamsitnik)) -* [e7a3a8](https://github.com/dotnet/BenchmarkDotNet/commit/e7a3a84fe23057c0798d41862571716fb190a651) Core: generating path in Linux-friendly way ;) (by [@adamsitnik](https://github.com/adamsitnik)) -* [fede7c](https://github.com/dotnet/BenchmarkDotNet/commit/fede7c1d81d666a28bf281f254d2ac5ff57cfc16) Core: notify user when the process.Priority can not be set and continue execu... (by [@adamsitnik](https://github.com/adamsitnik)) -* [d59827](https://github.com/dotnet/BenchmarkDotNet/commit/d59827c79133d7dbbe4f2fcb3e9b2416b00f60f1) Merge pull request #113 from PerfDotNet/coreclr (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [939891](https://github.com/dotnet/BenchmarkDotNet/commit/939891dcb62a54cd855dc3bb9ae288a08afc3d21) Set library version: 0.9.3 (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.9.4.md b/docs/_changelog/details/v0.9.4.md deleted file mode 100644 index 117e979c19..0000000000 --- a/docs/_changelog/details/v0.9.4.md +++ /dev/null @@ -1,94 +0,0 @@ -## Milestone details - -In the [v0.9.4](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.9.4) scope, -13 issues were resolved and 2 pull requests were merged. -This release includes 55 commits by 4 contributors. - -## Resolved issues (13) - -* [#41](https://github.com/dotnet/BenchmarkDotNet/issues/41) Seems, not supported "sub-folder" -* [#49](https://github.com/dotnet/BenchmarkDotNet/issues/49) Dependent assemblies are not copied or added to the project file. -* [#72](https://github.com/dotnet/BenchmarkDotNet/issues/72) Referenced assembly dll-file (directly via file) not referenced in generated Program.csproj -* [#78](https://github.com/dotnet/BenchmarkDotNet/issues/78) Better command line discoverability (assignee: [@mattwarren](https://github.com/mattwarren)) -* [#92](https://github.com/dotnet/BenchmarkDotNet/issues/92) Results in the R graphs aren't displayed in a "Natural Sort Order" -* [#95](https://github.com/dotnet/BenchmarkDotNet/issues/95) Results should preserve the order of param values definition -* [#96](https://github.com/dotnet/BenchmarkDotNet/issues/96) Implement enums as valid Param for test -* [#97](https://github.com/dotnet/BenchmarkDotNet/issues/97) Params changes an order -* [#104](https://github.com/dotnet/BenchmarkDotNet/issues/104) System.InvalidOperationException: StatSummary: Sequence contains no elements -* [#105](https://github.com/dotnet/BenchmarkDotNet/issues/105) Params Attribute bug with float type -* [#116](https://github.com/dotnet/BenchmarkDotNet/issues/116) Issue when ParamAttribute decorated property is double and current system culture has comma as decimal separator -* [#119](https://github.com/dotnet/BenchmarkDotNet/issues/119) For large benchmarks report exporting is very, very slow and has a massive Gen2 heap -* [#123](https://github.com/dotnet/BenchmarkDotNet/issues/123) Can not run benchmark that references custom framework library (like WindowsBase) - -## Merged pull requests (2) - -* [#124](https://github.com/dotnet/BenchmarkDotNet/pull/124) Faster export (by [@adamsitnik](https://github.com/adamsitnik)) -* [#125](https://github.com/dotnet/BenchmarkDotNet/pull/125) supporting all kinds of references for generated project (by [@adamsitnik](https://github.com/adamsitnik)) - -## Commits (55) - -* [74789d](https://github.com/dotnet/BenchmarkDotNet/commit/74789dac32b63dc68ef9fc9a5e76a9b3b6cdc47a) Sort results by Parameter, in a Natural Sort Order (by [@mattwarren](https://github.com/mattwarren)) -* [fec115](https://github.com/dotnet/BenchmarkDotNet/commit/fec115216e622b3362980c0ea5991442f13b76af) ParameterComparer refacotring (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [9d3856](https://github.com/dotnet/BenchmarkDotNet/commit/9d38562ee2241139c27dfc37f60f0bb897e58736) Add information about JIT modules in EnvironmentHelper (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [7667ee](https://github.com/dotnet/BenchmarkDotNet/commit/7667ee321320b76be7a41ee02320b03cc5976153) Adding TraceEvent library for parsing ETW Events (by [@mattwarren](https://github.com/mattwarren)) -* [ae71f2](https://github.com/dotnet/BenchmarkDotNet/commit/ae71f296843b2d9bd05892477241c4193573b42e) More work on the GC/Allocation diagnostics (by [@mattwarren](https://github.com/mattwarren)) -* [efa739](https://github.com/dotnet/BenchmarkDotNet/commit/efa7391d05b550ec5715a18c205924f94265bd0b) Allow diagnosers to be run from cmd line or via [Config(..)] (by [@mattwarren](https://github.com/mattwarren)) -* [633f1c](https://github.com/dotnet/BenchmarkDotNet/commit/633f1c414dac352eb33b6d28a7ab381c871ea5e8) Throw an error when invalid Config(..) options are specified (by [@mattwarren](https://github.com/mattwarren)) -* [04678a](https://github.com/dotnet/BenchmarkDotNet/commit/04678af2a0f50d06292bbdd0dabf07b3bd810cb8) Add information about HardwareTimerKind (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [7f3cf0](https://github.com/dotnet/BenchmarkDotNet/commit/7f3cf06dfae24a7873f1e0b8ad6c7ff7623717ce) Fix in GetCorrectTypeNameTest (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [d9b890](https://github.com/dotnet/BenchmarkDotNet/commit/d9b8909e85587acef17f7f6c1e310eb1f0178e4b) Fix in HardwareTimerKind (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [416e36](https://github.com/dotnet/BenchmarkDotNet/commit/416e36eb6bcb71d025cb9c7bd416df127d83a2ba) Natural sort order for CsvMeasurementsExporter and plots, Fixed #92 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [dfc54a](https://github.com/dotnet/BenchmarkDotNet/commit/dfc54aeb19996e4a2f6104fe8687cc558496a0ac) Ensure we sort the results by Method Name/Description (by [@mattwarren](https://github.com/mattwarren)) -* [fa6c62](https://github.com/dotnet/BenchmarkDotNet/commit/fa6c627776d2560e709150a50a7af1fdfae8af3e) Changed GCDiagnoser to inspect live ETW event stream instead of recording to ... (by [@goldshtn](https://github.com/goldshtn)) -* [d3f7ce](https://github.com/dotnet/BenchmarkDotNet/commit/d3f7ce6294fe94150c810bc27122d2aa927748dc) Params: float/double/decimal support, Fixed #105 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [7bce9b](https://github.com/dotnet/BenchmarkDotNet/commit/7bce9b1d1ab92a4095cbf6332f5359736877729e) Params: enum support, Fixed #96 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [4890dd](https://github.com/dotnet/BenchmarkDotNet/commit/4890dd5717843a00100eedcc55166d3375a82232) Merge pull request #106 from goldshtn/develop (by [@mattwarren](https://github.com/mattwarren)) -* [9072b9](https://github.com/dotnet/BenchmarkDotNet/commit/9072b9819d440e2c9c6c9a3aac4bfe90edbe3f6b) More robust when a benchmark throws an exception (see #104) (by [@mattwarren](https://github.com/mattwarren)) -* [2b9162](https://github.com/dotnet/BenchmarkDotNet/commit/2b9162d75af7cb851122d7e1e3993a02ce258eee) Work on #73 - highlighting in the Console output (by [@mattwarren](https://github.com/mattwarren)) -* [f62483](https://github.com/dotnet/BenchmarkDotNet/commit/f624833aba851a1fb38d9519d6e8c453229a8b1a) Work on #73 - highlighting in the Console output (by [@mattwarren](https://github.com/mattwarren)) -* [a639d5](https://github.com/dotnet/BenchmarkDotNet/commit/a639d5abf26bc8d2ac25cc00ca2748867bff3532) Work on #73 - highlighting in Markdown output (by [@mattwarren](https://github.com/mattwarren)) -* [1457fe](https://github.com/dotnet/BenchmarkDotNet/commit/1457feb8cde35d1f0ce06f48b6b29f300f7e13f7) Changing [ConfigWithDryJobs] -> [DryConfig] (by [@mattwarren](https://github.com/mattwarren)) -* [396b7d](https://github.com/dotnet/BenchmarkDotNet/commit/396b7dc74b20eb8a6a091a0c1d27e5cb45768e49) Diagnostics for "JIT In-lining" events (by [@mattwarren](https://github.com/mattwarren)) -* [7a1027](https://github.com/dotnet/BenchmarkDotNet/commit/7a1027cd954ebb120a4659d8db2a58e04401abdf) Merge remote-tracking branch 'origin/master' into develop (by [@adamsitnik](https://github.com/adamsitnik)) -* [6ec7f0](https://github.com/dotnet/BenchmarkDotNet/commit/6ec7f0e35ba6cf61b79e39849c79d2b64a229fbb) GC Diagnosers: reference to nuget package, unit test for both CLASSIC and DNX (by [@adamsitnik](https://github.com/adamsitnik)) -* [9e7059](https://github.com/dotnet/BenchmarkDotNet/commit/9e70594b4323211dda7a42806b38ee15d7857fcb) Proper XML Doc comment for DryConfig attribute (by [@mattwarren](https://github.com/mattwarren)) -* [ad6be7](https://github.com/dotnet/BenchmarkDotNet/commit/ad6be7f7326cd8acbc05565193ccf4acf684a366) README.md: update (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [a4d0b8](https://github.com/dotnet/BenchmarkDotNet/commit/a4d0b85d8b9358b0d4f421e6c332b9d649099212) Merge branch 'master' into develop (by [@adamsitnik](https://github.com/adamsitnik)) -* [71e911](https://github.com/dotnet/BenchmarkDotNet/commit/71e9119474c0030a87719b91c283bb76fd0d1260) perf: CSV export: less allocations, reusing JobShortInfo (by [@adamsitnik](https://github.com/adamsitnik)) -* [409b5e](https://github.com/dotnet/BenchmarkDotNet/commit/409b5e1cc65b1e44f430f6ea3d1a1dd2244619f6) perf: logging with less allocations (by [@adamsitnik](https://github.com/adamsitnik)) -* [be6bfc](https://github.com/dotnet/BenchmarkDotNet/commit/be6bfc1880bf83e44c73b8b6d6e32373d6c8cbe6) perf: simpified LoggerWithPrefix, no need to check for multiple lines because... (by [@adamsitnik](https://github.com/adamsitnik)) -* [ade8a1](https://github.com/dotnet/BenchmarkDotNet/commit/ade8a1af06fe42bc3e522e7a927d6fc5714600bf) perf: avoid string.Concat and string.PadLeft (by [@adamsitnik](https://github.com/adamsitnik)) -* [f070eb](https://github.com/dotnet/BenchmarkDotNet/commit/f070eb43fdffa02819ee0fe4abe800d700bd35e8) perf: reuse AllProperties, reduced complexity (by [@adamsitnik](https://github.com/adamsitnik)) -* [57c88b](https://github.com/dotnet/BenchmarkDotNet/commit/57c88bb6440a1aa805adf3fe932c5871454e550d) perf: deffer export to enable continuous progress updates instead of single l... (by [@adamsitnik](https://github.com/adamsitnik)) -* [40071d](https://github.com/dotnet/BenchmarkDotNet/commit/40071d68dc3ab84b51588013aa2c61b56946524d) loggers: final cleanup and fix for doubled new lines for diagnosers (by [@adamsitnik](https://github.com/adamsitnik)) -* [c46854](https://github.com/dotnet/BenchmarkDotNet/commit/c468547441e9bd6f4c2e695b9b7ad457aa899c9a) supporting all kinds of references for generated project. This closes #49, cl... (by [@adamsitnik](https://github.com/adamsitnik)) -* [a36e34](https://github.com/dotnet/BenchmarkDotNet/commit/a36e3414db97343bbe0bfbedff85b8cb912ee7a4) Initial work on better cmd line discoverability (part of #78) (by [@mattwarren](https://github.com/mattwarren)) -* [3f0752](https://github.com/dotnet/BenchmarkDotNet/commit/3f0752bfbd9c4d57fd9a6732fd7f6253cb333c9c) Better formatting in the Baseline column (by [@mattwarren](https://github.com/mattwarren)) -* [8ab1a2](https://github.com/dotnet/BenchmarkDotNet/commit/8ab1a2b65f78384d1aa667a65ec4bd11d1404eda) More samples (by [@mattwarren](https://github.com/mattwarren)) -* [1981a3](https://github.com/dotnet/BenchmarkDotNet/commit/1981a3aba04e1d4d1e8384836a38eb094c43225c) Refactoring of ConfigParser code (part of #78) (by [@mattwarren](https://github.com/mattwarren)) -* [3d1eba](https://github.com/dotnet/BenchmarkDotNet/commit/3d1ebaa9fcf7f74a9e8a724d49ddc43c57560027) Allows "Exporters" and "Analysers" to be specified via cmd line (part of #78) (by [@mattwarren](https://github.com/mattwarren)) -* [5d195a](https://github.com/dotnet/BenchmarkDotNet/commit/5d195ad4b85cf2d5dcae1f472098cc89f627294c) Allow "all" option, i.e. "exporters=all" (part of #78) (by [@mattwarren](https://github.com/mattwarren)) -* [2146b8](https://github.com/dotnet/BenchmarkDotNet/commit/2146b83daa30d7e297e4ebac86b51b93352b42bf) Added some tests for ConfigParser (by [@mattwarren](https://github.com/mattwarren)) -* [582e08](https://github.com/dotnet/BenchmarkDotNet/commit/582e08929566b41fa48f1cb76a468e344d872937) Merge pull request #124 from PerfDotNet/perf (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [84e67d](https://github.com/dotnet/BenchmarkDotNet/commit/84e67d1089978577d99b720532e9b17438ef2e91) README: Update team section (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [4d6001](https://github.com/dotnet/BenchmarkDotNet/commit/4d600156eff57f68b6726014a6a940dadd282dc7) README: add FAQ question (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [43ade3](https://github.com/dotnet/BenchmarkDotNet/commit/43ade3c4daf0f64f7acdeffc99c34c0c56ab6a7b) BenchmarkDotNet.Samples: add #CLASSIC_RELEASE in launchSettings (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [e3c2d1](https://github.com/dotnet/BenchmarkDotNet/commit/e3c2d12f38c3a97e8571c1b5a49db18436b6af3c) README: some improvements (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [c416c4](https://github.com/dotnet/BenchmarkDotNet/commit/c416c4512a85a7b2df447e88d1a9283174923fed) use the highest used target framework version to avoid framework mismatches +... (by [@adamsitnik](https://github.com/adamsitnik)) -* [8a49b3](https://github.com/dotnet/BenchmarkDotNet/commit/8a49b393eddebef3787d323a7af02cb76ceb5002) Merge branch 'develop' into references (by [@adamsitnik](https://github.com/adamsitnik)) -* [23b2ea](https://github.com/dotnet/BenchmarkDotNet/commit/23b2eafe08de826297beefc99cc5300e5a5e503c) integration tests for complex references scenarios (by [@adamsitnik](https://github.com/adamsitnik)) -* [ddfa4a](https://github.com/dotnet/BenchmarkDotNet/commit/ddfa4a295e6a3d9844d5203ef3ef980150a5c579) classic: specify full name and use newer msbuild dlls to avoid calling extra bat (by [@adamsitnik](https://github.com/adamsitnik)) -* [79e8eb](https://github.com/dotnet/BenchmarkDotNet/commit/79e8eb4a0a2c07ba9a9af5a15c0d45f7d1402758) code cleanup after LINQPad 4 & 5 verification (by [@adamsitnik](https://github.com/adamsitnik)) -* [445137](https://github.com/dotnet/BenchmarkDotNet/commit/445137fbba9d292f47dfd10a0b11fc7e073cfc7c) Merge pull request #125 from PerfDotNet/references (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [4f1e1f](https://github.com/dotnet/BenchmarkDotNet/commit/4f1e1f0ef72a0b9c52c033bf0b86a20c78f36e8f) Update package description (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [0f5531](https://github.com/dotnet/BenchmarkDotNet/commit/0f55318e680b7cfcc20da0cbff62af485b9f19c3) Set library version: 0.9.4 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (4) - -* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik)) -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* Matt Warren ([@mattwarren](https://github.com/mattwarren)) -* Sasha Goldshtein ([@goldshtn](https://github.com/goldshtn)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.9.5.md b/docs/_changelog/details/v0.9.5.md deleted file mode 100644 index e9351b8fa7..0000000000 --- a/docs/_changelog/details/v0.9.5.md +++ /dev/null @@ -1,82 +0,0 @@ -## Milestone details - -In the [v0.9.5](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.9.5) scope, -13 issues were resolved and 0 pull requests were merged. -This release includes 45 commits by 4 contributors. - -## Resolved issues (13) - -* [#67](https://github.com/dotnet/BenchmarkDotNet/issues/67) F# requiring assembly binding redirects for FSharp.Core -* [#94](https://github.com/dotnet/BenchmarkDotNet/issues/94) Put all the generated artifacts in a separate folder -* [#101](https://github.com/dotnet/BenchmarkDotNet/issues/101) Strong naming? -* [#107](https://github.com/dotnet/BenchmarkDotNet/issues/107) Specify benchmark method order -* [#122](https://github.com/dotnet/BenchmarkDotNet/issues/122) Reports: Move params columns next to Method column -* [#128](https://github.com/dotnet/BenchmarkDotNet/issues/128) Print dotnet cli version in EnvironmentInfo -* [#129](https://github.com/dotnet/BenchmarkDotNet/issues/129) Improve DnxAndCoreTests -* [#132](https://github.com/dotnet/BenchmarkDotNet/issues/132) [Bug] FileNotFoundException On 0.9.4. -* [#134](https://github.com/dotnet/BenchmarkDotNet/issues/134) [Feature request] Release builds only? -* [#137](https://github.com/dotnet/BenchmarkDotNet/issues/137) Brand new machine with VS 2015 only b0rks -* [#142](https://github.com/dotnet/BenchmarkDotNet/issues/142) [Suggestion] BenchmarkDotNet.Analyzers.IAnalyser - use same spelling for namespace and type? -* [#148](https://github.com/dotnet/BenchmarkDotNet/issues/148) Crash on [Params] with a string value that contains an invalid path char -* [#150](https://github.com/dotnet/BenchmarkDotNet/issues/150) Declaring nested enums and using them as parameter value make incorrectly generated code/ - -## Merged pull requests (0) - - -## Commits (45) - -* [2645ef](https://github.com/dotnet/BenchmarkDotNet/commit/2645ef3c25225730d5f255d2e4dde8a6c10da78d) use AutoGenerateBindingRedirects to avoid assembly conflicts, fixes #67 (by [@adamsitnik](https://github.com/adamsitnik)) -* [693b21](https://github.com/dotnet/BenchmarkDotNet/commit/693b21226e1ce24b503676b521f04cea14cc49f0) warn user if dotnet cli is not installed and print it's version in summary, f... (by [@adamsitnik](https://github.com/adamsitnik)) -* [bfb017](https://github.com/dotnet/BenchmarkDotNet/commit/bfb017fe84b55d78762cd270fbd23a8221b17645) target NET46 to reference msbuild 14 that comes with VS 2015 to make BDN work... (by [@adamsitnik](https://github.com/adamsitnik)) -* [fceb3c](https://github.com/dotnet/BenchmarkDotNet/commit/fceb3cfb3c4a110bafb062283bc7ad3e06b5136f) fallback to bat if MSBuild dlls are not found + generate bat when needed (by [@adamsitnik](https://github.com/adamsitnik)) -* [49bdf0](https://github.com/dotnet/BenchmarkDotNet/commit/49bdf0b5aec8070ee7ae37973ff6a758cb51d079) restore: generating build script file (now for all runtimes) (by [@adamsitnik](https://github.com/adamsitnik)) -* [b9b0bc](https://github.com/dotnet/BenchmarkDotNet/commit/b9b0bc7615eadb602b1fbb6adce054763218b9e0) scripts: cleanup -> build -> show failed tests if any ->cleanup, fixes #129 (by [@adamsitnik](https://github.com/adamsitnik)) -* [ad64d8](https://github.com/dotnet/BenchmarkDotNet/commit/ad64d8c5541a903873d6a49bb460aae107872def) Put all the generated artifacts in a separate folder, fixes #94 (by [@adamsitnik](https://github.com/adamsitnik)) -* [902de6](https://github.com/dotnet/BenchmarkDotNet/commit/902de698c2cde8227243a19b25384753b3d18cbb) F# samples targeting .NET Core +classic F# part reorganization (by [@adamsitnik](https://github.com/adamsitnik)) -* [b31c0b](https://github.com/dotnet/BenchmarkDotNet/commit/b31c0bbd7f6681c0ea7295a2f749683727746b18) supported languages: updated readme & integration tests for Visual Basic (by [@adamsitnik](https://github.com/adamsitnik)) -* [24ade7](https://github.com/dotnet/BenchmarkDotNet/commit/24ade7c391240de34e79fae1215d030313fb79ee) handle missing MSBuild.dll, get latest msbuild in fallback script scenario, s... (by [@adamsitnik](https://github.com/adamsitnik)) -* [d371de](https://github.com/dotnet/BenchmarkDotNet/commit/d371de973ee764399e9e36f1564210958530818d) Spelling mistake in errors message (see #139) (by [@mattwarren](https://github.com/mattwarren)) -* [c882dd](https://github.com/dotnet/BenchmarkDotNet/commit/c882dd906ff39b4610ec523befbb88d6b9b85967) core: dependencies cleanup + getting rid of warnings (by [@adamsitnik](https://github.com/adamsitnik)) -* [b14e35](https://github.com/dotnet/BenchmarkDotNet/commit/b14e354c274e89ec78cc9fe11cd5e35b394e03a8) Add IOrderProvider, fixes #107 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [c95267](https://github.com/dotnet/BenchmarkDotNet/commit/c95267bd5a427375e00ffa468b955df7b4f6f500) warn user if non-optimized dll is used, fixes #134 (by [@adamsitnik](https://github.com/adamsitnik)) -* [5876f5](https://github.com/dotnet/BenchmarkDotNet/commit/5876f573b1d566d4a9048ef2b78cb8e196eea6b6) Strong naming, fixes #101 (by [@adamsitnik](https://github.com/adamsitnik)) -* [036168](https://github.com/dotnet/BenchmarkDotNet/commit/036168eb2d97eae8b184ae8a3918a3be5a6e8eab) Analys(z)ers unification, lets use single spelling, fixes #142 (by [@adamsitnik](https://github.com/adamsitnik)) -* [2fa5c0](https://github.com/dotnet/BenchmarkDotNet/commit/2fa5c02a8f8751a299cb95ec423e70e72039ba43) Update README.md (by [@JohanLarsson](https://github.com/JohanLarsson)) -* [8b8641](https://github.com/dotnet/BenchmarkDotNet/commit/8b8641eb193c48684de2d1a3f9a563b8d1ab8978) Merge pull request #145 from JohanLarsson/master (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [734533](https://github.com/dotnet/BenchmarkDotNet/commit/7345338f3020ce299c2e83a50ebd92b22406d6fb) introducing Validators: validate benchmarks before running, return errors in ... (by [@adamsitnik](https://github.com/adamsitnik)) -* [eaa943](https://github.com/dotnet/BenchmarkDotNet/commit/eaa943148d4ee9affe11682deb3f623e83fac03e) ExecutionValidator: allow users to verify that all their benchmarks are runna... (by [@adamsitnik](https://github.com/adamsitnik)) -* [e4fa4b](https://github.com/dotnet/BenchmarkDotNet/commit/e4fa4b12cec12cd8504e56fe0eefd2295389295c) support overriding with 'stronger' validators, eliminate duplicates (by [@adamsitnik](https://github.com/adamsitnik)) -* [57666a](https://github.com/dotnet/BenchmarkDotNet/commit/57666a9c7fa7d4ccb00df1ba385afd39eafc914c) Add column order for SummaryTable, fixes #122 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [62af92](https://github.com/dotnet/BenchmarkDotNet/commit/62af92614ba2180082dbcdba12ccdf97b18c0dad) Minor fixes in README (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [5e6877](https://github.com/dotnet/BenchmarkDotNet/commit/5e687783ad141545cc5e21c61797e03b7697f6f0) updated README (by [@adamsitnik](https://github.com/adamsitnik)) -* [1255a4](https://github.com/dotnet/BenchmarkDotNet/commit/1255a43e74560e3392225b78cb839edf7e581647) Initial work on BenchmarkDotNet.Diagnostics.Windows rename (by [@mattwarren](https://github.com/mattwarren)) -* [59ca8c](https://github.com/dotnet/BenchmarkDotNet/commit/59ca8c15a92483ec98270d5af4282cc60ad04d47) Ensure renamed diagnostics dll is loaded (BenchmarkDotNet.Diagnostics.Windows... (by [@mattwarren](https://github.com/mattwarren)) -* [825193](https://github.com/dotnet/BenchmarkDotNet/commit/82519385f43a6ad3cb246634cb103cc5ce4fdcc9) Added info about Diagnosers (by [@mattwarren](https://github.com/mattwarren)) -* [b836c5](https://github.com/dotnet/BenchmarkDotNet/commit/b836c588c19cef97abe23edb4db87bcf70916ce7) Spelling/formatting (by [@mattwarren](https://github.com/mattwarren)) -* [3f74c7](https://github.com/dotnet/BenchmarkDotNet/commit/3f74c703bd61b171a2e460cfb3371029fddf8c9f) Fixing project.json (after I overwrite previous changes) (by [@mattwarren](https://github.com/mattwarren)) -* [c24a78](https://github.com/dotnet/BenchmarkDotNet/commit/c24a78fbc853cd9b1d80ee1c9ac23f088e1763f5) Merge branch 'develop' of https://github.com/PerfDotNet/BenchmarkDotNet into ... (by [@mattwarren](https://github.com/mattwarren)) -* [8c678f](https://github.com/dotnet/BenchmarkDotNet/commit/8c678f204e65b6840638a808c41dd29d7de901f8) reflecting recent Diagnosers->Diagnostics.Windows changes (by [@adamsitnik](https://github.com/adamsitnik)) -* [9bcdca](https://github.com/dotnet/BenchmarkDotNet/commit/9bcdca0a4ad7ce7ef765d1fc46926cfc71c7020a) Executing single Benchmark for multiple Runtimes [with Diagnoser attached] #117 (by [@adamsitnik](https://github.com/adamsitnik)) -* [4dffdb](https://github.com/dotnet/BenchmarkDotNet/commit/4dffdb89c20cf2803ecb6e2ff7717e0b30f2f773) Switching to new ‘dotnet’ target framework monikers (by [@adamsitnik](https://github.com/adamsitnik)) -* [81b1e4](https://github.com/dotnet/BenchmarkDotNet/commit/81b1e44b9ce0e6b6df377df951cb0be385e9362a) improved Runtimes descriptions + .NET 4.6.2 support (by [@adamsitnik](https://github.com/adamsitnik)) -* [8e92e1](https://github.com/dotnet/BenchmarkDotNet/commit/8e92e1eb2bc3d83825b4653d32b1d57ce85d0a53) dnx452 and dnx46 support (by [@adamsitnik](https://github.com/adamsitnik)) -* [06efde](https://github.com/dotnet/BenchmarkDotNet/commit/06efde8b6c7133e98f3fb89bd056e94fa63b4532) Fix in BaselineDiffColumnTest, see also #122 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [f79f83](https://github.com/dotnet/BenchmarkDotNet/commit/f79f830fac4f42122b3b93c984f78608c54d20a3) DEVELOPING.md: use stable version of dotnet cli (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [c2206d](https://github.com/dotnet/BenchmarkDotNet/commit/c2206d068c0429629c41958ac9e470239caafc88) BenchmarkDotNet/project.json: correct version for System.IO.FileSystem (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [1b650d](https://github.com/dotnet/BenchmarkDotNet/commit/1b650d1d52ca57a607afc7b3c4b1c74dfa2b1c3e) Support for nested Enums as Params values, fixes #150 (by [@adamsitnik](https://github.com/adamsitnik)) -* [76ef44](https://github.com/dotnet/BenchmarkDotNet/commit/76ef44ab442813e092c61f0c740558ca406335ec) characters as Params support, including invalid path characters, fixes #148 (by [@adamsitnik](https://github.com/adamsitnik)) -* [14e45c](https://github.com/dotnet/BenchmarkDotNet/commit/14e45c1b365a7b233eae1033c75ff8062b3eabed) Distinct jobs to avoid possible duplication when config is doubled (by [@adamsitnik](https://github.com/adamsitnik)) -* [837254](https://github.com/dotnet/BenchmarkDotNet/commit/8372547e68bd497a2b47ac6718e1db3be9a7aa43) cleanup (by [@adamsitnik](https://github.com/adamsitnik)) -* [d0cf6b](https://github.com/dotnet/BenchmarkDotNet/commit/d0cf6b8f9324b10ddebe819e4f59bea1a42eeec5) added NETCore.Platforms dependency to make dotnet cli restore our Core projects (by [@adamsitnik](https://github.com/adamsitnik)) -* [f7a20e](https://github.com/dotnet/BenchmarkDotNet/commit/f7a20e87579e7ed0cd3b93d43bdb185361a4c9bb) replacing the chars that are invalid for file names, not only paths #148 (by [@adamsitnik](https://github.com/adamsitnik)) -* [e31872](https://github.com/dotnet/BenchmarkDotNet/commit/e31872d1e521da27d46a919a58fb29253562e56a) Set library version: 0.9.5 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (4) - -* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik)) -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* Johan Larsson ([@JohanLarsson](https://github.com/JohanLarsson)) -* Matt Warren ([@mattwarren](https://github.com/mattwarren)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.9.6.md b/docs/_changelog/details/v0.9.6.md deleted file mode 100644 index 81002acbff..0000000000 --- a/docs/_changelog/details/v0.9.6.md +++ /dev/null @@ -1,78 +0,0 @@ -## Milestone details - -In the [v0.9.6](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.9.6) scope, -11 issues were resolved and 2 pull requests were merged. -This release includes 40 commits by 5 contributors. - -## Resolved issues (11) - -* [#100](https://github.com/dotnet/BenchmarkDotNet/issues/100) Code generation doesn't support generic classes -* [#112](https://github.com/dotnet/BenchmarkDotNet/issues/112) Generic benchmark classes are not supported -* [#140](https://github.com/dotnet/BenchmarkDotNet/issues/140) Readd an ability to define and to use custom Toolchain -* [#141](https://github.com/dotnet/BenchmarkDotNet/issues/141) [Request for comments] Assembly-level config attribute? -* [#151](https://github.com/dotnet/BenchmarkDotNet/issues/151) Crash during benchmark with baseline -* [#152](https://github.com/dotnet/BenchmarkDotNet/issues/152) MarkdownExporter.Default.ExportToLog fails with NRE for Summary with Critical Validation Errors -* [#153](https://github.com/dotnet/BenchmarkDotNet/issues/153) ManualConfig.Add(IConfig config) does not add the validators. -* [#156](https://github.com/dotnet/BenchmarkDotNet/issues/156) Cleanup benchmark folders -* [#158](https://github.com/dotnet/BenchmarkDotNet/issues/158) BaselineDiffColumn: NullReferenceException if one of the benchmark methods was failed. -* [#161](https://github.com/dotnet/BenchmarkDotNet/issues/161) Build warnings after update to 0.9.5 -* [#171](https://github.com/dotnet/BenchmarkDotNet/issues/171) Problem with ExceptionDispatchInfo (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Merged pull requests (2) - -* [#138](https://github.com/dotnet/BenchmarkDotNet/pull/138) Percentiles added into Statistics, StatisticColumn, BaselineDiffColumn (by [@ig-sinicyn](https://github.com/ig-sinicyn)) -* [#164](https://github.com/dotnet/BenchmarkDotNet/pull/164) Percentiles added into Statistics, StatisticColumn, BaselineDiffColumn (by [@ig-sinicyn](https://github.com/ig-sinicyn)) - -## Commits (40) - -* [9e625a](https://github.com/dotnet/BenchmarkDotNet/commit/9e625a0d3d39fdbbf89740fbf8408afdbe1c6d38) copying validators when merging configs, fixes #153 (by [@adamsitnik](https://github.com/adamsitnik)) -* [5d0a7d](https://github.com/dotnet/BenchmarkDotNet/commit/5d0a7d9074496af939f65afffd17013f3efad10d) returning empty objects instead of nulls, fixes #152 (by [@adamsitnik](https://github.com/adamsitnik)) -* [cfff3b](https://github.com/dotnet/BenchmarkDotNet/commit/cfff3b92b3586749a82de3d179bda423878deada) switching back to the old moniker that is supported not only by dnx and dotne... (by [@adamsitnik](https://github.com/adamsitnik)) -* [522fde](https://github.com/dotnet/BenchmarkDotNet/commit/522fde418d0063a345c477ea8fe4c819ae19fc1f) Initial work on Json export (#84) (by [@mattwarren](https://github.com/mattwarren)) -* [31452f](https://github.com/dotnet/BenchmarkDotNet/commit/31452f3a0698be785fa37e8668d2f54df26a5595) Make SimpleJson build under "DNXCore,Version=v5.0" - (#84) (by [@mattwarren](https://github.com/mattwarren)) -* [48b17a](https://github.com/dotnet/BenchmarkDotNet/commit/48b17aac6e6ac36ee77d44b023dca24149877b10) Merge branch 'develop' of github.com:PerfDotNet/BenchmarkDotNet into develop (by [@mattwarren](https://github.com/mattwarren)) -* [d8dad6](https://github.com/dotnet/BenchmarkDotNet/commit/d8dad6cf3d41e9d48b0129b642957596587cf500) removing ClrMD dependencies that were causing troubles with nuget package rel... (by [@adamsitnik](https://github.com/adamsitnik)) -* [0a81d4](https://github.com/dotnet/BenchmarkDotNet/commit/0a81d4cca4dbeec8d5653dc10d54d9469fd8eb26) removing ClrMd diagnosers, they are kept in clrmd branch (by [@adamsitnik](https://github.com/adamsitnik)) -* [972ea2](https://github.com/dotnet/BenchmarkDotNet/commit/972ea23f1a160e6cf141ec9051c41b871dd4881f) setting BenchmarkDotNet version to one that is not in the Nuget yet to get do... (by [@adamsitnik](https://github.com/adamsitnik)) -* [1e6581](https://github.com/dotnet/BenchmarkDotNet/commit/1e65819e68faaa3187bad7441171f324f6026223) Removing final traces or Runtime and Source SourceDiagnosers (by [@mattwarren](https://github.com/mattwarren)) -* [3576d4](https://github.com/dotnet/BenchmarkDotNet/commit/3576d4f4ccd619bcdff79742abb4d9496da7b0fc) Make BaselineDiffColumn more robust - fixes #158 and #151 (by [@mattwarren](https://github.com/mattwarren)) -* [3f0d7b](https://github.com/dotnet/BenchmarkDotNet/commit/3f0d7bbc21d5ac6c4f903e050d1a4d3ad3fba251) Exclude "BenchmarkDotNet.Artifacts" folder (can get in the way when building) (by [@mattwarren](https://github.com/mattwarren)) -* [00995d](https://github.com/dotnet/BenchmarkDotNet/commit/00995dfac270ae71e81897348ec379cd97fb01c3) Percentiles added into Statistics, StatisticColumn, BaselineDiffColumn (by [@ig-sinicyn](https://github.com/ig-sinicyn)) -* [2410d4](https://github.com/dotnet/BenchmarkDotNet/commit/2410d4c2cd772def2b7c5271f7d7ff756621891e) Update project.json files (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [ed75f6](https://github.com/dotnet/BenchmarkDotNet/commit/ed75f614836b4cc990b9be8baf7ffde4af17f87d) Assembly-level config attribute, Fixes #141 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [6f3a0c](https://github.com/dotnet/BenchmarkDotNet/commit/6f3a0cc97b3cb55289c61c6aab5d59e24c2b423c) Add a BenchmarkSwitcher constructor for assembly, see #141 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [4124d0](https://github.com/dotnet/BenchmarkDotNet/commit/4124d054a8fc6ffb12a4b81e4ec80164d12eb043) Catch InvalidOperationException in ClassicBuilder (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [9c8513](https://github.com/dotnet/BenchmarkDotNet/commit/9c8513fc02eaff368ef2955f8118173373d9871a) Cleanup benchmark folders (by default!), fixes #156 (by [@adamsitnik](https://github.com/adamsitnik)) -* [d0179f](https://github.com/dotnet/BenchmarkDotNet/commit/d0179f2dc0c47b759bc5f1fb997ab965700b7492) merge KeepBenchmarkFiles and allow fluent api usage, #156 (by [@adamsitnik](https://github.com/adamsitnik)) -* [b8130a](https://github.com/dotnet/BenchmarkDotNet/commit/b8130a47c149ca2e1ddbdc9319fe2bbaa86d7243) Readd an ability to define and to use custom Toolchain, fixes #140 (by [@adamsitnik](https://github.com/adamsitnik)) -* [8a263b](https://github.com/dotnet/BenchmarkDotNet/commit/8a263b23e7a70726546dbd7d020607e571f19926) moving KeepBenchmarkFiles merge logic to Add method (by [@adamsitnik](https://github.com/adamsitnik)) -* [e1e5c7](https://github.com/dotnet/BenchmarkDotNet/commit/e1e5c7c7fc349d106d48ec0bf0cd4b13888c61c3) Sample & documentation for percentiles (by [@ig-sinicyn](https://github.com/ig-sinicyn)) -* [0d4262](https://github.com/dotnet/BenchmarkDotNet/commit/0d42625e067b8575cefc07bbabe3011f1acb08c7) Merge commit '00995dfac270ae71e81897348ec379cd97fb01c3' into feature-percentiles (by [@ig-sinicyn](https://github.com/ig-sinicyn)) -* [54b4f0](https://github.com/dotnet/BenchmarkDotNet/commit/54b4f03297a31c45687b82b88c9c67da98c85241) Merge pull request #164 from ig-sinicyn/feature-percentiles (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [f8278c](https://github.com/dotnet/BenchmarkDotNet/commit/f8278cc1dce8785411b349383889b9d591fa8165) Generic benchmark support, fixes #100, fixes #112 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [c28056](https://github.com/dotnet/BenchmarkDotNet/commit/c280565c88e330688e2ea0c37c06317ff1e22926) Support Mono+.NET4.6 in CommonExtensions.ToStr. (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [285f77](https://github.com/dotnet/BenchmarkDotNet/commit/285f774ea1c2cacd2ef2006be304da8e88800fc6) set dependencies to MSBuild dlls as "type": "build" to make them implicit dep... (by [@adamsitnik](https://github.com/adamsitnik)) -* [42abd1](https://github.com/dotnet/BenchmarkDotNet/commit/42abd100c2089b1a11fd35a895cf499ab7a7f2e6) Merge remote-tracking branch 'refs/remotes/origin/develop' into develop (by [@mattwarren](https://github.com/mattwarren)) -* [030d6c](https://github.com/dotnet/BenchmarkDotNet/commit/030d6c1223a10cbb80b4d7932151c27da759bf02) Rename "GCDiagnoser" -> "MemoryDiagnoser" (by [@mattwarren](https://github.com/mattwarren)) -* [4e96e6](https://github.com/dotnet/BenchmarkDotNet/commit/4e96e65cc3405f0f9cae2c649f9ef14472c3b557) give compilation error instead of warning or exception at runtime (by [@adamsitnik](https://github.com/adamsitnik)) -* [0fbe10](https://github.com/dotnet/BenchmarkDotNet/commit/0fbe1054303ec6c7270d5f84948b991979992b8e) Revert "give compilation error instead of warning or exception at runtime" (by [@adamsitnik](https://github.com/adamsitnik)) -* [19708a](https://github.com/dotnet/BenchmarkDotNet/commit/19708ad7bccb817423095c9cedb13a4aa53bc9f1) Tidy up of the Integration tests (by [@mattwarren](https://github.com/mattwarren)) -* [f7b3a4](https://github.com/dotnet/BenchmarkDotNet/commit/f7b3a459a92fa13ca7ef1246b99f5774f544dd9c) Thread safe jobs, fixes #171 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [edf293](https://github.com/dotnet/BenchmarkDotNet/commit/edf293f6d6c69d18eeb0a4f3f4725bb06efdfe74) DisableTestParallelization for Classic integration tests to avoid races (by [@adamsitnik](https://github.com/adamsitnik)) -* [89165f](https://github.com/dotnet/BenchmarkDotNet/commit/89165f2193c074a1ebb3a78d269d6c07fef444b7) moving dll that is required for custom path integration tests out of root folder (by [@adamsitnik](https://github.com/adamsitnik)) -* [cbaa3b](https://github.com/dotnet/BenchmarkDotNet/commit/cbaa3bef2a3889eef3c2262b59b7bd693217bd6b) README: Add additional info about RPlotExprter (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [1cc936](https://github.com/dotnet/BenchmarkDotNet/commit/1cc93674b2dbacae49b3e792be6376c5403d3285) The benchmark is improperly testing the Max operation because as all the numb... (by [@redknightlois](https://github.com/redknightlois)) -* [40a1ea](https://github.com/dotnet/BenchmarkDotNet/commit/40a1ea0fd8fb646b71077e01b41404f1eae5ec2e) Merge pull request #173 from redknightlois/develop (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [a9bf3b](https://github.com/dotnet/BenchmarkDotNet/commit/a9bf3ba0c406ac28641a59d87e0bf820046b4173) README: add information about the diagnostics package (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [5191bc](https://github.com/dotnet/BenchmarkDotNet/commit/5191bc98e19d97dce83fd944172d9fe491d7f8de) Set library version: 0.9.6 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (5) - -* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik)) -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* Federico Andres Lois ([@redknightlois](https://github.com/redknightlois)) -* ig-sinicyn ([@ig-sinicyn](https://github.com/ig-sinicyn)) -* Matt Warren ([@mattwarren](https://github.com/mattwarren)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.9.7.md b/docs/_changelog/details/v0.9.7.md deleted file mode 100644 index b43e12fe96..0000000000 --- a/docs/_changelog/details/v0.9.7.md +++ /dev/null @@ -1,58 +0,0 @@ -## Milestone details - -In the [v0.9.7](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.9.7) scope, -8 issues were resolved and 0 pull requests were merged. -This release includes 27 commits by 3 contributors. - -## Resolved issues (8) - -* [#168](https://github.com/dotnet/BenchmarkDotNet/issues/168) Unable to run tests locally -* [#170](https://github.com/dotnet/BenchmarkDotNet/issues/170) Error handling in the spawned Benchmark process (assignee: [@mattwarren](https://github.com/mattwarren)) -* [#172](https://github.com/dotnet/BenchmarkDotNet/issues/172) Ensure CsvMeasurementsExporter is enabled when RPlotExporter is used (assignee: [@mattwarren](https://github.com/mattwarren)) -* [#179](https://github.com/dotnet/BenchmarkDotNet/issues/179) Job.GetAllProperties(): old property names are used -* [#181](https://github.com/dotnet/BenchmarkDotNet/issues/181) CompositeValidator: some validators will be skipped -* [#183](https://github.com/dotnet/BenchmarkDotNet/issues/183) [Suggestion] Make ValidationError public -* [#187](https://github.com/dotnet/BenchmarkDotNet/issues/187) .NET Core RC2 (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#192](https://github.com/dotnet/BenchmarkDotNet/issues/192) Avoid creating .cs files at execution time - -## Merged pull requests (0) - - -## Commits (27) - -* [7568c0](https://github.com/dotnet/BenchmarkDotNet/commit/7568c06e8647f0bc4e8d53d1a00c61b526ec0289) Initial work on #130 (currently just matching existing behaviour) (by [@mattwarren](https://github.com/mattwarren)) -* [34965e](https://github.com/dotnet/BenchmarkDotNet/commit/34965eef529c8adc59e31b70ba1f88efdc930034) Fixes #170 (by [@mattwarren](https://github.com/mattwarren)) -* [4d6d32](https://github.com/dotnet/BenchmarkDotNet/commit/4d6d32088df7c18a7be287c6ecd6fe265b35edbb) Remove "@" from the ProcessorName (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [57b402](https://github.com/dotnet/BenchmarkDotNet/commit/57b40243235c7bf7a9088affec6d7b241c8c2037) Specify HintPath for all referenced assemblies (for mono support) (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [0d065b](https://github.com/dotnet/BenchmarkDotNet/commit/0d065b97a58e74348a1e5a2793328a0146ea7dde) Merge branch 'develop' of github.com:PerfDotNet/BenchmarkDotNet into develop (by [@mattwarren](https://github.com/mattwarren)) -* [c24a9c](https://github.com/dotnet/BenchmarkDotNet/commit/c24a9cf8aad0cc013c977317e2f62a643e3b8047) Less "magic" strings - Fixes #179 (by [@mattwarren](https://github.com/mattwarren)) -* [1371ea](https://github.com/dotnet/BenchmarkDotNet/commit/1371eae3cfffa22d1fe8dd4c4a1af64b99060fdf) Allow Exporters to have dependencies, fixes #172 (by [@mattwarren](https://github.com/mattwarren)) -* [d6a55c](https://github.com/dotnet/BenchmarkDotNet/commit/d6a55c58747a33b2efbbb39664ac3458b00cc8d7) Further work on #130 (by [@mattwarren](https://github.com/mattwarren)) -* [e0ebd4](https://github.com/dotnet/BenchmarkDotNet/commit/e0ebd475e2d91da1c5710b9e456aa6ee91a57423) Tidy up of the Json exporter code (part of #189) (by [@mattwarren](https://github.com/mattwarren)) -* [ae330c](https://github.com/dotnet/BenchmarkDotNet/commit/ae330c416595e3da361c1676a3718b0abae2db50) Allow formatted/indented Json (see #189) (by [@mattwarren](https://github.com/mattwarren)) -* [83fd20](https://github.com/dotnet/BenchmarkDotNet/commit/83fd20c79bbdbe456a34b5474be729b2e4ef5a54) Also allow args with "--", i.e. --exporters=json (see #189) (by [@mattwarren](https://github.com/mattwarren)) -* [78af45](https://github.com/dotnet/BenchmarkDotNet/commit/78af456094a99c4efc10cd5b977b4551cdf86d82) File missing from previous check-in "ae330c4" (#189) (by [@mattwarren](https://github.com/mattwarren)) -* [9352d0](https://github.com/dotnet/BenchmarkDotNet/commit/9352d0c7a2491aa9f2fd9f9e0e3b141430b59b80) "Measurments" -> "Measurements" (by [@mattwarren](https://github.com/mattwarren)) -* [a34507](https://github.com/dotnet/BenchmarkDotNet/commit/a345070175928d593f981077edab58823f4b4a36) .NET Core RC2 support, fixes #187 (by [@adamsitnik](https://github.com/adamsitnik)) -* [0c9524](https://github.com/dotnet/BenchmarkDotNet/commit/0c9524481fd6e51d4c5552dd71b7aa340d104a54) remove IValidationError interface, make the implementation public, fixes #183 (by [@adamsitnik](https://github.com/adamsitnik)) -* [30a6ec](https://github.com/dotnet/BenchmarkDotNet/commit/30a6ec9463886e56f9f58624f07b6de833c1e4ec) Avoid creating .cs files at execution time, fixes #192 (by [@adamsitnik](https://github.com/adamsitnik)) -* [792176](https://github.com/dotnet/BenchmarkDotNet/commit/792176d1a39a22adfb542d5c5df3fb7373889e5c) hiding CompositeValidator, fix few typos, fixes #181 (by [@adamsitnik](https://github.com/adamsitnik)) -* [a345e7](https://github.com/dotnet/BenchmarkDotNet/commit/a345e71e178cdf7f1745902360cb73523bce9851) Use short, hard coded name for folders to avoid PathTooLongEx if user does no... (by [@adamsitnik](https://github.com/adamsitnik)) -* [354b28](https://github.com/dotnet/BenchmarkDotNet/commit/354b28662d9987133ab58b605349ff5aba3ef9bc) minor cleanup after moving to RC2 (by [@adamsitnik](https://github.com/adamsitnik)) -* [53b7ff](https://github.com/dotnet/BenchmarkDotNet/commit/53b7ffd9cf607f04991da5167ce6817cbf8bcaf3) dotnet cli bug workaround, Tornhoof's idea (by [@adamsitnik](https://github.com/adamsitnik)) -* [8e6d30](https://github.com/dotnet/BenchmarkDotNet/commit/8e6d304afc7d400bd3f13dde084eaf56b1f85423) added missing Nuget feeds to NuGet.Config, removed launchSettings which we do... (by [@adamsitnik](https://github.com/adamsitnik)) -* [9addd0](https://github.com/dotnet/BenchmarkDotNet/commit/9addd0cfeb6d2ce95d736c3f8e0046e59f6f402e) Improvements in MethodInvoker (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [ccd91d](https://github.com/dotnet/BenchmarkDotNet/commit/ccd91dc7070cb3fc99f61b8137433297bbd27113) Update Chronometer.HardwareTimerKind (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [e9db3d](https://github.com/dotnet/BenchmarkDotNet/commit/e9db3d26992bc9792bc412dcf65f8029a013ceb8) Update year in LICENSE.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [acd019](https://github.com/dotnet/BenchmarkDotNet/commit/acd01956e8a5572516a2756f6e348eb34d2986dc) updated docs for .NET Core RC2 #187 (by [@adamsitnik](https://github.com/adamsitnik)) -* [605aa1](https://github.com/dotnet/BenchmarkDotNet/commit/605aa1c5ce801c12913b0104c9f977058a2e4645) README.md: add a link to BenchmarkDotNet.Diagnostics.Windows (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [571b3d](https://github.com/dotnet/BenchmarkDotNet/commit/571b3dec965d6341ed5a3432c5ac75458f2c7457) Set library version: 0.9.7 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (3) - -* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik)) -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* Matt Warren ([@mattwarren](https://github.com/mattwarren)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.9.8.md b/docs/_changelog/details/v0.9.8.md deleted file mode 100644 index 15508c2b48..0000000000 --- a/docs/_changelog/details/v0.9.8.md +++ /dev/null @@ -1,116 +0,0 @@ -## Milestone details - -In the [v0.9.8](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.9.8) scope, -21 issues were resolved and 1 pull requests were merged. -This release includes 69 commits by 5 contributors. - -## Resolved issues (21) - -* [#57](https://github.com/dotnet/BenchmarkDotNet/issues/57) Make Benchmark, Setup and Params attribute sealed in explicit way -* [#76](https://github.com/dotnet/BenchmarkDotNet/issues/76) Allow users to set gcAllowVeryLargeObjects for Runtime Settings (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#77](https://github.com/dotnet/BenchmarkDotNet/issues/77) Implement a C.I build (assignee: [@mattwarren](https://github.com/mattwarren)) -* [#108](https://github.com/dotnet/BenchmarkDotNet/issues/108) Copy custom setting from app.config -* [#131](https://github.com/dotnet/BenchmarkDotNet/issues/131) [Mono] BenchmarkDotNet doesn't work on Mac OS -* [#149](https://github.com/dotnet/BenchmarkDotNet/issues/149) Migrate from MSBuild to Roslyn -* [#174](https://github.com/dotnet/BenchmarkDotNet/issues/174) NRE in Summary indexer property. -* [#176](https://github.com/dotnet/BenchmarkDotNet/issues/176) Split and simplify printed summaries -* [#188](https://github.com/dotnet/BenchmarkDotNet/issues/188) Ability to manage GC mode: turn on/off the Server/Concurrent GC modes and extend to CPU groups -* [#191](https://github.com/dotnet/BenchmarkDotNet/issues/191) MSBuild dependency - best way of fixing? -* [#194](https://github.com/dotnet/BenchmarkDotNet/issues/194) Framework settings in Jobs (assignee: [@mattwarren](https://github.com/mattwarren)) -* [#196](https://github.com/dotnet/BenchmarkDotNet/issues/196) Allow specifying a gist url to RunUrl -* [#197](https://github.com/dotnet/BenchmarkDotNet/issues/197) Regression in 0.9.7: --help option fails under dotnet run -* [#203](https://github.com/dotnet/BenchmarkDotNet/issues/203) Third-party libraries must be explicitly included in test context to be loaded by runner -* [#209](https://github.com/dotnet/BenchmarkDotNet/issues/209) Fix appveyor bug -* [#211](https://github.com/dotnet/BenchmarkDotNet/issues/211) Possibility to turn off GC.Collect after each benchmark run (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#212](https://github.com/dotnet/BenchmarkDotNet/issues/212) Support CopyToOutput -* [#214](https://github.com/dotnet/BenchmarkDotNet/issues/214) Benchmark ignores binding redirects -* [#216](https://github.com/dotnet/BenchmarkDotNet/issues/216) Update to .NET Core RTM (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#218](https://github.com/dotnet/BenchmarkDotNet/issues/218) Errors in BenchmarkDotNet.Samples.FSharp.Core/projects.json -* [#222](https://github.com/dotnet/BenchmarkDotNet/issues/222) A problem with System.Threading.Tasks - -## Merged pull requests (1) - -* [#169](https://github.com/dotnet/BenchmarkDotNet/pull/169) Support export to asciidoc (by [@russcam](https://github.com/russcam)) - -## Commits (69) - -* [fcf48e](https://github.com/dotnet/BenchmarkDotNet/commit/fcf48ef955283e5261e7f350df0c9e80c1d845a6) Support export to asciidoc (by [@russcam](https://github.com/russcam)) -* [590a0a](https://github.com/dotnet/BenchmarkDotNet/commit/590a0ad2db0474ffe8fe7b9fec2e6f3ce6c3e236) Road to Roslyn: first attempt (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [704605](https://github.com/dotnet/BenchmarkDotNet/commit/7046054bc85ce19a12f23affaea7910ceba52776) Added appveyor ci build (by [@gigi81](https://github.com/gigi81)) -* [3859a1](https://github.com/dotnet/BenchmarkDotNet/commit/3859a12ce1990ba5705c177d4a3d9ce3c1423578) Catch exception when accessing Console.WindowWidth, fixes #197 (by [@mattwarren](https://github.com/mattwarren)) -* [7b92eb](https://github.com/dotnet/BenchmarkDotNet/commit/7b92ebb0ae995291b2d3d981371742826fd3180e) Filter tests by attribute (see #130) (by [@mattwarren](https://github.com/mattwarren)) -* [dd3464](https://github.com/dotnet/BenchmarkDotNet/commit/dd3464baf733dd53596f92bde802c13be4e1363f) Merge pull request #202 from gigi81/appveyor-build-2 (by [@adamsitnik](https://github.com/adamsitnik)) -* [29d106](https://github.com/dotnet/BenchmarkDotNet/commit/29d1069b0e319b6e9fc1dc47b2cae1c01365f955) Added missing 'build dependency' (by [@gigi81](https://github.com/gigi81)) -* [2e8209](https://github.com/dotnet/BenchmarkDotNet/commit/2e8209268587d0ca2e7fdf1b9ae612ad06d1541f) Merge pull request #205 from gigi81/fix-missing-dependency (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [ff298d](https://github.com/dotnet/BenchmarkDotNet/commit/ff298d0811537f8e053834bf792cd2dbd26e09be) Appveyor build improvements (by [@gigi81](https://github.com/gigi81)) -* [600cdd](https://github.com/dotnet/BenchmarkDotNet/commit/600cdd1ce11372e1b074258237b81a805828b1f1) Merge pull request #206 from gigi81/appveyor-4 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [68b070](https://github.com/dotnet/BenchmarkDotNet/commit/68b0701518a9dc5a9c479c4a7e1be8d3b507b4bf) Fixed tests not using OutputLogger (by [@gigi81](https://github.com/gigi81)) -* [7d0501](https://github.com/dotnet/BenchmarkDotNet/commit/7d05011c71237d0835bad28c709b87c4a6544c76) Renamed _output to output (by [@gigi81](https://github.com/gigi81)) -* [ae5eab](https://github.com/dotnet/BenchmarkDotNet/commit/ae5eab069c73b228a0f8f4b73cdbc8dd72f71ce6) Merge pull request #207 from gigi81/fix-outputlogger (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [dfe110](https://github.com/dotnet/BenchmarkDotNet/commit/dfe1106f420e0027baed1e0e8fe43f7f38c2a137) Small cleanup: remove compilation warnings (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [ffe9f7](https://github.com/dotnet/BenchmarkDotNet/commit/ffe9f775ff16c2e3f5d3dd5efae47be39c7bbf17) Clean up, part 2 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [559f20](https://github.com/dotnet/BenchmarkDotNet/commit/559f200e5c4f5b3a8baa66fed2240aabe0baa322) appveyor specific test fixes (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [38af24](https://github.com/dotnet/BenchmarkDotNet/commit/38af24838e5e19e103c0ab68d0d78364e1cbe1ec) MemoryDiagnoserTests: double.Parse Culture fix (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [02048d](https://github.com/dotnet/BenchmarkDotNet/commit/02048d3e863a0676cbfd1a8c1166bfc64bb26e63) StatResultExtenderTests: SpeedUp (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [f2b21f](https://github.com/dotnet/BenchmarkDotNet/commit/f2b21f269cd5122aac53b6198a2f22422dbb6200) Clean up, part 3 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [d32328](https://github.com/dotnet/BenchmarkDotNet/commit/d32328325fe64afa48ae2d6e46a53ffff0e48683) SpeedUp: BaselineScaledColumnsTest, StatResultExtenderTests (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [5e37fa](https://github.com/dotnet/BenchmarkDotNet/commit/5e37fa446fb9d8c32c65a9802d8efe2f88010264) MemoryDiagnoserTests: additional parsing fixes (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [45c66f](https://github.com/dotnet/BenchmarkDotNet/commit/45c66f69df57752ebff1180130b86dfd66465928) Merge branch 'develop' into Roslyn (by [@adamsitnik](https://github.com/adamsitnik)) -* [a4cb8c](https://github.com/dotnet/BenchmarkDotNet/commit/a4cb8c59bb3c41fdba0ecb94e379fd0025495cda) MemoryDiagnoserTests: Temporarily suppressed (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [ae38a5](https://github.com/dotnet/BenchmarkDotNet/commit/ae38a570ec2916f26ef9cf9196fad404f22a4844) README: add the appveyor badge (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [77bd64](https://github.com/dotnet/BenchmarkDotNet/commit/77bd64be9b77c1bb24c671a40295986bbd0bab78) README: update badges (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [a74f82](https://github.com/dotnet/BenchmarkDotNet/commit/a74f82663f995a72d2db2f69509f6fca1593ed05) README: update badges, part 2 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [453a49](https://github.com/dotnet/BenchmarkDotNet/commit/453a4937d831af419663ede998f8f1d68a5439ed) merging recent changes from develop with Roslyn branch to get it working again (by [@adamsitnik](https://github.com/adamsitnik)) -* [ce4af5](https://github.com/dotnet/BenchmarkDotNet/commit/ce4af5b09cc69b462470391f706e2df8fc7df8ed) add dependencies in recursive way, fixes #203 (by [@adamsitnik](https://github.com/adamsitnik)) -* [a36af4](https://github.com/dotnet/BenchmarkDotNet/commit/a36af4f30638600108f237f94a45cbe269489cb3) farewell MSBuid (by [@adamsitnik](https://github.com/adamsitnik)) -* [d2dd83](https://github.com/dotnet/BenchmarkDotNet/commit/d2dd8378466533d8d8a0eb9ef4a3dafa892f3996) Workaround for xunit bug (by [@gigi81](https://github.com/gigi81)) -* [46f2b7](https://github.com/dotnet/BenchmarkDotNet/commit/46f2b736432176d486dda9cef2f1ac0e50e937df) Merge pull request #210 from gigi81/xunit-workaround-2 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [c5b4ae](https://github.com/dotnet/BenchmarkDotNet/commit/c5b4ae067b1552531cfcd29e6141f5062853fd51) Merge remote-tracking branch 'refs/remotes/origin/develop' into Roslyn (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [54109b](https://github.com/dotnet/BenchmarkDotNet/commit/54109b2b77118a6237d4ad75a2a7a91c8546b5cb) copy custom settings from app.config file, fixes #108 (by [@adamsitnik](https://github.com/adamsitnik)) -* [20c41f](https://github.com/dotnet/BenchmarkDotNet/commit/20c41f5fb8cc3474dcaf7bfc7c46a26cb2f88892) enable GC settings customization, fixes #188 (by [@adamsitnik](https://github.com/adamsitnik)) -* [dd0bc4](https://github.com/dotnet/BenchmarkDotNet/commit/dd0bc4eed476e19558e38b3937939fd4eebd6508) tests fix ;) (by [@adamsitnik](https://github.com/adamsitnik)) -* [0726b5](https://github.com/dotnet/BenchmarkDotNet/commit/0726b5670a7eaa07bced4522c371cde2bba78951) Possibility to turn off GC.Collect after each benchmark run, fixes #211 (by [@adamsitnik](https://github.com/adamsitnik)) -* [da24b4](https://github.com/dotnet/BenchmarkDotNet/commit/da24b429c2c39d5967a98f01d5e55d9e73fdfe32) rename GC to GarbageCollection to avoid conflicts with System.GC (by [@adamsitnik](https://github.com/adamsitnik)) -* [3bf420](https://github.com/dotnet/BenchmarkDotNet/commit/3bf4200eb2082611964fab6140124c8fcb4796fb) gcAllowVeryLargeObjects, fixes #76 (by [@adamsitnik](https://github.com/adamsitnik)) -* [bdce98](https://github.com/dotnet/BenchmarkDotNet/commit/bdce9875a7bb00f367a879231a97c7b27a3cae73) split EnvironmentInfo into Host and Benchmark specific, make expensive method... (by [@adamsitnik](https://github.com/adamsitnik)) -* [e819c8](https://github.com/dotnet/BenchmarkDotNet/commit/e819c8a035c6546518c07cd2cf7c75f64f64432f) added GC info to BenchmarkEnvironmentInfo (by [@adamsitnik](https://github.com/adamsitnik)) -* [9e0480](https://github.com/dotnet/BenchmarkDotNet/commit/9e04800f4847042aa304982f0d168211b5c70b44) change GC settings display order (Workstation Concurrent => Concurrent Workst... (by [@adamsitnik](https://github.com/adamsitnik)) -* [d03d17](https://github.com/dotnet/BenchmarkDotNet/commit/d03d1793c6240584b4ac77f522834b2e7cb1ff82) support CopyToOutput: build in output directory + some refacotring, fixes #212 (by [@adamsitnik](https://github.com/adamsitnik)) -* [237370](https://github.com/dotnet/BenchmarkDotNet/commit/2373706040971e8ecea4a3d0992cb4c39ba3dd56) minor bug fix: support spaces in parameters representation (by [@adamsitnik](https://github.com/adamsitnik)) -* [06349a](https://github.com/dotnet/BenchmarkDotNet/commit/06349a01621fd4fdabfadef320a9624dcda76a1e) Update to .NET Core RTM, drop DNX* support, fixes #216 (by [@adamsitnik](https://github.com/adamsitnik)) -* [106477](https://github.com/dotnet/BenchmarkDotNet/commit/1064775574cfdff55b0e75c01b0353ef4b61e50f) Merge branch 'develop' of https://github.com/russcam/BenchmarkDotNet into rus... (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [2e18db](https://github.com/dotnet/BenchmarkDotNet/commit/2e18dbaef4eb964a54e2e91a8fc29949fd89b74a) Merge branch 'russcam-develop' into develop (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [388155](https://github.com/dotnet/BenchmarkDotNet/commit/38815597ee1cb9625c5df61ffa885d61ea517e00) Fix a NRE bug in Summary indexer, fixes #174 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [d448b4](https://github.com/dotnet/BenchmarkDotNet/commit/d448b4bfe44a886998134d71fc13548f83377e34) Now RunUrl can work with non-raw github and gist urls, fixes #196 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [7e1b95](https://github.com/dotnet/BenchmarkDotNet/commit/7e1b9583aa23392f6382d8d4f13cf0a1fe4a3bd1) Welch's Two Sample t-test (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [cc70cb](https://github.com/dotnet/BenchmarkDotNet/commit/cc70cb1f0419e032b072cb30c13eb116c96c558f) specify version of F# compiler in explicit way to workaround nuget bug, fixes... (by [@adamsitnik](https://github.com/adamsitnik)) -* [e21373](https://github.com/dotnet/BenchmarkDotNet/commit/e21373a83e5e633ec202649b3870b60b1a843662) use Roslyn's managed API for compilation, drop .NET 4.0 support!! fixes #149 (by [@adamsitnik](https://github.com/adamsitnik)) -* [cd25cc](https://github.com/dotnet/BenchmarkDotNet/commit/cd25cc3341cd04d493ece74b06b5398f74f5d52c) use single reflection api after update to .NET 4.5 (by [@adamsitnik](https://github.com/adamsitnik)) -* [785d92](https://github.com/dotnet/BenchmarkDotNet/commit/785d9275106fccb697d9c2ff5c517ddeb530dbe9) make Benchmark, Setup and Params Attribute sealed #57 (by [@adamsitnik](https://github.com/adamsitnik)) -* [8a3212](https://github.com/dotnet/BenchmarkDotNet/commit/8a321272254fd4c3aafc95eb9b283c8d4fe87951) hopefully a workaround for appveyor build (by [@adamsitnik](https://github.com/adamsitnik)) -* [ef7e35](https://github.com/dotnet/BenchmarkDotNet/commit/ef7e3581cec7d92531b26a1e0978b1860b899a08) hopefully a workaround for appveyor build, which does not have the latest dot... (by [@adamsitnik](https://github.com/adamsitnik)) -* [918a6d](https://github.com/dotnet/BenchmarkDotNet/commit/918a6dfa607a51a4cf63752f45f41a3262bc3ce2) Remove xmlns for packages.config in IntegrationTests.Classic (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [b897ed](https://github.com/dotnet/BenchmarkDotNet/commit/b897edf09618522dfa9a33e20fd5e5e3fd545bcf) Merge branch 'Roslyn' into develop (by [@adamsitnik](https://github.com/adamsitnik)) -* [742a16](https://github.com/dotnet/BenchmarkDotNet/commit/742a16e04bd8a6cbe7971d451d69e50e9e72c99b) skip test that fails for Core on appveyor, #221 (by [@adamsitnik](https://github.com/adamsitnik)) -* [a94a8b](https://github.com/dotnet/BenchmarkDotNet/commit/a94a8b3746ea7d8d87b1043d65b8ed443c113f12) skip test that fails for Classic on appveyor, #221 (by [@adamsitnik](https://github.com/adamsitnik)) -* [fec206](https://github.com/dotnet/BenchmarkDotNet/commit/fec206e10c27cace2d01dcf6d38fc2ce8afbbde7) Fix incorrect xml-docs in MathHelper (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [1567d9](https://github.com/dotnet/BenchmarkDotNet/commit/1567d9599500043d863f74b5d041731a5a89bdc4) DEVELOPING.md: add a section about develop NuGet feed (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [5c3c31](https://github.com/dotnet/BenchmarkDotNet/commit/5c3c314a7b52d39b47ff49073b655a0c8f8cb70b) appveyor: add BenchmarkDotNet.Diagnostics.Windows.nupkg to artifacts (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [a69188](https://github.com/dotnet/BenchmarkDotNet/commit/a69188f396d3449f0356fdf822edbfbb6418eb4e) DEVELOPING.md: fix a typo (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [4e99b4](https://github.com/dotnet/BenchmarkDotNet/commit/4e99b41464464c248dfd98b0cc69c51742ba1501) project.json: add tags (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [61b4c1](https://github.com/dotnet/BenchmarkDotNet/commit/61b4c18582fcdbd9043c38bab26c4c3177886207) use System.Threading.Tasks as nuget package to fix nuget installation problem... (by [@adamsitnik](https://github.com/adamsitnik)) -* [976118](https://github.com/dotnet/BenchmarkDotNet/commit/976118271cdb4db11971b7f2e49ef473bbba74b5) remove Framework settings from Jobs, fixes #194 (by [@adamsitnik](https://github.com/adamsitnik)) -* [be0b71](https://github.com/dotnet/BenchmarkDotNet/commit/be0b711d8cfc4dc2c012117e593ca547e7bfa213) try to remove the directory few more times when it's still not released to ma... (by [@adamsitnik](https://github.com/adamsitnik)) -* [0647a0](https://github.com/dotnet/BenchmarkDotNet/commit/0647a059cd66ba1916ff51ce5221df111807cb3b) use the Configuration from the hosting process, not BDN dll (by [@adamsitnik](https://github.com/adamsitnik)) -* [c6405a](https://github.com/dotnet/BenchmarkDotNet/commit/c6405a91bee90de6a12aee24755fbb783c2d9052) Set library version: 0.9.8 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (5) - -* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik)) -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* Luigi Grilli ([@gigi81](https://github.com/gigi81)) -* Matt Warren ([@mattwarren](https://github.com/mattwarren)) -* Russ Cam ([@russcam](https://github.com/russcam)) - -Thank you very much! - diff --git a/docs/_changelog/details/v0.9.9.md b/docs/_changelog/details/v0.9.9.md deleted file mode 100644 index e7e7467e17..0000000000 --- a/docs/_changelog/details/v0.9.9.md +++ /dev/null @@ -1,85 +0,0 @@ -## Milestone details - -In the [v0.9.9](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone:v0.9.9) scope, -14 issues were resolved and 1 pull requests were merged. -This release includes 46 commits by 4 contributors. - -## Resolved issues (14) - -* [#166](https://github.com/dotnet/BenchmarkDotNet/issues/166) Suggestion: Attribute Config style (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#215](https://github.com/dotnet/BenchmarkDotNet/issues/215) Allow a [Cleanup] method to be specified -* [#219](https://github.com/dotnet/BenchmarkDotNet/issues/219) Online documentation and API reference -* [#223](https://github.com/dotnet/BenchmarkDotNet/issues/223) Add support for System.Type in Params -* [#224](https://github.com/dotnet/BenchmarkDotNet/issues/224) [Breaking change] BenchmarkAttribute become sealed. -* [#225](https://github.com/dotnet/BenchmarkDotNet/issues/225) Refactoring the roslyn dependency into another package -* [#226](https://github.com/dotnet/BenchmarkDotNet/issues/226) Support Mono/LLVM as a runtime/jit -* [#227](https://github.com/dotnet/BenchmarkDotNet/issues/227) Suggestion: change default branch (assignee: [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [#228](https://github.com/dotnet/BenchmarkDotNet/issues/228) Suggestion: clean up the root folder -* [#231](https://github.com/dotnet/BenchmarkDotNet/issues/231) Add references to default framework assemblies (System.Runtime etc) -* [#232](https://github.com/dotnet/BenchmarkDotNet/issues/232) Make all tests use OutputLogger (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#235](https://github.com/dotnet/BenchmarkDotNet/issues/235) Don't show non-error output of dotnet cli (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#236](https://github.com/dotnet/BenchmarkDotNet/issues/236) Possibility to benchmark asynchronous methods (assignee: [@adamsitnik](https://github.com/adamsitnik)) -* [#240](https://github.com/dotnet/BenchmarkDotNet/issues/240) Total Time reports hour rounded up - -## Merged pull requests (1) - -* [#233](https://github.com/dotnet/BenchmarkDotNet/pull/233) Add support of Cleanup attribute #215 (by [@DenisIstomin](https://github.com/DenisIstomin)) - -## Commits (46) - -* [f9f748](https://github.com/dotnet/BenchmarkDotNet/commit/f9f7481deb1bbb1d166d8c1d9ac15b1ff5ddd172) Improved "Scaled" column (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [5d7ba9](https://github.com/dotnet/BenchmarkDotNet/commit/5d7ba933e6bf5b4210787c83dab8dee138131d83) Warmup improvements (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [664c64](https://github.com/dotnet/BenchmarkDotNet/commit/664c6474810d6a2fbcf024dffe2b075e5ef44eed) Add Skewness, Kurtosis, and WelchTTestPValue columns and configs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [c9e802](https://github.com/dotnet/BenchmarkDotNet/commit/c9e802175535adcaaa890df03f557669abf9c189) Attribute Config style, fixes #166 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [378173](https://github.com/dotnet/BenchmarkDotNet/commit/37817322cc6630cab021783277f43a7a17f8cbe3) README: add supported OS (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [50ac57](https://github.com/dotnet/BenchmarkDotNet/commit/50ac57a0118eb13319e66a436bd4eddc0cb4676a) Make Benchmark, Params and Setup attributes non-sealed again, fixes #224, #57 (by [@adamsitnik](https://github.com/adamsitnik)) -* [b9c815](https://github.com/dotnet/BenchmarkDotNet/commit/b9c8157fbe2d95e50ce9407d4997e651614d3bd4) Support Mono/LLVM as a runtime/jit, fixes #226 (by [@adamsitnik](https://github.com/adamsitnik)) -* [cdfbd5](https://github.com/dotnet/BenchmarkDotNet/commit/cdfbd5ab6e5533e72185c57cf6c8f7c9f9813d08) Update info about default branch, see #227 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [42e9b9](https://github.com/dotnet/BenchmarkDotNet/commit/42e9b90f5ef4e5d71fb92c2a1bd450541380bed6) Add System.Type support in Params, fixes #223 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [db3dc3](https://github.com/dotnet/BenchmarkDotNet/commit/db3dc3ffeef3ae0e886acbd0176174f5e4d50968) Suggestion: clean up the root folder, fixes #228 (by [@adamsitnik](https://github.com/adamsitnik)) -* [4e1db3](https://github.com/dotnet/BenchmarkDotNet/commit/4e1db34851bdb7cba0188c28974af96edfbacb36) use shorter names for test for xunit test runner (method name instead of full... (by [@adamsitnik](https://github.com/adamsitnik)) -* [a35b22](https://github.com/dotnet/BenchmarkDotNet/commit/a35b226071ab0066d56f382f1cd240f31b6ceef0) make sure all framework assemblies are referenced, #231 (by [@adamsitnik](https://github.com/adamsitnik)) -* [19426a](https://github.com/dotnet/BenchmarkDotNet/commit/19426aeb92ed5307d2a143b7f7e9c7748a1009b7) spliting BenchmarkDotNet.dll to few dlls to avoid mandatory Roslyn dependency... (by [@adamsitnik](https://github.com/adamsitnik)) -* [356a39](https://github.com/dotnet/BenchmarkDotNet/commit/356a395a0d22cb6a0d451267fc120e947e186c5f) move BenchmarkRunner's core to separate class to .Core project so it can be ... (by [@adamsitnik](https://github.com/adamsitnik)) -* [0121a6](https://github.com/dotnet/BenchmarkDotNet/commit/0121a6fde69d6a15485fa3773706212ef945fac7) minor cleanup: rename LLVM => Llvm, remove [Obsolete] things (by [@adamsitnik](https://github.com/adamsitnik)) -* [fb8047](https://github.com/dotnet/BenchmarkDotNet/commit/fb8047f25dc2f9622f88ba802d6e359251ccf86e) Make all tests use OutputLogger, fixes #232 (by [@adamsitnik](https://github.com/adamsitnik)) -* [ae17a7](https://github.com/dotnet/BenchmarkDotNet/commit/ae17a7f0df0cb8ea494fa8ca5dd8c5791bd429c0) Add support of Cleanup attribute, fix #215 (by [@DenisIstomin](https://github.com/DenisIstomin)) -* [3bf9c0](https://github.com/dotnet/BenchmarkDotNet/commit/3bf9c0899d5b35a3bf2b63d5d860e343ae12a30d) Merge branch 'master' of https://github.com/PerfDotNet/BenchmarkDotNet (by [@adamsitnik](https://github.com/adamsitnik)) -* [355c6f](https://github.com/dotnet/BenchmarkDotNet/commit/355c6f6a20a6ae1927626665406be1f15f3ac8ef) Don't show non-error output of dotnet cli, fixes #235 (by [@adamsitnik](https://github.com/adamsitnik)) -* [76df80](https://github.com/dotnet/BenchmarkDotNet/commit/76df80ea2a2c1a4d2e116b6c2ed49c52880fb106) Possibility to benchmark asynchronous methods #236 (by [@adamsitnik](https://github.com/adamsitnik)) -* [3ab578](https://github.com/dotnet/BenchmarkDotNet/commit/3ab5784cdf54b6f2ea503ef94da537e5918bc12b) use GetAwaiter().GetResult() for Tasks instead of .Wait or .Result, #236 (by [@adamsitnik](https://github.com/adamsitnik)) -* [d1db7d](https://github.com/dotnet/BenchmarkDotNet/commit/d1db7ded6b21ca2ae5f0a5c748eb80d801deb218) Added documentation source and output based on readme.md (by [@FransBouma](https://github.com/FransBouma)) -* [ac8cf2](https://github.com/dotnet/BenchmarkDotNet/commit/ac8cf2880662c23fb7c211dd4b00fb6d1fde3b9d) Updated folder structure, removed html output, updated gitignore (by [@FransBouma](https://github.com/FransBouma)) -* [bed0f9](https://github.com/dotnet/BenchmarkDotNet/commit/bed0f9c95089b45073a3ce42351e5bb5ee60e97c) Removed unused folder copy directive from docnet.json (by [@FransBouma](https://github.com/FransBouma)) -* [650fca](https://github.com/dotnet/BenchmarkDotNet/commit/650fca6daf832ed8a49d8e4e916f73d0679d88a2) Merge pull request #239 from FransBouma/master (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [aceb96](https://github.com/dotnet/BenchmarkDotNet/commit/aceb968db2dd706d84e61926110a464b9728bcbf) Added Api docs generation directives (by [@FransBouma](https://github.com/FransBouma)) -* [a9ee7c](https://github.com/dotnet/BenchmarkDotNet/commit/a9ee7c41b89c97ecda06fa9efd9f8abf852e3db3) Fix in total time formatting, fix #240 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [1d2141](https://github.com/dotnet/BenchmarkDotNet/commit/1d21410d2de6d41889bd5701a4945292bcb9075c) Update README.md (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [7b9fdb](https://github.com/dotnet/BenchmarkDotNet/commit/7b9fdbaefa2fc373d207cd57ea7a6591a00c98a6) Fixed a couple of issues with api doc generation (by [@FransBouma](https://github.com/FransBouma)) -* [682837](https://github.com/dotnet/BenchmarkDotNet/commit/682837cc52a258b011ebe53ba371cb745682f255) Merge pull request #243 from FransBouma/master (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [9a2cf2](https://github.com/dotnet/BenchmarkDotNet/commit/9a2cf20559a4dc149a9ad6c8d01d113ae94e7afd) docs improvements (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [334925](https://github.com/dotnet/BenchmarkDotNet/commit/33492541b3e41a2e79357d98f2cab1fb887932ab) Rename: GarbageCollection -> GcMode (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [7a740a](https://github.com/dotnet/BenchmarkDotNet/commit/7a740a117345780bb08fb7e40fa5038d47b8e083) SummaryTableTests and minor refactorings (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [c9d358](https://github.com/dotnet/BenchmarkDotNet/commit/c9d358f78b0c85f6b51aeeefc4b08279eb01d734) Transform GcModeColumn with null values to a trivial column (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [cb6359](https://github.com/dotnet/BenchmarkDotNet/commit/cb63595015ef9f1db333ce3dd028fe08d08a479c) Improved HardwareTimerKind detection (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [04f736](https://github.com/dotnet/BenchmarkDotNet/commit/04f7364e2ebee815bcad70efb780dbc2d657d6d9) Fix references in the IntegrationTests project files (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [a9403a](https://github.com/dotnet/BenchmarkDotNet/commit/a9403a9693a27b9470a35f8c74318d365a88b2a6) Fix warnings (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [691a05](https://github.com/dotnet/BenchmarkDotNet/commit/691a058f5d63ae6f18b5e9d4089abc30ae94ed6b) BenchmarkDotNet.Tests: Remove the System.Globalization dependency (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [9e97d7](https://github.com/dotnet/BenchmarkDotNet/commit/9e97d7075e874485e80bd22ffe10c0101bbfae22) Show JitModules in EnvInfo only for the classic toolchain (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [823518](https://github.com/dotnet/BenchmarkDotNet/commit/8235184d2205685d02cd8dfe1e0f992aef71ce8f) Improved docs (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [5fb854](https://github.com/dotnet/BenchmarkDotNet/commit/5fb8549b83f7fd39ab93b35b00fc33dc845012c5) Update README (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [5ebf8b](https://github.com/dotnet/BenchmarkDotNet/commit/5ebf8bbb185316b31449966a0133823eff6f7afb) Minor fixes (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [086dfd](https://github.com/dotnet/BenchmarkDotNet/commit/086dfd67c8b500bcaec16aab853dc5dcdb9f565c) generic wrapper for config values (by [@adamsitnik](https://github.com/adamsitnik)) -* [cf58b0](https://github.com/dotnet/BenchmarkDotNet/commit/cf58b07079c6b49fd112fa0821d1d1116c7d9237) Merge branch 'gc' (by [@adamsitnik](https://github.com/adamsitnik)) -* [bbccbe](https://github.com/dotnet/BenchmarkDotNet/commit/bbccbede0210573c898565a00811664fac743963) docs: add informations about NuGet packages (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* [60bea3](https://github.com/dotnet/BenchmarkDotNet/commit/60bea388230ba87e65c5cbb2dc87c6b74089126d) Set library version: 0.9.9 (by [@AndreyAkinshin](https://github.com/AndreyAkinshin)) - -## Contributors (4) - -* Adam Sitnik ([@adamsitnik](https://github.com/adamsitnik)) -* Andrey Akinshin ([@AndreyAkinshin](https://github.com/AndreyAkinshin)) -* Denis Istomin ([@DenisIstomin](https://github.com/DenisIstomin)) -* Frans Bouma ([@FransBouma](https://github.com/FransBouma)) - -Thank you very much! - From 562a80315c97d39ba14506d9ab27f67a1389432c Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Mon, 3 Jul 2023 16:53:36 +0200 Subject: [PATCH 05/73] Add workflows/docs-changelog-generate.yaml --- .../workflows/docs-changelog-generate.yaml | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .github/workflows/docs-changelog-generate.yaml diff --git a/.github/workflows/docs-changelog-generate.yaml b/.github/workflows/docs-changelog-generate.yaml new file mode 100644 index 0000000000..eccc4c0f38 --- /dev/null +++ b/.github/workflows/docs-changelog-generate.yaml @@ -0,0 +1,35 @@ +name: docs-changelog-generate + +on: + push: + branches: + - master + workflow_dispatch: + +permissions: write-all + +jobs: + build: + runs-on: ubuntu-latest + steps: + + - name: Checkout + uses: actions/checkout@v3 + with: + ref: master + + - name: Download changelog + run: ./build.sh --target DocFX_Changelog_Download --LatestVersions true + env: + GITHUB_PRODUCT: ChangelogBuilder + 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 From f519a53d7cd98f8102c4b1c19abb12df30af2564 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Mon, 3 Jul 2023 16:59:33 +0200 Subject: [PATCH 06/73] Exclude 'docs-changelog-details' from builds Excluded branch 'docs-changelog-details' in the azure-pipelines and appveyor build files for Ubuntu, Windows, and macOS. This change prevents unnecessary builds when updates are made to detailed documentation, saving resources and time. --- appveyor.yml | 1 + azure-pipelines.Ubuntu.yml | 1 + azure-pipelines.Windows.yml | 1 + azure-pipelines.macOS.yml | 1 + 4 files changed, 4 insertions(+) diff --git a/appveyor.yml b/appveyor.yml index dd8ca43691..a4c11ce797 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -10,6 +10,7 @@ branches: # blacklist except: - gh-pages + - docs-changelog-details pull_requests: do_not_increment_build_number: true diff --git a/azure-pipelines.Ubuntu.yml b/azure-pipelines.Ubuntu.yml index f67af5ef3c..4c8bf86311 100755 --- a/azure-pipelines.Ubuntu.yml +++ b/azure-pipelines.Ubuntu.yml @@ -4,6 +4,7 @@ trigger: - master exclude: - gh-pages + - docs-changelog-details name: $(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r) diff --git a/azure-pipelines.Windows.yml b/azure-pipelines.Windows.yml index 071abcab84..809d92e62e 100755 --- a/azure-pipelines.Windows.yml +++ b/azure-pipelines.Windows.yml @@ -4,6 +4,7 @@ trigger: - master exclude: - gh-pages + - docs-changelog-details name: $(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r) diff --git a/azure-pipelines.macOS.yml b/azure-pipelines.macOS.yml index d6fd5a2cbe..6543a8eb9b 100755 --- a/azure-pipelines.macOS.yml +++ b/azure-pipelines.macOS.yml @@ -4,6 +4,7 @@ trigger: - master exclude: - gh-pages + - docs-changelog-details name: $(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r) From 152ad7f5a14f4d4b20bace98f137fe7d6ba8fd7b Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Mon, 3 Jul 2023 17:11:59 +0200 Subject: [PATCH 07/73] Update changelog download strategy in workflows The download strategies used in "docs-changelog-generate.yaml" and "docs-stable.yaml" workflow files are updated to control the number of versions retrieved for the changelog instead of getting all or latest versions. In "Program.cs", changed the condition to accept the "VersionCount" argument and implemented a loop to fetch 'n' latest versions where 'n' is the given argument value. --- .github/workflows/docs-changelog-generate.yaml | 2 +- .github/workflows/docs-stable.yaml | 11 +++++------ build/Program.cs | 14 ++++++++------ 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/.github/workflows/docs-changelog-generate.yaml b/.github/workflows/docs-changelog-generate.yaml index eccc4c0f38..af1b1dc0f5 100644 --- a/.github/workflows/docs-changelog-generate.yaml +++ b/.github/workflows/docs-changelog-generate.yaml @@ -19,7 +19,7 @@ jobs: ref: master - name: Download changelog - run: ./build.sh --target DocFX_Changelog_Download --LatestVersions true + run: ./build.sh --target DocFX_Changelog_Download --LatestVersions 1 env: GITHUB_PRODUCT: ChangelogBuilder GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/docs-stable.yaml b/.github/workflows/docs-stable.yaml index f5abc60532..989c1d56b5 100644 --- a/.github/workflows/docs-stable.yaml +++ b/.github/workflows/docs-stable.yaml @@ -21,12 +21,11 @@ jobs: - name: Build BenchmarkDotNet run: ./build.bat --target 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.bat --target DocFX_Changelog_Download --LatestVersions 1 + env: + GITHUB_PRODUCT: ChangelogBuilder + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Build documentation run: ./build.bat --target DocFX_Build diff --git a/build/Program.cs b/build/Program.cs index 66ae534aad..12b60856b7 100644 --- a/build/Program.cs +++ b/build/Program.cs @@ -1,3 +1,4 @@ +using System; using System.IO; using System.Linq; using System.Text; @@ -469,22 +470,23 @@ public class DocFxChangelogDownloadTask : FrostingTask { public override void Run(BuildContext context) { - if (context.Argument("AllVersions", false)) + var count = context.Argument("VersionCount", -1); + var total = DocumentationHelper.BdnAllVersions.Length; + + if (count == 0) { context.DocfxChangelogDownload( DocumentationHelper.BdnAllVersions.First(), DocumentationHelper.BdnFirstCommit); - for (int i = 1; i < DocumentationHelper.BdnAllVersions.Length; i++) + for (int i = 1; i < total; i++) context.DocfxChangelogDownload( DocumentationHelper.BdnAllVersions[i], DocumentationHelper.BdnAllVersions[i - 1]); } - else if (context.Argument("LatestVersions", false)) + else if (count > 0) { - for (int i = DocumentationHelper.BdnAllVersions.Length - 3; - i < DocumentationHelper.BdnAllVersions.Length; - i++) + for (int i = Math.Max(total - count, 1); i < total; i++) context.DocfxChangelogDownload( DocumentationHelper.BdnAllVersions[i], DocumentationHelper.BdnAllVersions[i - 1]); From fbc0d7fab10d8937c74a336c827a7a4d5622e5c2 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Mon, 3 Jul 2023 17:15:00 +0200 Subject: [PATCH 08/73] Fix changelog downloading workflow --- .github/workflows/docs-changelog-generate.yaml | 2 +- .github/workflows/docs-stable.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docs-changelog-generate.yaml b/.github/workflows/docs-changelog-generate.yaml index af1b1dc0f5..f55816e706 100644 --- a/.github/workflows/docs-changelog-generate.yaml +++ b/.github/workflows/docs-changelog-generate.yaml @@ -19,7 +19,7 @@ jobs: ref: master - name: Download changelog - run: ./build.sh --target DocFX_Changelog_Download --LatestVersions 1 + run: ./build.sh --target DocFX_Changelog_Download --VersionCount 1 env: GITHUB_PRODUCT: ChangelogBuilder GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/docs-stable.yaml b/.github/workflows/docs-stable.yaml index 989c1d56b5..83e50d7e97 100644 --- a/.github/workflows/docs-stable.yaml +++ b/.github/workflows/docs-stable.yaml @@ -22,7 +22,7 @@ jobs: run: ./build.bat --target Build - name: Download changelog - run: ./build.bat --target DocFX_Changelog_Download --LatestVersions 1 + run: ./build.bat --target DocFX_Changelog_Download --VersionCount 1 env: GITHUB_PRODUCT: ChangelogBuilder GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 7484488d08a94346fb0e36d82c0da3bfc63aef58 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Mon, 3 Jul 2023 23:12:42 +0200 Subject: [PATCH 09/73] Add UpdateStats task --- README.md | 9 ++---- build/Program.cs | 82 ++++++++++++++++++++++++++++++++++++++++++++++++ docs/index.md | 9 ++---- 3 files changed, 86 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 876d867e15..2368e54ebf 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ 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). +The library is adopted by [16500+ GitHub projects](#who-uses-benchmarkdotnet) including .NET Runtime and supported by the [.NET Foundation](https://dotnetfoundation.org). It's [easy](#simplicity) to start writing benchmarks, check out an example (copy-pastable version is [here](https://benchmarkdotnet.org/articles/guides/getting-started.html)): @@ -232,7 +232,7 @@ If you don't customize the summary view, ## 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 +BenchmarkDotNet is already adopted by more than [16500+](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), @@ -266,11 +266,6 @@ BenchmarkDotNet is already adopted by more than [14300+](https://github.com/dotn [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 diff --git a/build/Program.cs b/build/Program.cs index 12b60856b7..3237e0cc48 100644 --- a/build/Program.cs +++ b/build/Program.cs @@ -1,7 +1,10 @@ using System; using System.IO; using System.Linq; +using System.Net.Http; using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; using Build; using Cake.Common; using Cake.Common.Build; @@ -570,3 +573,82 @@ public override void Run(BuildContext context) context.GenerateRedirects(); } } + +[TaskName("UpdateStats")] +public class UpdateStatsTask : FrostingTask +{ + public class Updater + { + public string Prefix { get; } + public Regex Regex { get; } + public int Value { get; } + + public Updater(string prefix, string regex, int value) + { + Prefix = prefix; + Regex = new Regex(regex); + Value = value; + } + + public string Apply(string line) + { + if (!line.StartsWith(Prefix)) + return line; + + var match = Regex.Match(line); + if (!match.Success) + return line; + + // Groups[1] refers to the first group (\d+) + var numberString = match.Groups[1].Value; + var number = int.Parse(numberString); + return line.Replace(number.ToString(), Value.ToString()); + } + } + + private static async Task GetDependentProjectsNumber() + { + using var httpClient = new HttpClient(); + const string url = "https://github.com/dotnet/BenchmarkDotNet/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; + } + + public override void Run(BuildContext context) + { + var dependentProjectsNumber = GetDependentProjectsNumber().Result; + var updaters = new Updater[] + { + new( + "The library is adopted by", + @"\[(\d+)\+ GitHub projects\]", + dependentProjectsNumber + ), + new( + "BenchmarkDotNet is already adopted by more than ", + @"\[(\d+)\+\]", + dependentProjectsNumber + ), + }; + var files = new[] + { + context.RootDirectory.CombineWithFilePath("README.md"), + context.DocsDirectory.CombineWithFilePath("index.md") + }; + foreach (var file in files) + { + var lines = context.FileReadLines(file); + for (var i = 0; i < lines.Length; i++) + { + foreach (var updater in updaters) + lines[i] = updater.Apply(lines[i]); + } + + context.FileWriteLines(file, lines); + } + } +} diff --git a/docs/index.md b/docs/index.md index dbdb9ce442..a1db414475 100644 --- a/docs/index.md +++ b/docs/index.md @@ -34,7 +34,7 @@ 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). +The library is adopted by [16500+ GitHub projects](#who-uses-benchmarkdotnet) including .NET Runtime and supported by the [.NET Foundation](https://dotnetfoundation.org). It's [easy](#simplicity) to start writing benchmarks, check out an example (copy-pastable version is [here](https://benchmarkdotnet.org/articles/guides/getting-started.html)): @@ -236,7 +236,7 @@ If you don't customize the summary view, ## 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 +BenchmarkDotNet is already adopted by more than [16500+](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), @@ -270,11 +270,6 @@ BenchmarkDotNet is already adopted by more than [14300+](https://github.com/dotn [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 From 609e484edd0502fec63b7fef88450678f90032f0 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Tue, 4 Jul 2023 00:08:40 +0200 Subject: [PATCH 10/73] Generate index.md from README.md --- README.md | 55 ++++---- build/Program.cs | 19 ++- docs/.gitignore | 3 +- docs/index.md | 318 ----------------------------------------------- 4 files changed, 42 insertions(+), 353 deletions(-) delete mode 100644 docs/index.md diff --git a/README.md b/README.md index 2368e54ebf..280f7ba435 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,20 @@ -

+
- ![](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/) [![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 [16500+ GitHub projects](#who-uses-benchmarkdotnet) including .NET Runtime and supported by the [.NET Foundation](https://dotnetfoundation.org). +The library is adopted by [16500+ GitHub projects](#who-uses-benchmarkdotnet) including .NET Runtime. -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 +105,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 +127,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 +157,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 +173,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 +192,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,7 +223,7 @@ 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. :) @@ -270,7 +269,7 @@ BenchmarkDotNet is already adopted by more than [16500+](https://github.com/dotn ## 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. @@ -287,11 +286,11 @@ You will avoid common pitfalls, control the accuracy of your measurements, and i | 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) | +| Azure Pipelines | Windows | [![Azure 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 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 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) | +| GitHub Actions | * | [![GitHub Actions](https://github.com/dotnet/BenchmarkDotNet/actions/workflows/build.yaml/badge.svg)](https://github.com/dotnet/BenchmarkDotNet/actions/workflows/build.yaml) | ## Contributions are welcome! @@ -309,6 +308,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/build/Program.cs b/build/Program.cs index 3237e0cc48..e816a1c49e 100644 --- a/build/Program.cs +++ b/build/Program.cs @@ -162,7 +162,7 @@ public void EnsureChangelogDetailsExist(bool forceClean = false) var path = ChangeLogGenDirectory.Combine("details"); if (this.DirectoryExists(path) && forceClean) this.DeleteDirectory(path, new DeleteDirectorySettings() { Force = true, Recursive = true }); - + if (!this.DirectoryExists(path)) { var settings = new GitCloneSettings { Checkout = true, BranchName = "docs-changelog-details" }; @@ -475,7 +475,7 @@ public override void Run(BuildContext context) { var count = context.Argument("VersionCount", -1); var total = DocumentationHelper.BdnAllVersions.Length; - + if (count == 0) { context.DocfxChangelogDownload( @@ -569,6 +569,14 @@ public class DocfxBuildTask : FrostingTask { public override void Run(BuildContext context) { + context.Information("DocfxBuild: Generate index.md"); + var content = new StringBuilder(); + content.AppendLine("---"); + content.AppendLine("title: Home"); + content.AppendLine("---"); + content.Append(context.FileReadText(context.RootDirectory.CombineWithFilePath("README.md"))); + context.FileWriteText(context.DocsDirectory.CombineWithFilePath("index.md"), content.ToString()); + context.RunDocfx(context.DocfxJsonFile); context.GenerateRedirects(); } @@ -636,8 +644,7 @@ public override void Run(BuildContext context) }; var files = new[] { - context.RootDirectory.CombineWithFilePath("README.md"), - context.DocsDirectory.CombineWithFilePath("index.md") + context.RootDirectory.CombineWithFilePath("README.md") }; foreach (var file in files) { @@ -648,7 +655,7 @@ public override void Run(BuildContext context) lines[i] = updater.Apply(lines[i]); } - context.FileWriteLines(file, lines); + context.FileWriteLines(file, lines); } } -} +} \ 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/index.md b/docs/index.md deleted file mode 100644 index a1db414475..0000000000 --- a/docs/index.md +++ /dev/null @@ -1,318 +0,0 @@ ---- -title: Home ---- -
- - ![](logo/logo-wide.png) - -
- -
- - [![NuGet](https://img.shields.io/nuget/v/BenchmarkDotNet.svg)](https://www.nuget.org/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)](https://github.com/dotnet/BenchmarkDotNet/blob/master/LICENSE.md) - [![GitHub](https://img.shields.io/badge/source%20code-GitHub-informational)](https://github.com/dotnet/BenchmarkDotNet) - [![Twitter](https://img.shields.io/twitter/follow/BenchmarkDotNet?style=social)](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 [16500+ GitHub projects](#who-uses-benchmarkdotnet) including .NET Runtime and supported by the [.NET Foundation](https://dotnetfoundation.org). - -It's [easy](#simplicity) to start writing benchmarks, check out an example - (copy-pastable version is [here](https://benchmarkdotnet.org/articles/guides/getting-started.html)): - -```cs -[SimpleJob(RuntimeMoniker.Net472, baseline: true)] -[SimpleJob(RuntimeMoniker.NetCoreApp30)] -[SimpleJob(RuntimeMoniker.NativeAot70)] -[SimpleJob(RuntimeMoniker.Mono)] -[RPlotExporter] -public class Md5VsSha256 -{ - private SHA256 sha256 = SHA256.Create(); - private MD5 md5 = MD5.Create(); - private byte[] data; - - [Params(1000, 10000)] - public int N; - - [GlobalSetup] - public void Setup() - { - data = new byte[N]; - new Random(42).NextBytes(data); - } - - [Benchmark] - public byte[] Sha256() => sha256.ComputeHash(data); - - [Benchmark] - public byte[] Md5() => md5.ComputeHash(data); -} -``` - -BenchmarkDotNet automatically - runs the benchmarks on all the runtimes, - aggregates the measurements, - and prints a summary table with the most important information: - -```md -BenchmarkDotNet=v0.12.0, OS=Windows 10.0.17763.805 (1809/October2018Update/Redstone5) -Intel Core i7-7700K CPU 4.20GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cores - [Host] : .NET Framework 4.7.2 (4.7.3468.0), X64 RyuJIT - Net472 : .NET Framework 4.7.2 (4.7.3468.0), X64 RyuJIT - NetCoreApp30 : .NET Core 3.0.0 (CoreCLR 4.700.19.46205, CoreFX 4.700.19.46214), X64 RyuJIT - NativeAot70 : .NET 7.0.0-preview.4.22172.7, X64 NativeAOT - Mono : Mono 6.4.0 (Visual Studio), X64 - - -| Method | Runtime | N | Mean | Error | StdDev | Ratio | -|------- |-------------- |------ |-----------:|----------:|----------:|------:| -| Sha256 | .NET 4.7.2 | 1000 | 7.735 us | 0.1913 us | 0.4034 us | 1.00 | -| Sha256 | .NET Core 3.0 | 1000 | 3.989 us | 0.0796 us | 0.0745 us | 0.50 | -| Sha256 | NativeAOT 7.0 | 1000 | 4.091 us | 0.0811 us | 0.1562 us | 0.53 | -| Sha256 | Mono | 1000 | 13.117 us | 0.2485 us | 0.5019 us | 1.70 | -| | | | | | | | -| Md5 | .NET 4.7.2 | 1000 | 2.872 us | 0.0552 us | 0.0737 us | 1.00 | -| Md5 | .NET Core 3.0 | 1000 | 1.848 us | 0.0348 us | 0.0326 us | 0.64 | -| Md5 | NativeAOT 7.0 | 1000 | 1.817 us | 0.0359 us | 0.0427 us | 0.63 | -| Md5 | Mono | 1000 | 3.574 us | 0.0678 us | 0.0753 us | 1.24 | -| | | | | | | | -| Sha256 | .NET 4.7.2 | 10000 | 74.509 us | 1.5787 us | 4.6052 us | 1.00 | -| Sha256 | .NET Core 3.0 | 10000 | 36.049 us | 0.7151 us | 1.0025 us | 0.49 | -| Sha256 | NativeAOT 7.0 | 10000 | 36.253 us | 0.7076 us | 0.7571 us | 0.49 | -| Sha256 | Mono | 10000 | 116.350 us | 2.2555 us | 3.0110 us | 1.58 | -| | | | | | | | -| Md5 | .NET 4.7.2 | 10000 | 17.308 us | 0.3361 us | 0.4250 us | 1.00 | -| Md5 | .NET Core 3.0 | 10000 | 15.726 us | 0.2064 us | 0.1930 us | 0.90 | -| Md5 | NativeAOT 7.0 | 10000 | 15.627 us | 0.2631 us | 0.2461 us | 0.89 | -| Md5 | Mono | 10000 | 30.205 us | 0.5868 us | 0.6522 us | 1.74 | - -``` - -The measured data can be exported to different formats (md, html, csv, xml, json, etc.) including plots: - -![](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 -*Supported OS:* Windows, Linux, macOS -*Supported architectures:* x86, x64, ARM, ARM64, Wasm and LoongArch64 - -## Features - -BenchmarkDotNet has tons of features that are essential in comprehensive performance investigations. -Four aspects define the design of these features: - *simplicity*, *automation*, *reliability*, and *friendliness*. - -### Simplicity - -You shouldn't be an experienced performance engineer if you want to write benchmarks. -You can design very complicated performance experiments in the declarative style using simple APIs. - -For example, if you want to [parameterize](https://benchmarkdotnet.org/articles/features/parameterization.html) your benchmark, - 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) - 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 - `[SimpleJob(RuntimeMoniker.NetCoreApp30)]` and `[SimpleJob(RuntimeMoniker.Mono)]`. - -If you don't like attributes, you can call most of the APIs via the fluent style and write code like this: - -```cs -ManualConfig.CreateEmpty() // A configuration for our benchmarks - .AddJob(Job.Default // Adding first job - .WithRuntime(ClrRuntime.Net472) // .NET Framework 4.7.2 - .WithPlatform(Platform.X64) // Run as x64 application - .WithJit(Jit.LegacyJit) // Use LegacyJIT instead of the default RyuJIT - .WithGcServer(true) // Use Server GC - ).AddJob(Job.Default // Adding second job - .AsBaseline() // It will be marked as baseline - .WithEnvironmentVariable("Key", "Value") // Setting an environment variable - .WithWarmupCount(0) // Disable warm-up stage - ); -``` - -If you prefer command-line experience, you can configure your benchmarks via - the [console arguments](https://benchmarkdotnet.org/articles/guides/console-args.html) - in any console application (other types of applications are not supported). - -### Automation - -Reliable benchmarks always include a lot of boilerplate code. - -Let's think about what should you 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 - (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. -You should also evaluate the overhead of your infrastructure and deduct it from your results. -If you want to test several environments, you should perform the measurements in each of them and manually aggregate the results. - -If you write this code from scratch, it's easy to make a mistake and spoil your measurements. -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. - -Moreover, the library can help you with some advanced tasks that you may want to perform during the investigation. -For example, - BenchmarkDotNet can measure the [managed](https://benchmarkdotnet.org/articles/configs/diagnosers.html#usage) and - [native](https://benchmarkdotnet.org/articles/samples/IntroNativeMemory.html) memory traffic - and print [disassembly listings](https://benchmarkdotnet.org/articles/configs/diagnosers.html#sample-introdisassembly) for your benchmarks. - -### Reliability - -A lot of hand-written benchmarks produce wrong numbers that lead to incorrect business decisions. -BenchmarkDotNet protects you from most of the benchmarking pitfalls and allows achieving high measurement precision. - -You shouldn't worry about the perfect number of method invocation, the number of warm-up and actual iterations: - BenchmarkDotNet tries to choose the best benchmarking parameters and - achieve a good trade-off between the measurement prevision and the total duration of all benchmark runs. -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 - 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), - 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. -Inside BenchmarkDotNet, there are a lot of heuristics, checks, hacks, and tricks that help you to - increase the reliability of the results. - -### Friendliness - -Analysis of performance data is a time-consuming activity that requires attentiveness, knowledge, and experience. -BenchmarkDotNet performs the main part of this analysis for you and presents results in a user-friendly form. - -After the experiments, you get a summary table that contains a lot of useful data about the executed benchmarks. -By default, it includes only the most important columns, - but they can be [easily customized](https://benchmarkdotnet.org/articles/configs/columns.html). -The column set is adaptive and depends on the benchmark definition and measured values. -For example, if you mark one of the benchmarks as a [baseline](https://benchmarkdotnet.org/articles/features/baselines.html), - you will get additional columns that will help you to compare all the benchmarks with the baseline. -By default, it always shows the Mean column, - but if we detected a vast difference between the Mean and the Median values, - both columns will be presented. - -BenchmarkDotNet tries to find some unusual properties of your performance distributions and prints nice messages about it. -For example, it will warn you in case of multimodal distribution or high outliers. -In this case, you can scroll the results up and check out ASCII-style histograms for each distribution - 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. -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 [16500+](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). - -## 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. -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. -This book presents dozens of case studies to help you understand complicated benchmarking topics. -You will avoid common pitfalls, control the accuracy of your measurements, and improve the performance of your software. - - - -## 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. -And it continues to evolve! -We add new features all the time, but we have too many new cool ideas. -Any help will be appreciated. -You can develop new features, fix bugs, improve the documentation, or do some other cool stuff. - -If you want to contribute, check out the - [Contributing guide](https://benchmarkdotnet.org/articles/contributing/building.html) and - [up-for-grabs](https://github.com/dotnet/BenchmarkDotNet/issues?q=is:open+is:issue+label:up-for-grabs) issues. -If you have new ideas or want to complain about bugs, feel free to [create a new issue](https://github.com/dotnet/BenchmarkDotNet/issues/new). -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](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). From c4debeabe8472481ba9ff46c5ebb73f296295a85 Mon Sep 17 00:00:00 2001 From: askazakov Date: Tue, 4 Jul 2023 15:26:26 +0500 Subject: [PATCH 11/73] adjust defaultBenchmarkDotNetVersion on build (#1879) * adjust defaultBenchmarkDotNetVersion on build * fix https://github.com/dotnet/BenchmarkDotNet/pull/1879#discussion_r1250960415 * fix https://github.com/dotnet/BenchmarkDotNet/pull/1879#discussion_r1250961663 * fix https://github.com/dotnet/BenchmarkDotNet/pull/1879#discussion_r1250963754 * add install-from-source.sh (for macOS for example) * fix copy paste --- build/common.props | 24 ++++++++++++++++++++++ templates/BenchmarkDotNet.Templates.csproj | 21 +++++++++++++++++++ templates/install-from-source.sh | 13 ++++++++++++ 3 files changed, 58 insertions(+) create mode 100755 templates/install-from-source.sh diff --git a/build/common.props b/build/common.props index ec05a7bdc7..630c342b61 100644 --- a/build/common.props +++ b/build/common.props @@ -62,4 +62,28 @@ all
+ + + + + + + + + + + + + + + + +
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 From 88cb48369bb06088c5330ab6c42db7077da5a6d3 Mon Sep 17 00:00:00 2001 From: Tim Cassell <35501420+timcassell@users.noreply.github.com> Date: Tue, 4 Jul 2023 08:34:52 -0400 Subject: [PATCH 12/73] If a metric value could not be calculated, display `?` instead of `-`. (#2106) * If a metric value could not be calculated, display `?` instead of `-`. * Revert Metric.cs, don't add allocated metric if it could not be calculated. Show allocated column even if no measurements were calculated. * Show metric columns in a more abstract way. Add additional force-show metric columns. * Use constant instead of "?". * Add locks to be safe. * Update interfaces instead of static type dictionaries. * Move logic to Metric class instead of interfaces. * Implement feedback. --- .../JitStatsDiagnoser.cs | 3 + .../Tracing/NativeMemoryLogParser.cs | 4 +- .../Columns/BaselineCustomColumn.cs | 2 +- src/BenchmarkDotNet/Columns/MetricColumn.cs | 16 ++++-- src/BenchmarkDotNet/Columns/RankColumn.cs | 2 +- .../AllocatedMemoryMetricDescriptor.cs | 1 + .../AllocatedNativeMemoryDescriptor.cs | 6 ++ .../Diagnosers/ExceptionDiagnoser.cs | 1 + .../Diagnosers/MemoryDiagnoser.cs | 15 ++--- .../Diagnosers/PmcMetricDescriptor.cs | 1 + .../Diagnosers/ThreadingDiagnoser.cs | 2 + .../Disassemblers/DisassemblyDiagnoser.cs | 1 + src/BenchmarkDotNet/Engines/GcStats.cs | 57 ++++++++++++++----- .../Exporters/Csv/CsvMeasurementsExporter.cs | 3 +- .../Exporters/Xml/SummaryDto.cs | 2 +- .../Portability/RuntimeInformation.cs | 2 +- src/BenchmarkDotNet/Reports/Metric.cs | 2 + src/BenchmarkDotNet/Reports/SummaryTable.cs | 5 +- .../Columns/MetricColumnTests.cs | 1 + ...rifyTests.Exporters_Invariant.verified.txt | 24 ++++---- ...erVerifyTests.Exporters_en-US.verified.txt | 24 ++++---- ...erVerifyTests.Exporters_ru-RU.verified.txt | 24 ++++---- .../Mocks/MockFactory.cs | 11 ++++ .../Reports/FakeMetricDescriptor.cs | 1 + .../Reports/SummaryTableTests.cs | 41 +++++++++++++ .../Reports/SummaryTests.cs | 1 + 26 files changed, 182 insertions(+), 70 deletions(-) diff --git a/src/BenchmarkDotNet.Diagnostics.Windows/JitStatsDiagnoser.cs b/src/BenchmarkDotNet.Diagnostics.Windows/JitStatsDiagnoser.cs index 8e3a90cb62..a86989aef5 100644 --- a/src/BenchmarkDotNet.Diagnostics.Windows/JitStatsDiagnoser.cs +++ b/src/BenchmarkDotNet.Diagnostics.Windows/JitStatsDiagnoser.cs @@ -69,6 +69,7 @@ private sealed class MethodsJittedDescriptor : IMetricDescriptor public UnitType UnitType => UnitType.Dimensionless; public string Unit => "Count"; public int PriorityInCategory => 0; + public bool GetIsAvailable(Metric metric) => true; } private sealed class MethodsTieredDescriptor : IMetricDescriptor @@ -83,6 +84,7 @@ private sealed class MethodsTieredDescriptor : IMetricDescriptor public UnitType UnitType => UnitType.Dimensionless; public string Unit => "Count"; public int PriorityInCategory => 0; + public bool GetIsAvailable(Metric metric) => true; } private sealed class JitAllocatedMemoryDescriptor : IMetricDescriptor @@ -97,6 +99,7 @@ private sealed class JitAllocatedMemoryDescriptor : IMetricDescriptor public UnitType UnitType => UnitType.Size; public string Unit => SizeUnit.B.Name; public int PriorityInCategory => 0; + public bool GetIsAvailable(Metric metric) => true; } } diff --git a/src/BenchmarkDotNet.Diagnostics.Windows/Tracing/NativeMemoryLogParser.cs b/src/BenchmarkDotNet.Diagnostics.Windows/Tracing/NativeMemoryLogParser.cs index 711c23f0c5..9e269f28fb 100644 --- a/src/BenchmarkDotNet.Diagnostics.Windows/Tracing/NativeMemoryLogParser.cs +++ b/src/BenchmarkDotNet.Diagnostics.Windows/Tracing/NativeMemoryLogParser.cs @@ -262,8 +262,8 @@ bool IsCallStackIn(StackSourceCallStackIndex index) return new[] { - new Metric(new AllocatedNativeMemoryDescriptor(), memoryAllocatedPerOperation), - new Metric(new NativeMemoryLeakDescriptor(), memoryLeakPerOperation) + new Metric(AllocatedNativeMemoryDescriptor.Instance, memoryAllocatedPerOperation), + new Metric(NativeMemoryLeakDescriptor.Instance, memoryLeakPerOperation) }; } diff --git a/src/BenchmarkDotNet/Columns/BaselineCustomColumn.cs b/src/BenchmarkDotNet/Columns/BaselineCustomColumn.cs index 019af41918..b808d988d8 100644 --- a/src/BenchmarkDotNet/Columns/BaselineCustomColumn.cs +++ b/src/BenchmarkDotNet/Columns/BaselineCustomColumn.cs @@ -18,7 +18,7 @@ public string GetValue(Summary summary, BenchmarkCase benchmarkCase) bool isBaseline = summary.IsBaseline(benchmarkCase); if (ResultsAreInvalid(summary, benchmarkCase, baseline)) - return "?"; + return MetricColumn.UnknownRepresentation; var baselineStat = summary[baseline].ResultStatistics; var baselineMetrics = summary[baseline].Metrics; diff --git a/src/BenchmarkDotNet/Columns/MetricColumn.cs b/src/BenchmarkDotNet/Columns/MetricColumn.cs index a622f34dc9..645891502a 100644 --- a/src/BenchmarkDotNet/Columns/MetricColumn.cs +++ b/src/BenchmarkDotNet/Columns/MetricColumn.cs @@ -8,6 +8,8 @@ namespace BenchmarkDotNet.Columns { public class MetricColumn : IColumn { + internal const string UnknownRepresentation = "?"; + private readonly IMetricDescriptor descriptor; public MetricColumn(IMetricDescriptor metricDescriptor) => descriptor = metricDescriptor; @@ -23,13 +25,19 @@ public class MetricColumn : IColumn public bool IsDefault(Summary summary, BenchmarkCase benchmarkCase) => false; - public bool IsAvailable(Summary summary) => summary.Reports.Any(report => report.Metrics.ContainsKey(descriptor.Id)); + public bool IsAvailable(Summary summary) => summary.Reports.Any(report => + report.Metrics.TryGetValue(descriptor.Id, out var metric) + && metric.Descriptor.GetIsAvailable(metric)); public string GetValue(Summary summary, BenchmarkCase benchmarkCase) => GetValue(summary, benchmarkCase, SummaryStyle.Default); public string GetValue(Summary summary, BenchmarkCase benchmarkCase, SummaryStyle style) { - if (!summary.HasReport(benchmarkCase) || !summary[benchmarkCase].Metrics.TryGetValue(descriptor.Id, out Metric metric) || (metric.Value == 0.0 && !style.PrintZeroValuesInContent)) + if (!summary.HasReport(benchmarkCase) || !summary[benchmarkCase].Metrics.TryGetValue(descriptor.Id, out Metric metric)) + return "NA"; + if (double.IsNaN(metric.Value)) + return UnknownRepresentation; + if (metric.Value == 0.0 && !style.PrintZeroValuesInContent) return "-"; var cultureInfo = summary.GetCultureInfo(); @@ -38,9 +46,9 @@ public string GetValue(Summary summary, BenchmarkCase benchmarkCase, SummaryStyl UnitPresentation unitPresentation = UnitPresentation.FromVisibility(style.PrintUnitsInContent); if (printUnits && descriptor.UnitType == UnitType.CodeSize) - return SizeValue.FromBytes((long)metric.Value).ToString(style.CodeSizeUnit, cultureInfo, descriptor.NumberFormat, unitPresentation); + return SizeValue.FromBytes((long) metric.Value).ToString(style.CodeSizeUnit, cultureInfo, descriptor.NumberFormat, unitPresentation); if (printUnits && descriptor.UnitType == UnitType.Size) - return SizeValue.FromBytes((long)metric.Value).ToString(style.SizeUnit, cultureInfo, descriptor.NumberFormat, unitPresentation); + return SizeValue.FromBytes((long) metric.Value).ToString(style.SizeUnit, cultureInfo, descriptor.NumberFormat, unitPresentation); if (printUnits && descriptor.UnitType == UnitType.Time) return TimeInterval.FromNanoseconds(metric.Value).ToString(style.TimeUnit, cultureInfo, descriptor.NumberFormat, unitPresentation); diff --git a/src/BenchmarkDotNet/Columns/RankColumn.cs b/src/BenchmarkDotNet/Columns/RankColumn.cs index 6a9c9872c2..4aec953733 100644 --- a/src/BenchmarkDotNet/Columns/RankColumn.cs +++ b/src/BenchmarkDotNet/Columns/RankColumn.cs @@ -28,7 +28,7 @@ public string GetValue(Summary summary, BenchmarkCase benchmarkCase) .ToArray(); int index = Array.IndexOf(logicalGroup, benchmarkCase); if (index == -1) - return "?"; + return MetricColumn.UnknownRepresentation; var ranks = RankHelper.GetRanks(logicalGroup.Select(b => summary[b].ResultStatistics).ToArray()); int rank = ranks[index]; diff --git a/src/BenchmarkDotNet/Diagnosers/AllocatedMemoryMetricDescriptor.cs b/src/BenchmarkDotNet/Diagnosers/AllocatedMemoryMetricDescriptor.cs index 0531d7e70b..dc6cac925d 100644 --- a/src/BenchmarkDotNet/Diagnosers/AllocatedMemoryMetricDescriptor.cs +++ b/src/BenchmarkDotNet/Diagnosers/AllocatedMemoryMetricDescriptor.cs @@ -16,5 +16,6 @@ internal class AllocatedMemoryMetricDescriptor : IMetricDescriptor public string Unit => SizeUnit.B.Name; public bool TheGreaterTheBetter => false; public int PriorityInCategory => GC.MaxGeneration + 1; + public bool GetIsAvailable(Metric metric) => true; } } \ No newline at end of file diff --git a/src/BenchmarkDotNet/Diagnosers/AllocatedNativeMemoryDescriptor.cs b/src/BenchmarkDotNet/Diagnosers/AllocatedNativeMemoryDescriptor.cs index dec2d0a5bf..8781333f80 100644 --- a/src/BenchmarkDotNet/Diagnosers/AllocatedNativeMemoryDescriptor.cs +++ b/src/BenchmarkDotNet/Diagnosers/AllocatedNativeMemoryDescriptor.cs @@ -5,6 +5,8 @@ namespace BenchmarkDotNet.Diagnosers { internal class AllocatedNativeMemoryDescriptor : IMetricDescriptor { + internal static readonly IMetricDescriptor Instance = new AllocatedNativeMemoryDescriptor(); + public string Id => nameof(AllocatedNativeMemoryDescriptor); public string DisplayName => Column.AllocatedNativeMemory; public string Legend => $"Allocated native memory per single operation"; @@ -13,10 +15,13 @@ internal class AllocatedNativeMemoryDescriptor : IMetricDescriptor public string Unit => SizeUnit.B.Name; public bool TheGreaterTheBetter => false; public int PriorityInCategory => 0; + public bool GetIsAvailable(Metric metric) => true; } internal class NativeMemoryLeakDescriptor : IMetricDescriptor { + internal static readonly IMetricDescriptor Instance = new NativeMemoryLeakDescriptor(); + public string Id => nameof(NativeMemoryLeakDescriptor); public string DisplayName => Column.NativeMemoryLeak; public string Legend => $"Native memory leak size in byte."; @@ -25,5 +30,6 @@ internal class NativeMemoryLeakDescriptor : IMetricDescriptor public string Unit => SizeUnit.B.Name; public bool TheGreaterTheBetter => false; public int PriorityInCategory => 0; + public bool GetIsAvailable(Metric metric) => true; } } \ No newline at end of file diff --git a/src/BenchmarkDotNet/Diagnosers/ExceptionDiagnoser.cs b/src/BenchmarkDotNet/Diagnosers/ExceptionDiagnoser.cs index d30495d02b..782e895d3e 100644 --- a/src/BenchmarkDotNet/Diagnosers/ExceptionDiagnoser.cs +++ b/src/BenchmarkDotNet/Diagnosers/ExceptionDiagnoser.cs @@ -49,6 +49,7 @@ private class ExceptionsFrequencyMetricDescriptor : IMetricDescriptor public string Unit => "Count"; public bool TheGreaterTheBetter => false; public int PriorityInCategory => 0; + public bool GetIsAvailable(Metric metric) => true; } } } diff --git a/src/BenchmarkDotNet/Diagnosers/MemoryDiagnoser.cs b/src/BenchmarkDotNet/Diagnosers/MemoryDiagnoser.cs index b6c2eb12bb..e9c9fd7ae5 100644 --- a/src/BenchmarkDotNet/Diagnosers/MemoryDiagnoser.cs +++ b/src/BenchmarkDotNet/Diagnosers/MemoryDiagnoser.cs @@ -34,14 +34,14 @@ public void Handle(HostSignal signal, DiagnoserActionParameters parameters) { } public IEnumerable ProcessResults(DiagnoserResults diagnoserResults) { - if (diagnoserResults.GcStats.Gen0Collections > 0 && Config.DisplayGenColumns) - yield return new Metric(GarbageCollectionsMetricDescriptor.Gen0, diagnoserResults.GcStats.Gen0Collections / (double)diagnoserResults.GcStats.TotalOperations * 1000); - if (diagnoserResults.GcStats.Gen1Collections > 0 && Config.DisplayGenColumns) - yield return new Metric(GarbageCollectionsMetricDescriptor.Gen1, diagnoserResults.GcStats.Gen1Collections / (double)diagnoserResults.GcStats.TotalOperations * 1000); - if (diagnoserResults.GcStats.Gen2Collections > 0 && Config.DisplayGenColumns) - yield return new Metric(GarbageCollectionsMetricDescriptor.Gen2, diagnoserResults.GcStats.Gen2Collections / (double)diagnoserResults.GcStats.TotalOperations * 1000); + if (Config.DisplayGenColumns) + { + yield return new Metric(GarbageCollectionsMetricDescriptor.Gen0, diagnoserResults.GcStats.Gen0Collections / (double) diagnoserResults.GcStats.TotalOperations * 1000); + yield return new Metric(GarbageCollectionsMetricDescriptor.Gen1, diagnoserResults.GcStats.Gen1Collections / (double) diagnoserResults.GcStats.TotalOperations * 1000); + yield return new Metric(GarbageCollectionsMetricDescriptor.Gen2, diagnoserResults.GcStats.Gen2Collections / (double) diagnoserResults.GcStats.TotalOperations * 1000); + } - yield return new Metric(AllocatedMemoryMetricDescriptor.Instance, diagnoserResults.GcStats.GetBytesAllocatedPerOperation(diagnoserResults.BenchmarkCase)); + yield return new Metric(AllocatedMemoryMetricDescriptor.Instance, diagnoserResults.GcStats.GetBytesAllocatedPerOperation(diagnoserResults.BenchmarkCase) ?? double.NaN); } private class GarbageCollectionsMetricDescriptor : IMetricDescriptor @@ -66,6 +66,7 @@ private GarbageCollectionsMetricDescriptor(int generationId, string columnName) public string Unit => "Count"; public bool TheGreaterTheBetter => false; public int PriorityInCategory { get; } + public bool GetIsAvailable(Metric metric) => metric.Value > 0; } } } \ No newline at end of file diff --git a/src/BenchmarkDotNet/Diagnosers/PmcMetricDescriptor.cs b/src/BenchmarkDotNet/Diagnosers/PmcMetricDescriptor.cs index 3e15b5bf87..0e6d527018 100644 --- a/src/BenchmarkDotNet/Diagnosers/PmcMetricDescriptor.cs +++ b/src/BenchmarkDotNet/Diagnosers/PmcMetricDescriptor.cs @@ -21,5 +21,6 @@ internal PmcMetricDescriptor(PreciseMachineCounter counter) public UnitType UnitType => UnitType.Dimensionless; public string Unit => "Count"; public int PriorityInCategory => 0; + public bool GetIsAvailable(Metric metric) => true; } } \ No newline at end of file diff --git a/src/BenchmarkDotNet/Diagnosers/ThreadingDiagnoser.cs b/src/BenchmarkDotNet/Diagnosers/ThreadingDiagnoser.cs index cf19cba1e1..057a0bb624 100644 --- a/src/BenchmarkDotNet/Diagnosers/ThreadingDiagnoser.cs +++ b/src/BenchmarkDotNet/Diagnosers/ThreadingDiagnoser.cs @@ -62,6 +62,7 @@ private class CompletedWorkItemCountMetricDescriptor : IMetricDescriptor public string Unit => "Count"; public bool TheGreaterTheBetter => false; public int PriorityInCategory => 0; + public bool GetIsAvailable(Metric metric) => true; } private class LockContentionCountMetricDescriptor : IMetricDescriptor @@ -76,6 +77,7 @@ private class LockContentionCountMetricDescriptor : IMetricDescriptor public string Unit => "Count"; public bool TheGreaterTheBetter => false; public int PriorityInCategory => 0; + public bool GetIsAvailable(Metric metric) => true; } } } \ No newline at end of file diff --git a/src/BenchmarkDotNet/Disassemblers/DisassemblyDiagnoser.cs b/src/BenchmarkDotNet/Disassemblers/DisassemblyDiagnoser.cs index cc9f535027..2c6eb62f79 100644 --- a/src/BenchmarkDotNet/Disassemblers/DisassemblyDiagnoser.cs +++ b/src/BenchmarkDotNet/Disassemblers/DisassemblyDiagnoser.cs @@ -190,6 +190,7 @@ private class NativeCodeSizeMetricDescriptor : IMetricDescriptor public string Unit => SizeUnit.B.Name; public bool TheGreaterTheBetter => false; public int PriorityInCategory => 0; + public bool GetIsAvailable(Metric metric) => true; } } } \ No newline at end of file diff --git a/src/BenchmarkDotNet/Engines/GcStats.cs b/src/BenchmarkDotNet/Engines/GcStats.cs index 573e2c4828..a156c88161 100644 --- a/src/BenchmarkDotNet/Engines/GcStats.cs +++ b/src/BenchmarkDotNet/Engines/GcStats.cs @@ -1,5 +1,6 @@ using System; using System.Reflection; +using BenchmarkDotNet.Columns; using BenchmarkDotNet.Jobs; using BenchmarkDotNet.Portability; using BenchmarkDotNet.Running; @@ -17,9 +18,10 @@ public struct GcStats : IEquatable private static readonly Func GetAllocatedBytesForCurrentThreadDelegate = CreateGetAllocatedBytesForCurrentThreadDelegate(); private static readonly Func GetTotalAllocatedBytesDelegate = CreateGetTotalAllocatedBytesDelegate(); #endif - public static readonly GcStats Empty = new GcStats(0, 0, 0, 0, 0); - private GcStats(int gen0Collections, int gen1Collections, int gen2Collections, long allocatedBytes, long totalOperations) + public static readonly GcStats Empty = default; + + private GcStats(int gen0Collections, int gen1Collections, int gen2Collections, long? allocatedBytes, long totalOperations) { Gen0Collections = gen0Collections; Gen1Collections = gen1Collections; @@ -36,18 +38,19 @@ private GcStats(int gen0Collections, int gen1Collections, int gen2Collections, l /// /// Total per all runs /// - private long AllocatedBytes { get; } + private long? AllocatedBytes { get; } public long TotalOperations { get; } - public long GetBytesAllocatedPerOperation(BenchmarkCase benchmarkCase) + public long? GetBytesAllocatedPerOperation(BenchmarkCase benchmarkCase) { bool excludeAllocationQuantumSideEffects = benchmarkCase.GetRuntime().RuntimeMoniker <= RuntimeMoniker.NetCoreApp20; // the issue got fixed for .NET Core 2.0+ https://github.com/dotnet/coreclr/issues/10207 - return GetTotalAllocatedBytes(excludeAllocationQuantumSideEffects) == 0 - ? 0 + long? allocatedBytes = GetTotalAllocatedBytes(excludeAllocationQuantumSideEffects); + return allocatedBytes == null ? null + : allocatedBytes == 0 ? 0 : (long) Math.Round( // let's round it to reduce the side effects of Allocation quantum - (double) GetTotalAllocatedBytes(excludeAllocationQuantumSideEffects) / TotalOperations, + (double) allocatedBytes.Value / TotalOperations, MidpointRounding.ToEven); } @@ -67,10 +70,15 @@ public long GetBytesAllocatedPerOperation(BenchmarkCase benchmarkCase) Math.Max(0, left.Gen0Collections - right.Gen0Collections), Math.Max(0, left.Gen1Collections - right.Gen1Collections), Math.Max(0, left.Gen2Collections - right.Gen2Collections), - Math.Max(0, left.AllocatedBytes - right.AllocatedBytes), + ClampToPositive(left.AllocatedBytes - right.AllocatedBytes), Math.Max(0, left.TotalOperations - right.TotalOperations)); } + private static long? ClampToPositive(long? num) + { + return num.HasValue ? Math.Max(0, num.Value) : null; + } + public GcStats WithTotalOperations(long totalOperationsCount) => this + new GcStats(0, 0, 0, 0, totalOperationsCount); @@ -92,8 +100,11 @@ public int GetCollectionsCount(int generation) /// Allocation quantum can affecting some of our nano-benchmarks in non-deterministic way. /// when this parameter is set to true and the number of all allocated bytes is less or equal AQ, we ignore AQ and put 0 to the results /// - public long GetTotalAllocatedBytes(bool excludeAllocationQuantumSideEffects) + public long? GetTotalAllocatedBytes(bool excludeAllocationQuantumSideEffects) { + if (AllocatedBytes == null) + return null; + if (!excludeAllocationQuantumSideEffects) return AllocatedBytes; @@ -103,7 +114,7 @@ public long GetTotalAllocatedBytes(bool excludeAllocationQuantumSideEffects) public static GcStats ReadInitial() { // this will force GC.Collect, so we want to do this before collecting collections counts - long allocatedBytes = GetAllocatedBytes(); + long? allocatedBytes = GetAllocatedBytes(); return new GcStats( GC.CollectionCount(0), @@ -130,14 +141,14 @@ public static GcStats ReadFinal() public static GcStats FromForced(int forcedFullGarbageCollections) => new GcStats(forcedFullGarbageCollections, forcedFullGarbageCollections, forcedFullGarbageCollections, 0, 0); - private static long GetAllocatedBytes() + private static long? GetAllocatedBytes() { if (RuntimeInformation.IsOldMono) // Monitoring is not available in Mono, see http://stackoverflow.com/questions/40234948/how-to-get-the-number-of-allocated-bytes- - return 0; + return null; // we have no tests for WASM and don't want to risk introducing a new bug (https://github.com/dotnet/BenchmarkDotNet/issues/2226) if (RuntimeInformation.IsWasm) - return 0; + return null; // "This instance Int64 property returns the number of bytes that have been allocated by a specific // AppDomain. The number is accurate as of the last garbage collection." - CLR via C# @@ -177,7 +188,7 @@ private static Func CreateGetTotalAllocatedBytesDelegate() } public string ToOutputLine() - => $"{ResultsLinePrefix} {Gen0Collections} {Gen1Collections} {Gen2Collections} {AllocatedBytes} {TotalOperations}"; + => $"{ResultsLinePrefix} {Gen0Collections} {Gen1Collections} {Gen2Collections} {AllocatedBytes?.ToString() ?? MetricColumn.UnknownRepresentation} {TotalOperations}"; public static GcStats Parse(string line) { @@ -188,7 +199,7 @@ public static GcStats Parse(string line) if (!int.TryParse(measurementSplit[0], out int gen0) || !int.TryParse(measurementSplit[1], out int gen1) || !int.TryParse(measurementSplit[2], out int gen2) - || !long.TryParse(measurementSplit[3], out long allocatedBytes) + || !TryParse(measurementSplit[3], out long? allocatedBytes) || !long.TryParse(measurementSplit[4], out long totalOperationsCount)) { throw new NotSupportedException("Invalid string"); @@ -197,6 +208,22 @@ public static GcStats Parse(string line) return new GcStats(gen0, gen1, gen2, allocatedBytes, totalOperationsCount); } + private static bool TryParse(string s, out long? result) + { + if (s == MetricColumn.UnknownRepresentation) + { + result = null; + return true; + } + if (long.TryParse(s, out long r)) + { + result = r; + return true; + } + result = null; + return false; + } + public override string ToString() => ToOutputLine(); /// diff --git a/src/BenchmarkDotNet/Exporters/Csv/CsvMeasurementsExporter.cs b/src/BenchmarkDotNet/Exporters/Csv/CsvMeasurementsExporter.cs index a02953fe63..74f6130f1c 100644 --- a/src/BenchmarkDotNet/Exporters/Csv/CsvMeasurementsExporter.cs +++ b/src/BenchmarkDotNet/Exporters/Csv/CsvMeasurementsExporter.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using BenchmarkDotNet.Characteristics; +using BenchmarkDotNet.Columns; using BenchmarkDotNet.Jobs; using BenchmarkDotNet.Loggers; using BenchmarkDotNet.Reports; @@ -69,7 +70,7 @@ private static MeasurementColumn[] GetColumns(Summary summary) new MeasurementColumn("Gen_0", (_, report, __) => report.GcStats.Gen0Collections.ToString(summary.GetCultureInfo())), new MeasurementColumn("Gen_1", (_, report, __) => report.GcStats.Gen1Collections.ToString(summary.GetCultureInfo())), new MeasurementColumn("Gen_2", (_, report, __) => report.GcStats.Gen2Collections.ToString(summary.GetCultureInfo())), - new MeasurementColumn("Allocated_Bytes", (_, report, __) => report.GcStats.GetBytesAllocatedPerOperation(report.BenchmarkCase).ToString(summary.GetCultureInfo())) + new MeasurementColumn("Allocated_Bytes", (_, report, __) => report.GcStats.GetBytesAllocatedPerOperation(report.BenchmarkCase)?.ToString(summary.GetCultureInfo()) ?? MetricColumn.UnknownRepresentation) }; return columns.ToArray(); diff --git a/src/BenchmarkDotNet/Exporters/Xml/SummaryDto.cs b/src/BenchmarkDotNet/Exporters/Xml/SummaryDto.cs index 9b7ea621dd..13c9a74619 100644 --- a/src/BenchmarkDotNet/Exporters/Xml/SummaryDto.cs +++ b/src/BenchmarkDotNet/Exporters/Xml/SummaryDto.cs @@ -102,6 +102,6 @@ internal struct GcStats public int Gen1Collections { get; set; } public int Gen2Collections { get; set; } public long TotalOperations { get; set; } - public long BytesAllocatedPerOperation { get; set; } + public long? BytesAllocatedPerOperation { get; set; } } } diff --git a/src/BenchmarkDotNet/Portability/RuntimeInformation.cs b/src/BenchmarkDotNet/Portability/RuntimeInformation.cs index 1aca931c7b..c94c72fa50 100644 --- a/src/BenchmarkDotNet/Portability/RuntimeInformation.cs +++ b/src/BenchmarkDotNet/Portability/RuntimeInformation.cs @@ -296,7 +296,7 @@ private static string GetNetCoreVersion() } else { - string runtimeVersion = version != default ? version.ToString() : "?"; + string runtimeVersion = version != default ? version.ToString() : Unknown; return $".NET Core {runtimeVersion} (CoreCLR {coreclrAssemblyInfo.FileVersion}, CoreFX {corefxAssemblyInfo.FileVersion})"; } diff --git a/src/BenchmarkDotNet/Reports/Metric.cs b/src/BenchmarkDotNet/Reports/Metric.cs index 688e421571..3bb12dd3ef 100644 --- a/src/BenchmarkDotNet/Reports/Metric.cs +++ b/src/BenchmarkDotNet/Reports/Metric.cs @@ -34,6 +34,8 @@ public interface IMetricDescriptor [PublicAPI] bool TheGreaterTheBetter { get; } [PublicAPI] int PriorityInCategory { get; } + + [PublicAPI] bool GetIsAvailable(Metric metric); } public class MetricDescriptorEqualityComparer : EqualityComparer diff --git a/src/BenchmarkDotNet/Reports/SummaryTable.cs b/src/BenchmarkDotNet/Reports/SummaryTable.cs index 00106fbab5..59c4630bd3 100644 --- a/src/BenchmarkDotNet/Reports/SummaryTable.cs +++ b/src/BenchmarkDotNet/Reports/SummaryTable.cs @@ -50,7 +50,10 @@ internal SummaryTable(Summary summary, SummaryStyle style = null) if (style.SizeUnit == null) { - style = style.WithSizeUnit(SizeUnit.GetBestSizeUnit(summary.Reports.Select(r => r.GcStats.GetBytesAllocatedPerOperation(r.BenchmarkCase)).ToArray())); + style = style.WithSizeUnit(SizeUnit.GetBestSizeUnit(summary.Reports + .Where(r => r.GcStats.GetBytesAllocatedPerOperation(r.BenchmarkCase).HasValue) + .Select(r => r.GcStats.GetBytesAllocatedPerOperation(r.BenchmarkCase).Value) + .ToArray())); } var columns = summary.GetColumns(); 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/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_Invariant.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_Invariant.verified.txt index 50556461f8..1cdb0c8f74 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_Invariant.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_Invariant.verified.txt @@ -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,7 +396,7 @@ 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 ############################################ @@ -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.MocksMockBenchmarkClassFooFoo11111111110000NaNNaN110L999NaNNaNNaN11111111100000MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar11111111110000NaNNaN110L999NaNNaNNaN11111111100000 +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.MocksMockBenchmarkClassFooFoo11111111110000NaNNaN110L999NaNNaNNaN1111111110000MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar11111111110000NaNNaN110L999NaNNaNNaN1111111110000 ############################################ 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.MocksMockBenchmarkClassFooFoo11111111110000NaNNaN110L999NaNNaNNaN11111111100000WorkloadResult1111MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar11111111110000NaNNaN110L999NaNNaNNaN11111111100000WorkloadResult1111 +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.MocksMockBenchmarkClassFooFoo11111111110000NaNNaN110L999NaNNaNNaN1111111110000WorkloadResult1111MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar11111111110000NaNNaN110L999NaNNaNNaN1111111110000WorkloadResult1111 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..1cdb0c8f74 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 @@ -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,7 +396,7 @@ 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 ############################################ @@ -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.MocksMockBenchmarkClassFooFoo11111111110000NaNNaN110L999NaNNaNNaN11111111100000MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar11111111110000NaNNaN110L999NaNNaNNaN11111111100000 +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.MocksMockBenchmarkClassFooFoo11111111110000NaNNaN110L999NaNNaNNaN1111111110000MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar11111111110000NaNNaN110L999NaNNaNNaN1111111110000 ############################################ 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.MocksMockBenchmarkClassFooFoo11111111110000NaNNaN110L999NaNNaNNaN11111111100000WorkloadResult1111MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar11111111110000NaNNaN110L999NaNNaNNaN11111111100000WorkloadResult1111 +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.MocksMockBenchmarkClassFooFoo11111111110000NaNNaN110L999NaNNaNNaN1111111110000WorkloadResult1111MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar11111111110000NaNNaN110L999NaNNaNNaN1111111110000WorkloadResult1111 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..da60761564 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 @@ -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,7 +396,7 @@ 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 ############################################ @@ -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.MocksMockBenchmarkClassFooFoo11111111110000NaNNaN110L999NaNNaNNaN11111111100000MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar11111111110000NaNNaN110L999NaNNaNNaN11111111100000 +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.MocksMockBenchmarkClassFooFoo11111111110000NaNNaN110L999NaNNaNNaN1111111110000MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar11111111110000NaNNaN110L999NaNNaNNaN1111111110000 ############################################ 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.MocksMockBenchmarkClassFooFoo11111111110000NaNNaN110L999NaNNaNNaN11111111100000WorkloadResult1111MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar11111111110000NaNNaN110L999NaNNaNNaN11111111100000WorkloadResult1111 +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.MocksMockBenchmarkClassFooFoo11111111110000NaNNaN110L999NaNNaNNaN1111111110000WorkloadResult1111MockBenchmarkClass.Bar: LongRun(IterationCount=100, LaunchCount=3, WarmupCount=15)BenchmarkDotNet.Tests.MocksMockBenchmarkClassBarBar11111111110000NaNNaN110L999NaNNaNNaN1111111110000WorkloadResult1111 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/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; } } } From 3af22c10a01d9b3149b211e3b430ab22fccae71e Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Tue, 4 Jul 2023 14:54:07 +0200 Subject: [PATCH 13/73] Prepare v0.13.6 changelog --- docs/_changelog/footer/v0.13.6.md | 11 +++++++++++ docs/_changelog/header/v0.13.6.md | 23 +++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 docs/_changelog/footer/v0.13.6.md create mode 100644 docs/_changelog/header/v0.13.6.md diff --git a/docs/_changelog/footer/v0.13.6.md b/docs/_changelog/footer/v0.13.6.md new file mode 100644 index 0000000000..a795c8a07e --- /dev/null +++ b/docs/_changelog/footer/v0.13.6.md @@ -0,0 +1,11 @@ +_Date: TBA_ + +_Milestone: [v0.13.6](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone%3Av0.13.6)_ +([List of commits](https://github.com/dotnet/BenchmarkDotNet/compare/v0.13.5...v0.13.6)) + +_NuGet Packages:_ +* https://www.nuget.org/packages/BenchmarkDotNet/0.13.6 +* https://www.nuget.org/packages/BenchmarkDotNet.Diagnostics.Windows/0.13.6 +* https://www.nuget.org/packages/BenchmarkDotNet.Diagnostics.dotTrace/0.13.6 +* https://www.nuget.org/packages/BenchmarkDotNet.Annotations/0.13.6 +* https://www.nuget.org/packages/BenchmarkDotNet.Templates/0.13.6 \ No newline at end of file diff --git a/docs/_changelog/header/v0.13.6.md b/docs/_changelog/header/v0.13.6.md new file mode 100644 index 0000000000..7667d404ce --- /dev/null +++ b/docs/_changelog/header/v0.13.6.md @@ -0,0 +1,23 @@ +## Highlights + +* New [BenchmarkDotNet.Diagnostics.dotTrace](https://www.nuget.org/packages/BenchmarkDotNet.Diagnostics.dotTrace) NuGet package. + Once this package is installed, you can annotate your benchmarks with the `[DotTraceDiagnoser]` and get a [dotTrace](https://www.jetbrains.com/profiler/) performance snapshot at the end of the benchmark run. + [#2328](https://github.com/dotnet/BenchmarkDotNet/pull/2328) +* Updated documentation website. + We migrated to [docfx](https://dotnet.github.io/docfx/) 2.67 and got the refreshed modern template based on bootstrap 5 with dark/light theme switcher. +* Updated [BenchmarkDotNet.Templates](https://www.nuget.org/packages/BenchmarkDotNet.Templates). + Multiple issues were resolved, now you can create new benchmark projects from terminal or your favorite IDE. + [#1658](https://github.com/dotnet/BenchmarkDotNet/issues/1658) + [#1881](https://github.com/dotnet/BenchmarkDotNet/issues/1881) + [#2149](https://github.com/dotnet/BenchmarkDotNet/issues/2149) + [#2338](https://github.com/dotnet/BenchmarkDotNet/pull/2338) +* Response file support. + Now it's possible to pass additional arguments to BenchmarkDotNet using `@filename` syntax. + [#2320](https://github.com/dotnet/BenchmarkDotNet/pull/2320) + [#2348](https://github.com/dotnet/BenchmarkDotNet/pull/2348) +* Custom runtime support. + [#2285](https://github.com/dotnet/BenchmarkDotNet/pull/2285) +* Introduce CategoryDiscoverer, see [`IntroCategoryDiscoverer`](xref:BenchmarkDotNet.Samples.IntroCategoryDiscoverer). + [#2306](https://github.com/dotnet/BenchmarkDotNet/issues/2306) + [#2307](https://github.com/dotnet/BenchmarkDotNet/pull/2307) +* Multiple bug fixes. \ No newline at end of file From 2d5156ad90164039b4e2880d61a586237c70b385 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Tue, 4 Jul 2023 14:55:15 +0200 Subject: [PATCH 14/73] Remove Ben.Demystifier from Build project --- build/Build.csproj | 1 - build/ChangeLogBuilder.cs | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/build/Build.csproj b/build/Build.csproj index 90f9a13380..c8e91cf2ba 100644 --- a/build/Build.csproj +++ b/build/Build.csproj @@ -9,7 +9,6 @@ - diff --git a/build/ChangeLogBuilder.cs b/build/ChangeLogBuilder.cs index d590e6fc82..561ece19b7 100644 --- a/build/ChangeLogBuilder.cs +++ b/build/ChangeLogBuilder.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Collections.Immutable; -using System.Diagnostics; using System.IO; using System.Linq; using System.Text; @@ -245,7 +244,7 @@ public static async Task Run(DirectoryPath path, string currentMilestone, string } catch (Exception e) { - await Console.Error.WriteLineAsync(e.Demystify().ToString()); + await Console.Error.WriteLineAsync(e.ToString()); } } } \ No newline at end of file From ee1ae7486047bbf4ffe007d88ddc86f7d74a9b10 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Tue, 4 Jul 2023 15:00:28 +0200 Subject: [PATCH 15/73] Bump Octokit: 6.2.1->7.0.0 --- build/Build.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Build.csproj b/build/Build.csproj index c8e91cf2ba..9824f49459 100644 --- a/build/Build.csproj +++ b/build/Build.csproj @@ -10,6 +10,6 @@ - + \ No newline at end of file From dc54ac213b64f285a6e3493897a361de5ee31ba9 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Tue, 4 Jul 2023 15:03:55 +0200 Subject: [PATCH 16/73] Bump docfx: 2.67.3->2.67.5 --- build/Build.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Build.csproj b/build/Build.csproj index 9824f49459..6c3dc8db6a 100644 --- a/build/Build.csproj +++ b/build/Build.csproj @@ -8,7 +8,7 @@ - + From 7986cea7e06f63ace8e96d5e6c4aec43345023b6 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Tue, 4 Jul 2023 15:32:31 +0200 Subject: [PATCH 17/73] Remove excessive logs in cleanup --- src/BenchmarkDotNet/Running/BenchmarkRunnerClean.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/BenchmarkDotNet/Running/BenchmarkRunnerClean.cs b/src/BenchmarkDotNet/Running/BenchmarkRunnerClean.cs index 7ef2af40b9..80a3ef0897 100644 --- a/src/BenchmarkDotNet/Running/BenchmarkRunnerClean.cs +++ b/src/BenchmarkDotNet/Running/BenchmarkRunnerClean.cs @@ -644,7 +644,6 @@ private static void Cleanup(ILogger logger, HashSet artifactsToCleanup) { foreach (string path in artifactsToCleanup) { - logger.WriteLineInfo($"Trying to delete '{path}'"); try { if (Directory.Exists(path)) @@ -655,11 +654,9 @@ private static void Cleanup(ILogger logger, HashSet artifactsToCleanup) { File.Delete(path); } - logger.WriteLineInfo($"Successfully deleted '{path}'"); } - catch (Exception e) + catch (Exception) { - logger.WriteLineInfo($"Failed to delete '{path}' because of the following exception: {e}"); // sth is locking our auto-generated files // there is very little we can do about it } From c352b3640e4a845bcd05a893928bd8bacf007e45 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Tue, 4 Jul 2023 15:49:26 +0200 Subject: [PATCH 18/73] Improve RScript discover strategy in RPlotExporter --- .../Exporters/RPlotExporter.cs | 36 +++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/src/BenchmarkDotNet/Exporters/RPlotExporter.cs b/src/BenchmarkDotNet/Exporters/RPlotExporter.cs index 25e369fbc2..5c23f3b598 100644 --- a/src/BenchmarkDotNet/Exporters/RPlotExporter.cs +++ b/src/BenchmarkDotNet/Exporters/RPlotExporter.cs @@ -80,40 +80,56 @@ public void ExportToLog(Summary summary, ILogger logger) throw new NotSupportedException(); } - private static bool TryFindRScript(ILogger consoleLogger, out string rscriptPath) + private static bool TryFindRScript(ILogger consoleLogger, out string? rscriptPath) { string rscriptExecutable = RuntimeInformation.IsWindows() ? "Rscript.exe" : "Rscript"; rscriptPath = null; + string rHome = Environment.GetEnvironmentVariable("R_HOME"); if (rHome != null) { rscriptPath = Path.Combine(rHome, "bin", rscriptExecutable); if (File.Exists(rscriptPath)) - { return true; - } - consoleLogger.WriteLineError($"RPlotExporter requires R_HOME to point to the parent directory of the existing '{Path.DirectorySeparatorChar}bin{Path.DirectorySeparatorChar}{rscriptExecutable} (currently points to {rHome})"); + consoleLogger.WriteLineError($"{nameof(RPlotExporter)} requires R_HOME to point to the parent directory of the existing '{Path.DirectorySeparatorChar}bin{Path.DirectorySeparatorChar}{rscriptExecutable} (currently points to {rHome})"); + return false; } // No R_HOME, or R_HOME points to a wrong folder, try the path rscriptPath = FindInPath(rscriptExecutable); - if (rscriptPath == null) + if (rscriptPath != null) + return true; + + if (RuntimeInformation.IsWindows()) { - consoleLogger.WriteLineError($"RPlotExporter couldn't find {rscriptExecutable} in your PATH and no R_HOME environment variable is defined"); - return false; + string programFiles = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles); + string programFilesR = Path.Combine(programFiles, "R"); + if (Directory.Exists(programFilesR)) + { + foreach (string rRootDirectory in Directory.EnumerateDirectories(programFilesR)) + { + string rscriptPathCandidate = Path.Combine(rRootDirectory, "bin", rscriptExecutable); + if (File.Exists(rscriptPathCandidate)) + { + rscriptPath = rscriptPathCandidate; + return true; + } + } + } } - return true; + consoleLogger.WriteLineError($"{nameof(RPlotExporter)} couldn't find {rscriptExecutable} in your PATH and no R_HOME environment variable is defined"); + return false; } - private static string FindInPath(string fileName) + private static string? FindInPath(string fileName) { string path = Environment.GetEnvironmentVariable("PATH"); if (path == null) return null; - var dirs = path.Split(Path.PathSeparator); + string[] dirs = path.Split(Path.PathSeparator); foreach (string dir in dirs) { string trimmedDir = dir.Trim('\'', '"'); From 7dc0981e16ce2ab131fa56e396d4438633f96169 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Tue, 4 Jul 2023 16:04:43 +0200 Subject: [PATCH 19/73] Handle exceptions in GetDebuggableAttribute --- .../Extensions/AssemblyExtensions.cs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/BenchmarkDotNet/Extensions/AssemblyExtensions.cs b/src/BenchmarkDotNet/Extensions/AssemblyExtensions.cs index 6ebfb46df4..56a7eff2e6 100644 --- a/src/BenchmarkDotNet/Extensions/AssemblyExtensions.cs +++ b/src/BenchmarkDotNet/Extensions/AssemblyExtensions.cs @@ -1,4 +1,5 @@ -using System.Diagnostics; +using System; +using System.Diagnostics; using System.Linq; using System.Reflection; @@ -15,9 +16,16 @@ internal static class AssemblyExtensions internal static bool IsTrue(this bool? valueOrNothing) => valueOrNothing.HasValue && valueOrNothing.Value; private static DebuggableAttribute? GetDebuggableAttribute(Assembly? assembly) - => assembly?.GetCustomAttributes() - .OfType() - .SingleOrDefault(); + { + try + { + return assembly?.GetCustomAttributes().OfType().SingleOrDefault(); + } + catch (Exception) + { + return null; + } + } private static bool? IsJitOptimizerDisabled(this DebuggableAttribute? attribute) => attribute?.IsJITOptimizerDisabled; From 5065bc96e26f043f2eb7099cc1eea96fb0c50c09 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Tue, 4 Jul 2023 17:37:11 +0200 Subject: [PATCH 20/73] Bump C#: 9.0->11.0 --- build/common.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/common.props b/build/common.props index 630c342b61..726da55db6 100644 --- a/build/common.props +++ b/build/common.props @@ -33,7 +33,7 @@ - 9.0 + 11.0 From 48a7b65cc8fb34228582c84a5072286051191347 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Tue, 4 Jul 2023 17:56:27 +0200 Subject: [PATCH 21/73] Support Linux brand versions --- .../Helpers/LinuxOsReleaseHelper.cs | 65 ++++++ .../Portability/RuntimeInformation.cs | 22 ++ .../Helpers/LinuxOsReleaseHelperTests.cs | 206 ++++++++++++++++++ 3 files changed, 293 insertions(+) create mode 100644 src/BenchmarkDotNet/Helpers/LinuxOsReleaseHelper.cs create mode 100644 tests/BenchmarkDotNet.Tests/Helpers/LinuxOsReleaseHelperTests.cs diff --git a/src/BenchmarkDotNet/Helpers/LinuxOsReleaseHelper.cs b/src/BenchmarkDotNet/Helpers/LinuxOsReleaseHelper.cs new file mode 100644 index 0000000000..530db0f617 --- /dev/null +++ b/src/BenchmarkDotNet/Helpers/LinuxOsReleaseHelper.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using BenchmarkDotNet.Extensions; + +namespace BenchmarkDotNet.Helpers +{ + internal static class LinuxOsReleaseHelper + { + public static string? GetNameByOsRelease(string[] lines) + { + try + { + var values = new Dictionary(); + foreach (string line in lines) + { + string[] parts = line.Split(new[] {'='}, 2); + + if (parts.Length == 2) + { + string key = parts[0].Trim(); + string value = parts[1].Trim(); + + // remove quotes if value is quoted + if (value.Length >= 2 && + ((value.StartsWith("\"") && value.EndsWith("\"")) || + (value.StartsWith("'") && value.EndsWith("'")))) + { + value = value.Substring(1, value.Length - 2); + } + + values[key] = value; + } + } + + string? id = values.GetValueOrDefault("ID"); + string? name = values.GetValueOrDefault("NAME"); + string? version = values.GetValueOrDefault("VERSION"); + + string[] idsWithExtendedVersion = { "ubuntu", "linuxmint", "solus", "kali" }; + if (idsWithExtendedVersion.Contains(id) && !string.IsNullOrEmpty(version) && !string.IsNullOrEmpty(name)) + return name + " " + version; + + string? prettyName = values.GetValueOrDefault("PRETTY_NAME"); + if (prettyName != null) + return prettyName; + + if (name != null && version != null) + return name + " " + version; + + if (name != null) + return name; + + if (id != null) + return id; + + return null; + } + catch (Exception) + { + return null; + } + } + } +} \ No newline at end of file diff --git a/src/BenchmarkDotNet/Portability/RuntimeInformation.cs b/src/BenchmarkDotNet/Portability/RuntimeInformation.cs index c94c72fa50..4ced9753bd 100644 --- a/src/BenchmarkDotNet/Portability/RuntimeInformation.cs +++ b/src/BenchmarkDotNet/Portability/RuntimeInformation.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; +using System.IO; using System.Linq; using System.Management; using System.Numerics; @@ -163,6 +164,13 @@ public static string GetOsVersion() return OsBrandStringHelper.PrettifyMacOSX(systemVersion, kernelVersion); } + if (IsLinux()) + { + string? version = GetLinuxOsVersion(); + if (version != null && version.Trim() != "") + return version; + } + string operatingSystem = RuntimeEnvironment.OperatingSystem; string operatingSystemVersion = RuntimeEnvironment.OperatingSystemVersion; @@ -172,6 +180,20 @@ public static string GetOsVersion() GetWindowsUbr()); } + private static string? GetLinuxOsVersion() + { + if (!IsLinux()) + return null; + try + { + return LinuxOsReleaseHelper.GetNameByOsRelease(File.ReadAllLines("/etc/os-release")); + } + catch (Exception) + { + return null; + } + } + // TODO: Introduce a common util API for registry calls, use it also in BenchmarkDotNet.Toolchains.CsProj.GetCurrentVersionBasedOnWindowsRegistry /// /// On Windows, this method returns UBR (Update Build Revision) based on Registry. 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 From 03ebe4186d1dafeafeca6fe261cf465dbb22c68d Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Tue, 4 Jul 2023 18:07:20 +0200 Subject: [PATCH 22/73] Simplify the environment info presentation The formatting for the summary information in the output files was updated to enhance readability. This mainly consists of replacing equal signs with colons and slight changes in the placement of certain pieces of information. --- .../Environments/HostEnvironmentInfo.cs | 12 ++++---- .../Exporters/MarkdownExporter.cs | 2 +- ...ceSummary_WithAllValuesOfBool.verified.txt | 4 +-- ...ceSummary_WithAllValuesOfEnum.verified.txt | 4 +-- ...y_WithAllValuesOfNullableBool.verified.txt | 4 +-- ...y_WithAllValuesOfNullableEnum.verified.txt | 4 +-- ..._WithNotAllowedFlagsEnumError.verified.txt | 4 +-- ...thNotAllowedNullableTypeError.verified.txt | 4 +-- ...mmary_WithNotAllowedTypeError.verified.txt | 4 +-- .../Environments/HostEnvironmentInfoTests.cs | 8 ++--- ...rifyTests.Exporters_Invariant.verified.txt | 30 +++++++++---------- ...erVerifyTests.Exporters_en-US.verified.txt | 30 +++++++++---------- ...erVerifyTests.Exporters_ru-RU.verified.txt | 30 +++++++++---------- ...est_Escape_ParamsAndArguments.verified.txt | 4 +-- ...rTest_Invalid_TwoJobBaselines.verified.txt | 4 +-- ...st_Invalid_TwoMethodBaselines.verified.txt | 4 +-- ...rTest_JobBaseline_MethodsJobs.verified.txt | 4 +-- ...JobBaseline_MethodsParamsJobs.verified.txt | 4 +-- ...erTest_MethodBaseline_Methods.verified.txt | 4 +-- ...st_MethodBaseline_MethodsJobs.verified.txt | 4 +-- ..._MethodBaseline_MethodsParams.verified.txt | 4 +-- ...hodBaseline_MethodsParamsJobs.verified.txt | 4 +-- ...MethodJobBaseline_MethodsJobs.verified.txt | 4 +-- ...JobBaseline_MethodsJobsParams.verified.txt | 4 +-- ..._NoBaseline_MethodsParamsJobs.verified.txt | 4 +-- ..._MethodsParamsJobs_GroupByAll.verified.txt | 4 +-- ...odsParamsJobs_GroupByCategory.verified.txt | 4 +-- ..._MethodsParamsJobs_GroupByJob.verified.txt | 4 +-- ...thodsParamsJobs_GroupByMethod.verified.txt | 4 +-- ...thodsParamsJobs_GroupByParams.verified.txt | 4 +-- 30 files changed, 104 insertions(+), 104 deletions(-) diff --git a/src/BenchmarkDotNet/Environments/HostEnvironmentInfo.cs b/src/BenchmarkDotNet/Environments/HostEnvironmentInfo.cs index c9ff550202..3b0da64fa3 100644 --- a/src/BenchmarkDotNet/Environments/HostEnvironmentInfo.cs +++ b/src/BenchmarkDotNet/Environments/HostEnvironmentInfo.cs @@ -85,24 +85,24 @@ public override IEnumerable ToFormattedString() string vmName = VirtualMachineHypervisor.Value?.Name; if (!string.IsNullOrEmpty(vmName)) - yield return $"{BenchmarkDotNetCaption}=v{BenchmarkDotNetVersion}, OS={OsVersion.Value}, VM={vmName}"; + yield return $"{BenchmarkDotNetCaption} v{BenchmarkDotNetVersion}, {OsVersion.Value} ({vmName})"; else if (RuntimeInformation.IsRunningInContainer) - yield return $"{BenchmarkDotNetCaption}=v{BenchmarkDotNetVersion}, OS={OsVersion.Value} (container)"; + yield return $"{BenchmarkDotNetCaption} v{BenchmarkDotNetVersion}, {OsVersion.Value} (container)"; else - yield return $"{BenchmarkDotNetCaption}=v{BenchmarkDotNetVersion}, OS={OsVersion.Value}"; + yield return $"{BenchmarkDotNetCaption} v{BenchmarkDotNetVersion}, {OsVersion.Value}"; yield return CpuInfoFormatter.Format(CpuInfo.Value); var cultureInfo = DefaultCultureInfo.Instance; if (HardwareTimerKind != HardwareTimerKind.Unknown) - yield return $"Frequency={ChronometerFrequency}, Resolution={ChronometerResolution.ToString(cultureInfo)}, Timer={HardwareTimerKind.ToString().ToUpper()}"; + yield return $"Frequency: {ChronometerFrequency}, Resolution: {ChronometerResolution.ToString(cultureInfo)}, Timer: {HardwareTimerKind.ToString().ToUpper()}"; if (RuntimeInformation.IsNetCore && IsDotNetCliInstalled()) { // this wonderful version number contains words like "preview" and ... 5 segments so it can not be parsed by Version.Parse. Example: "5.0.100-preview.8.20362.3" if (int.TryParse(new string(DotNetSdkVersion.Value.TrimStart().TakeWhile(char.IsDigit).ToArray()), out int major) && major >= 5) - yield return $".NET SDK={DotNetSdkVersion.Value}"; + yield return $".NET SDK {DotNetSdkVersion.Value}"; else - yield return $".NET Core SDK={DotNetSdkVersion.Value}"; + yield return $".NET Core SDK {DotNetSdkVersion.Value}"; } } diff --git a/src/BenchmarkDotNet/Exporters/MarkdownExporter.cs b/src/BenchmarkDotNet/Exporters/MarkdownExporter.cs index 80ae914519..1d3bc5171b 100644 --- a/src/BenchmarkDotNet/Exporters/MarkdownExporter.cs +++ b/src/BenchmarkDotNet/Exporters/MarkdownExporter.cs @@ -48,7 +48,7 @@ public enum MarkdownHighlightStrategy { Dialect = nameof(GitHub), UseCodeBlocks = true, - CodeBlockStart = "``` ini", + CodeBlockStart = "```", StartOfGroupHighlightStrategy = MarkdownHighlightStrategy.Bold, ColumnsStartWithSeparator = true, EscapeHtml = true 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/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/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_Invariant.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_Invariant.verified.txt index 1cdb0c8f74..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
 
@@ -401,9 +401,9 @@ JsonExporter-full-compressed 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 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 1cdb0c8f74..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
 
@@ -401,9 +401,9 @@ JsonExporter-full-compressed 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 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 da60761564..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
 
@@ -401,9 +401,9 @@ JsonExporter-full-compressed 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 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 From 0978d0201eb558abd3e5555b85657327d7c2b420 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Tue, 4 Jul 2023 19:10:54 +0200 Subject: [PATCH 23/73] Support macOS 14 Sonoma in OsBrandStringHelper --- src/BenchmarkDotNet/Environments/OsBrandStringHelper.cs | 3 ++- tests/BenchmarkDotNet.Tests/Environments/OsBrandStringTests.cs | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/BenchmarkDotNet/Environments/OsBrandStringHelper.cs b/src/BenchmarkDotNet/Environments/OsBrandStringHelper.cs index 5e53e5d7c4..b3a5e27399 100644 --- a/src/BenchmarkDotNet/Environments/OsBrandStringHelper.cs +++ b/src/BenchmarkDotNet/Environments/OsBrandStringHelper.cs @@ -234,7 +234,8 @@ private MacOSXVersion(int darwinVersion, string codeName) new MacOSXVersion(19, "Catalina"), new MacOSXVersion(20, "Big Sur"), new MacOSXVersion(21, "Monterey"), - new MacOSXVersion(22, "Ventura") + new MacOSXVersion(22, "Ventura"), + new MacOSXVersion(23, "Sonoma"), }; public static string? ResolveCodeName(string kernelVersion) 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); } From a6edfe6c5b63901f61d3c51a2fb5fd75cf001405 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Tue, 4 Jul 2023 19:48:39 +0200 Subject: [PATCH 24/73] Fix CPU frequency detection on Linux --- .../Portability/Cpu/ProcCpuInfoProvider.cs | 54 ++++++++++++------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/src/BenchmarkDotNet/Portability/Cpu/ProcCpuInfoProvider.cs b/src/BenchmarkDotNet/Portability/Cpu/ProcCpuInfoProvider.cs index 6e4ab2d6e9..7cadad1ff2 100644 --- a/src/BenchmarkDotNet/Portability/Cpu/ProcCpuInfoProvider.cs +++ b/src/BenchmarkDotNet/Portability/Cpu/ProcCpuInfoProvider.cs @@ -1,7 +1,7 @@ using System; using System.Linq; +using System.Text; using BenchmarkDotNet.Helpers; -using JetBrains.Annotations; using Perfolizer.Horology; namespace BenchmarkDotNet.Portability.Cpu @@ -12,46 +12,64 @@ namespace BenchmarkDotNet.Portability.Cpu ///
internal static class ProcCpuInfoProvider { - internal static readonly Lazy ProcCpuInfo = new Lazy(Load); + internal static readonly Lazy ProcCpuInfo = new (Load); private static CpuInfo? Load() { if (RuntimeInformation.IsLinux()) { - string content = ProcessHelper.RunAndReadOutput("cat", "/proc/cpuinfo"); - string output = GetCpuSpeed(); - content = content + output; + string content = ProcessHelper.RunAndReadOutput("cat", "/proc/cpuinfo") ?? ""; + string output = GetCpuSpeed() ?? ""; + content += output; return ProcCpuInfoParser.ParseOutput(content); } return null; } - private static string GetCpuSpeed() + private static string? GetCpuSpeed() { - var output = ProcessHelper.RunAndReadOutput("/bin/bash", "-c \"lscpu | grep MHz\"")? - .Split('\n') - .SelectMany(x => x.Split(':')) - .ToArray(); + try + { + string[]? output = ProcessHelper.RunAndReadOutput("/bin/bash", "-c \"lscpu | grep MHz\"")? + .Split('\n') + .SelectMany(x => x.Split(':')) + .ToArray(); - return ParseCpuFrequencies(output); + return ParseCpuFrequencies(output); + } + catch (Exception) + { + return null; + } } - private static string ParseCpuFrequencies(string[] input) + private static string? ParseCpuFrequencies(string[]? input) { // Example of output we trying to parse: // // CPU MHz: 949.154 // CPU max MHz: 3200,0000 // CPU min MHz: 800,0000 - // - // And we don't need "CPU MHz" line - if (input == null || input.Length < 6) + + if (input == null) return null; - Frequency.TryParseMHz(input[3].Trim().Replace(',', '.'), out var minFrequency); - Frequency.TryParseMHz(input[5].Trim().Replace(',', '.'), out var maxFrequency); + var output = new StringBuilder(); + for (int i = 0; i + 1 < input.Length; i += 2) + { + string name = input[i].Trim(); + string value = input[i + 1].Trim(); + + if (name.EqualsWithIgnoreCase("CPU min MHz")) + if (Frequency.TryParseMHz(value.Replace(',', '.'), out var minFrequency)) + output.Append($"\n{ProcCpuInfoKeyNames.MinFrequency}\t:{minFrequency.ToMHz()}"); + + if (name.EqualsWithIgnoreCase("CPU max MHz")) + if (Frequency.TryParseMHz(value.Replace(',', '.'), out var maxFrequency)) + output.Append($"\n{ProcCpuInfoKeyNames.MaxFrequency}\t:{maxFrequency.ToMHz()}"); + } - return $"\n{ProcCpuInfoKeyNames.MinFrequency}\t:{minFrequency.ToMHz()}\n{ProcCpuInfoKeyNames.MaxFrequency}\t:{maxFrequency.ToMHz()}\n"; + return output.ToString(); } } } \ No newline at end of file From 144f5c5552afc576f11da0454be9980900e1ddff Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Tue, 4 Jul 2023 20:02:51 +0200 Subject: [PATCH 25/73] Fix CPU detection on Windows when wmic is not available via PATH, fix #2271 --- .../Portability/Cpu/WmicCpuInfoProvider.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/BenchmarkDotNet/Portability/Cpu/WmicCpuInfoProvider.cs b/src/BenchmarkDotNet/Portability/Cpu/WmicCpuInfoProvider.cs index 2cd380c396..d259200701 100644 --- a/src/BenchmarkDotNet/Portability/Cpu/WmicCpuInfoProvider.cs +++ b/src/BenchmarkDotNet/Portability/Cpu/WmicCpuInfoProvider.cs @@ -1,6 +1,6 @@ using System; +using System.IO; using BenchmarkDotNet.Helpers; -using JetBrains.Annotations; namespace BenchmarkDotNet.Portability.Cpu { @@ -10,17 +10,21 @@ namespace BenchmarkDotNet.Portability.Cpu ///
internal static class WmicCpuInfoProvider { - internal static readonly Lazy WmicCpuInfo = new Lazy(Load); + internal static readonly Lazy WmicCpuInfo = new (Load); + + private const string DefaultWmicPath = @"C:\Windows\System32\wbem\WMIC.exe"; private static CpuInfo? Load() { if (RuntimeInformation.IsWindows()) { - string argList = $"{WmicCpuInfoKeyNames.Name}, {WmicCpuInfoKeyNames.NumberOfCores}, {WmicCpuInfoKeyNames.NumberOfLogicalProcessors}, {WmicCpuInfoKeyNames.MaxClockSpeed}"; - string content = ProcessHelper.RunAndReadOutput("wmic", $"cpu get {argList} /Format:List"); + const string argList = $"{WmicCpuInfoKeyNames.Name}, {WmicCpuInfoKeyNames.NumberOfCores}, " + + $"{WmicCpuInfoKeyNames.NumberOfLogicalProcessors}, {WmicCpuInfoKeyNames.MaxClockSpeed}"; + string wmicPath = File.Exists(DefaultWmicPath) ? DefaultWmicPath : "wmic"; + string content = ProcessHelper.RunAndReadOutput(wmicPath, $"cpu get {argList} /Format:List"); return WmicCpuInfoParser.ParseOutput(content); } return null; } } -} +} \ No newline at end of file From 6291a7e724a094138f650cc1cbb0798a4d30c0fe Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Wed, 5 Jul 2023 19:00:01 +0200 Subject: [PATCH 26/73] Huge build project refactoring --- .github/workflows/build.yaml | 125 +++- .../workflows/docs-changelog-generate.yaml | 2 +- .github/workflows/docs-stable.yaml | 6 +- .github/workflows/publish-nightly.yaml | 24 + appveyor.yml | 2 +- azure-pipelines.Ubuntu.yml | 2 +- azure-pipelines.Windows.yml | 2 +- azure-pipelines.macOS.yml | 2 +- build.cmd | 5 + .../BenchmarkDotNet.Build.csproj} | 2 +- build/BenchmarkDotNet.Build/BuildContext.cs | 228 ++++++ .../ChangeLogBuilder.cs | 122 +--- .../CommandLineParser.cs | 291 ++++++++ .../BenchmarkDotNet.Build/Folder.DotSettings | 4 + .../Helpers/OctokitExtensions.cs | 40 ++ build/BenchmarkDotNet.Build/Helpers/Utils.cs | 38 + .../Meta/DocumentationHelper.cs | 62 ++ build/BenchmarkDotNet.Build/Meta/Repo.cs | 18 + build/BenchmarkDotNet.Build/Program.cs | 158 +++++ .../Runners/BuildRunner.cs | 66 ++ .../Runners/DocumentationRunner.cs | 168 +++++ .../Runners/ReadmeUpdater.cs | 82 +++ .../Runners/UnitTestRunner.cs | 74 ++ build/Program.cs | 661 ------------------ build/azure-pipelines.job.template.yml | 0 build.bat => build/build.bat | 0 build.ps1 => build/build.ps1 | 32 +- build.sh => build/build.sh | 17 +- build/{ => sdk}/global.json | 2 +- docs/articles/contributing/building.md | 23 +- docs/articles/contributing/documentation.md | 23 +- docs/articles/guides/nuget.md | 26 +- 32 files changed, 1437 insertions(+), 870 deletions(-) create mode 100644 .github/workflows/publish-nightly.yaml create mode 100755 build.cmd rename build/{Build.csproj => BenchmarkDotNet.Build/BenchmarkDotNet.Build.csproj} (88%) create mode 100644 build/BenchmarkDotNet.Build/BuildContext.cs rename build/{ => BenchmarkDotNet.Build}/ChangeLogBuilder.cs (62%) create mode 100644 build/BenchmarkDotNet.Build/CommandLineParser.cs create mode 100644 build/BenchmarkDotNet.Build/Folder.DotSettings create mode 100644 build/BenchmarkDotNet.Build/Helpers/OctokitExtensions.cs create mode 100644 build/BenchmarkDotNet.Build/Helpers/Utils.cs create mode 100644 build/BenchmarkDotNet.Build/Meta/DocumentationHelper.cs create mode 100644 build/BenchmarkDotNet.Build/Meta/Repo.cs create mode 100644 build/BenchmarkDotNet.Build/Program.cs create mode 100644 build/BenchmarkDotNet.Build/Runners/BuildRunner.cs create mode 100644 build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs create mode 100644 build/BenchmarkDotNet.Build/Runners/ReadmeUpdater.cs create mode 100644 build/BenchmarkDotNet.Build/Runners/UnitTestRunner.cs delete mode 100644 build/Program.cs mode change 100755 => 100644 build/azure-pipelines.job.template.yml rename build.bat => build/build.bat (100%) rename build.ps1 => build/build.ps1 (76%) rename build.sh => build/build.sh (61%) rename build/{ => sdk}/global.json (64%) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 3e68fba968..ae19f9b0e6 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -4,32 +4,115 @@ on: pull_request: push: +permissions: write-all + jobs: - build-windows: + + build-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 'InTestsCore' + shell: cmd + run: | + call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" + ./build.cmd InTestsCore -e + - name: Upload test results + uses: actions/upload-artifact@v2 + if: always() + with: + name: build-windows-core-trx + path: "**/*.trx" + + build-windows-full: 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 + - 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 'InTestsFull' + shell: cmd + run: | + call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" + ./build.cmd InTestsFull -e + - name: Upload test results + uses: actions/upload-artifact@v2 + if: always() + with: + name: build-windows-full-trx + path: "**/*.trx" + 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 + - 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 'UnitTests' + run: ./build.cmd UnitTests -e + - name: Run task 'InTestsCore' + run: ./build.cmd InTestsCore -e + - name: Upload test results + uses: actions/upload-artifact@v2 + if: always() + with: + name: build-linux-trx + path: "**/*.trx" + build-macos: - runs-on: macOS-latest + runs-on: macos-13 + steps: + - uses: actions/checkout@v3 + - name: Run task 'Build' + run: ./build.cmd Build + - name: Run task 'UnitTests' + run: ./build.cmd UnitTests -e + - name: Run task 'InTestsCore' + run: ./build.cmd InTestsCore -e + - name: Upload test results + uses: actions/upload-artifact@v2 + if: always() + with: + name: build-macos-trx + path: "**/*.trx" + + report: + concurrency: ci-${{ github.ref }} + needs: [build-windows-full, build-windows-core, build-linux, build-macos] + runs-on: ubuntu-latest + if: always() steps: - - uses: actions/checkout@v3 - - name: Run - run: ./build.sh \ No newline at end of file + - uses: actions/checkout@v3 + - name: Download Artifacts + uses: actions/download-artifact@v3 + - name: Display structure of downloaded files + run: ls -R + - name: Report tests results + uses: dorny/test-reporter@v1 + if: always() + with: + name: test-results + path: "**/*.trx" + reporter: dotnet-trx + fail-on-error: true diff --git a/.github/workflows/docs-changelog-generate.yaml b/.github/workflows/docs-changelog-generate.yaml index f55816e706..9afad1f814 100644 --- a/.github/workflows/docs-changelog-generate.yaml +++ b/.github/workflows/docs-changelog-generate.yaml @@ -19,7 +19,7 @@ jobs: ref: master - name: Download changelog - run: ./build.sh --target DocFX_Changelog_Download --VersionCount 1 + run: ./build.cmd DocsUpdate /p:Depth=1 env: GITHUB_PRODUCT: ChangelogBuilder GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/docs-stable.yaml b/.github/workflows/docs-stable.yaml index 83e50d7e97..089f6ed7b4 100644 --- a/.github/workflows/docs-stable.yaml +++ b/.github/workflows/docs-stable.yaml @@ -19,16 +19,16 @@ jobs: ref: docs-stable - name: Build BenchmarkDotNet - run: ./build.bat --target Build + run: ./build.cmd Build - name: Download changelog - run: ./build.bat --target DocFX_Changelog_Download --VersionCount 1 + run: ./build.cmd DocsUpdate /p:Depth=1 env: GITHUB_PRODUCT: ChangelogBuilder GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Build documentation - run: ./build.bat --target DocFX_Build + run: ./build.cmd DocsBuild - name: Upload Artifacts uses: actions/upload-artifact@v1 diff --git a/.github/workflows/publish-nightly.yaml b/.github/workflows/publish-nightly.yaml new file mode 100644 index 0000000000..8cdf355f61 --- /dev/null +++ b/.github/workflows/publish-nightly.yaml @@ -0,0 +1,24 @@ +name: publish-nightly + +on: + push: + branches: + - master + +jobs: + main: + runs-on: ubuntu-latest + 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: 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/appveyor.yml b/appveyor.yml index a4c11ce797..2960c99409 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -37,7 +37,7 @@ before_build: #---------------------------------# build_script: -- ps: .\build.ps1 +- ps: .\build.cmd CI test: off deploy: off diff --git a/azure-pipelines.Ubuntu.yml b/azure-pipelines.Ubuntu.yml index 4c8bf86311..a16a5446d5 100755 --- a/azure-pipelines.Ubuntu.yml +++ b/azure-pipelines.Ubuntu.yml @@ -13,7 +13,7 @@ jobs: parameters: name: Ubuntu vmImage: 'ubuntu-20.04' - scriptFileName: ./build.sh + scriptFileName: ./build.cmd CI initialization: - bash: | wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - diff --git a/azure-pipelines.Windows.yml b/azure-pipelines.Windows.yml index 809d92e62e..34e23807f0 100755 --- a/azure-pipelines.Windows.yml +++ b/azure-pipelines.Windows.yml @@ -13,4 +13,4 @@ jobs: parameters: name: Windows vmImage: 'windows-2019' - scriptFileName: .\build.ps1 \ No newline at end of file + scriptFileName: .\build.cmd CI \ No newline at end of file diff --git a/azure-pipelines.macOS.yml b/azure-pipelines.macOS.yml index 6543a8eb9b..19a34556f4 100755 --- a/azure-pipelines.macOS.yml +++ b/azure-pipelines.macOS.yml @@ -13,4 +13,4 @@ jobs: parameters: name: macOS vmImage: 'macOS-latest' - scriptFileName: ./build.sh + scriptFileName: ./build.cmd CI 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 88% rename from build/Build.csproj rename to build/BenchmarkDotNet.Build/BenchmarkDotNet.Build.csproj index 6c3dc8db6a..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..416220424e --- /dev/null +++ b/build/BenchmarkDotNet.Build/BuildContext.cs @@ -0,0 +1,228 @@ +using System; +using System.IO; +using System.Linq; +using System.Text; +using BenchmarkDotNet.Build.Helpers; +using BenchmarkDotNet.Build.Meta; +using BenchmarkDotNet.Build.Runners; +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.MSBuild; +using Cake.Core; +using Cake.Core.IO; +using Cake.FileHelpers; +using Cake.Frosting; +using Cake.Git; + +namespace BenchmarkDotNet.Build; + +public class BuildContext : FrostingContext +{ + public string BuildConfiguration { get; set; } = "Release"; + public DotNetVerbosity BuildVerbosity { get; set; } = DotNetVerbosity.Minimal; + public int Depth { get; set; } + + public DirectoryPath RootDirectory { get; } + public DirectoryPath ArtifactsDirectory { get; } + public DirectoryPath DocsDirectory { get; } + public FilePath DocfxJsonFile { get; } + + public DirectoryPath ChangeLogDirectory { get; } + public DirectoryPath ChangeLogGenDirectory { get; } + + public DirectoryPath RedirectRootDirectory { get; } + public DirectoryPath RedirectTargetDirectory { get; } + + public FilePath SolutionFile { 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 UnitTestRunner UnitTestRunner { get; } + public DocumentationRunner DocumentationRunner { get; } + public BuildRunner BuildRunner { get; } + + public BuildContext(ICakeContext context) + : base(context) + { + RootDirectory = new DirectoryPath(new DirectoryInfo(Directory.GetCurrentDirectory()).Parent?.Parent?.FullName); + ArtifactsDirectory = RootDirectory.Combine("artifacts"); + DocsDirectory = RootDirectory.Combine("docs"); + DocfxJsonFile = DocsDirectory.CombineWithFilePath("docfx.json"); + + 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"); + + 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"); + } + + Depth = -1; + 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 (name.Equals("depth", StringComparison.OrdinalIgnoreCase)) + Depth = int.Parse(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"); + } + + UnitTestRunner = new UnitTestRunner(this); + DocumentationRunner = new DocumentationRunner(this); + BuildRunner = new BuildRunner(this); + } + + public void EnsureChangelogDetailsExist(bool forceClean = false) + { + var path = ChangeLogGenDirectory.Combine("details"); + if (this.DirectoryExists(path) && forceClean) + this.DeleteDirectory(path, new DeleteDirectorySettings() { Force = true, Recursive = true }); + + if (!this.DirectoryExists(path)) + { + var repo = Repo.HttpsGitUrl; + var branchName = Repo.ChangelogDetailsBranch; + var settings = new GitCloneSettings { Checkout = true, BranchName = branchName }; + this.Information($"Trying to clone {repo} to {path} (branch: '{branchName})"); + try + { + this.GitClone(repo, path, settings); + } + catch (Exception e) + { + this.Error($"Failed to clone {repo} to {path} (branch: '{branchName}), Exception: {e.GetType().Name}'"); + try + { + var gitArgs = $"clone -b {branchName} {repo} {path}"; + this.Information($"Trying to clone manually: 'git {gitArgs}'"); + this.StartProcess("git", gitArgs); + } + catch (Exception e2) + { + throw new Exception($"Failed to clone {repo} to {path} (branch: '{branchName})'", e2); + } + } + + this.Information("Clone is successfully finished"); + this.Information(""); + } + } + + public void DocfxChangelogDownload(string version, string versionPrevious, string lastCommit = "") + { + EnsureChangelogDetailsExist(); + this.Information("DocfxChangelogDownload: " + version); + var path = ChangeLogGenDirectory.Combine("details"); + ChangeLogBuilder.Run(path, version, versionPrevious, lastCommit).Wait(); + } + + public void DocfxChangelogGenerate(string version) + { + EnsureChangelogDetailsExist(); + 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()); + } + + +} \ No newline at end of file diff --git a/build/ChangeLogBuilder.cs b/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs similarity index 62% rename from build/ChangeLogBuilder.cs rename to build/BenchmarkDotNet.Build/ChangeLogBuilder.cs index 561ece19b7..caf20629fc 100644 --- a/build/ChangeLogBuilder.cs +++ b/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs @@ -5,78 +5,28 @@ using System.Linq; using System.Text; using System.Threading.Tasks; +using BenchmarkDotNet.Build.Helpers; +using BenchmarkDotNet.Build.Meta; 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) - { - 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 + private 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; } + public string CurrentMilestone { get; } + public string PreviousMilestone { get; } + public string LastCommit { get; } - [PublicAPI] public string PreviousMilestone { get; } - [PublicAPI] 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; lastCommit = LastCommit; } - public Config(string[] args) - { - CurrentMilestone = args[0]; - PreviousMilestone = args[1]; - LastCommit = args.Length <= 2 ? CurrentMilestone : args[2]; - } - public Config(string currentMilestone, string previousMilestone, string lastCommit) { CurrentMilestone = currentMilestone; @@ -85,20 +35,11 @@ public Config(string currentMilestone, string previousMilestone, string lastComm } } - 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; @@ -115,17 +56,17 @@ private MarkdownBuilder(Config config) private async Task Build() { - var (repoOwner, repoName, milestone, previousMilestone, lastCommit) = config; + var (milestone, previousMilestone, lastCommit) = config; if (string.IsNullOrEmpty(lastCommit)) lastCommit = milestone; - var client = new GitHubClient(new ProductHeaderValue(config.ProductHeader)); - var tokenAuth = new Credentials(config.Token); + var client = new GitHubClient(new ProductHeaderValue(Repo.ProductHeader)); + var tokenAuth = new Credentials(Repo.Token); client.Credentials = tokenAuth; - + if (milestone == "_") { - 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) @@ -140,17 +81,17 @@ 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 == milestone); if (targetMilestone != null) { var issueRequest = new RepositoryIssueRequest @@ -159,7 +100,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 @@ -170,11 +111,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, previousMilestone, lastCommit); var commits = compare.Commits; - - + + foreach (var contributor in commits.Select(commit => commit.Author)) if (contributor != null && !AuthorNames.ContainsKey(contributor.Login)) { @@ -189,14 +130,14 @@ 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:{milestone}"; builder.AppendLine("## Milestone details"); builder.AppendLine(); @@ -218,7 +159,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(); @@ -233,8 +174,9 @@ 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 async Task Run(DirectoryPath path, string currentMilestone, string previousMilestone, + string lastCommit) { try { diff --git a/build/BenchmarkDotNet.Build/CommandLineParser.cs b/build/BenchmarkDotNet.Build/CommandLineParser.cs new file mode 100644 index 0000000000..6f8af08a8c --- /dev/null +++ b/build/BenchmarkDotNet.Build/CommandLineParser.cs @@ -0,0 +1,291 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using Cake.Frosting; + +namespace BenchmarkDotNet.Build; + +public class CommandLineParser +{ + public static readonly CommandLineParser Instance = new(); + + private record Option(string ShortName, string FullName, string Arg, string Description, string CakeOption); + + private readonly Option[] options = + { + new("-v", + "--verbosity", + "", + "Specifies the amount of information to be displayed\n(Quiet, Minimal, Normal, Verbose, Diagnostic)", + "--verbosity"), + new("-e", + "--exclusive", + "", + "Executes the target task without any dependencies", + "--exclusive") + }; + + private void PrintHelp(bool skipWelcome = false) + { + const string scriptName = "build.cmd"; + if (!skipWelcome) + { + WriteHeader("Welcome to the BenchmarkDotNet build script!"); + WriteLine(); + } + + WriteHeader("USAGE:"); + + WritePrefix(); + Write(scriptName + " "); + WriteTask(" "); + WriteOption("[OPTIONS]"); + WriteLine(); + + WriteLine(); + + WriteHeader("EXAMPLES:"); + + WritePrefix(); + Write(scriptName + " "); + WriteTask("restore"); + WriteLine(); + + WritePrefix(); + Write(scriptName + " "); + WriteTask("build "); + WriteOption("/p:"); + WriteArg("Configuration"); + WriteOption("="); + WriteArg("Debug"); + WriteLine(); + + WritePrefix(); + Write(scriptName + " "); + WriteTask("pack "); + WriteOption("/p:"); + WriteArg("Version"); + WriteOption("="); + WriteArg("0.1.1729-preview"); + WriteLine(); + + WritePrefix(); + Write(scriptName + " "); + WriteTask("unittests "); + WriteOption("--exclusive --verbosity "); + WriteArg("Diagnostic"); + WriteLine(); + + WritePrefix(); + Write(scriptName + " "); + WriteTask("docsupdate "); + WriteOption("/p:"); + WriteArg("Depth"); + WriteOption("="); + WriteArg("3"); + WriteLine(); + + WriteLine(); + + WriteLine("OPTIONS:", ConsoleColor.DarkCyan); + + var shortNameWidth = options.Max(it => it.ShortName.Length); + var targetWidth = options.Max(it => it.FullName.Length + it.Arg.Length); + + foreach (var (shortName, fullName, arg, description, _) in options) + { + WritePrefix(); + WriteOption(shortName.PadRight(shortNameWidth)); + WriteOption(shortName != "" ? "," : " "); + WriteOption(fullName); + Write(" "); + WriteArg(arg); + Write(new string(' ', targetWidth - fullName.Length - arg.Length + 3)); + var descriptionLines = description.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries); + Write(descriptionLines.FirstOrDefault() ?? ""); + for (int i = 1; i < descriptionLines.Length; i++) + { + WriteLine(); + WritePrefix(); + Write(new string(' ', shortNameWidth + 2 + targetWidth + 3)); + Write(descriptionLines[i]); + } + + WriteLine(); + } + + WritePrefix(); + WriteOption("/p:"); + WriteArg(""); + WriteOption("="); + WriteArg(""); + Write(new string(' ', targetWidth + shortNameWidth - 11)); + Write("Passes custom properties to MSBuild"); + WriteLine(); + + WriteLine(); + + WriteHeader("TASKS:"); + var taskWidth = GetTaskNames().Max(name => name.Length) + 3; + foreach (var (taskName, taskDescription) in GetTasks()) + { + if (taskName.Equals("Default", StringComparison.OrdinalIgnoreCase)) + continue; + + if (taskDescription.StartsWith("OBSOLETE", StringComparison.OrdinalIgnoreCase)) + { + WriteObsolete(" " + taskName.PadRight(taskWidth)); + WriteObsolete(taskDescription); + } + else + { + WriteTask(" " + taskName.PadRight(taskWidth)); + Write(taskDescription); + } + + WriteLine(); + } + + return; + + void WritePrefix() => Write(" "); + void WriteTask(string message) => Write(message, ConsoleColor.Green); + void WriteOption(string message) => Write(message, ConsoleColor.Blue); + void WriteArg(string message) => Write(message, ConsoleColor.DarkYellow); + void WriteObsolete(string message) => Write(message, ConsoleColor.Gray); + + void WriteHeader(string message) + { + WriteLine(message, ConsoleColor.DarkCyan); + } + + void Write(string message, ConsoleColor? color = null) + { + if (color != null) + Console.ForegroundColor = color.Value; + Console.Write(message); + if (color != null) + Console.ResetColor(); + } + + void WriteLine(string message = "", ConsoleColor? color = null) + { + Write(message, color); + Console.WriteLine(); + } + } + + private static HashSet GetTaskNames() + { + return GetTasks().Select(task => task.Name).ToHashSet(StringComparer.OrdinalIgnoreCase); + } + + private static List<(string Name, string Description)> GetTasks() + { + return typeof(BuildContext).Assembly + .GetTypes() + .Where(type => type.IsSubclassOf(typeof(FrostingTask)) && !type.IsAbstract) + .Select(type => ( + Name: type.GetCustomAttribute()?.Name ?? "", + Description: type.GetCustomAttribute()?.Description ?? "" + )) + .Where(task => task.Name != "") + .ToList(); + } + + + public string[]? Parse(string[]? args) + { + if (args == null || args.Length == 0) + { + PrintHelp(); + return null; + } + + if (args.Length == 1) + { + if (IsOneOf(args[0], "help")) + { + PrintHelp(); + return null; + } + + if (IsOneOf(args[0], "help-cake")) + { + new CakeHost().UseContext().Run(new[] { "--help" }); + return null; + } + } + + var argsToProcess = new Queue(args); + + var taskName = argsToProcess.Dequeue(); + if (IsOneOf(taskName, "-t", "--target") && argsToProcess.Any()) + taskName = argsToProcess.Dequeue(); + + var taskNames = GetTaskNames(); + if (!taskNames.Contains(taskName)) + { + PrintError($"'{taskName}' is not a task"); + return null; + } + + var cakeArgs = new List + { + "--target", + taskName + }; + while (argsToProcess.Any()) + { + var arg = argsToProcess.Dequeue(); + + var matched = false; + foreach (var option in options) + { + if (IsOneOf(arg, option.ShortName, option.FullName)) + { + matched = true; + cakeArgs.Add(option.CakeOption); + if (option.Arg != "") + { + if (!argsToProcess.Any()) + { + PrintError(option.FullName + " is not specified"); + return null; + } + + cakeArgs.Add(argsToProcess.Dequeue()); + } + } + } + + if (arg.StartsWith("/p:")) + { + matched = true; + cakeArgs.Add("--msbuild"); + cakeArgs.Add(arg[3..]); + } + + if (!matched) + { + PrintError("Unknown option: " + arg); + return null; + } + } + + return cakeArgs.ToArray(); + } + + bool IsOneOf(string arg, params string[] values) => + values.Any(value => value.Equals(arg, StringComparison.OrdinalIgnoreCase)); + + void PrintError(string text) + { + Console.ForegroundColor = ConsoleColor.Red; + Console.Error.WriteLine("ERROR: " + text); + Console.WriteLine(); + Console.ResetColor(); + PrintHelp(true); + } +} \ 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/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..017e092419 --- /dev/null +++ b/build/BenchmarkDotNet.Build/Helpers/Utils.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using Cake.Common.Tools.DotNet; + +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; + } +} \ No newline at end of file diff --git a/build/BenchmarkDotNet.Build/Meta/DocumentationHelper.cs b/build/BenchmarkDotNet.Build/Meta/DocumentationHelper.cs new file mode 100644 index 0000000000..103a6e5368 --- /dev/null +++ b/build/BenchmarkDotNet.Build/Meta/DocumentationHelper.cs @@ -0,0 +1,62 @@ +namespace BenchmarkDotNet.Build.Meta; + +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"; +} \ 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..06e6137b55 --- /dev/null +++ b/build/BenchmarkDotNet.Build/Meta/Repo.cs @@ -0,0 +1,18 @@ +using System; + +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 ProductHeaderVar = "GITHUB_PRODUCT"; + public const string TokenVar = "GITHUB_TOKEN"; + + public static string? ProductHeader => Environment.GetEnvironmentVariable(ProductHeaderVar); + public static string? Token => Environment.GetEnvironmentVariable(TokenVar); +} \ 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..4f9138bf08 --- /dev/null +++ b/build/BenchmarkDotNet.Build/Program.cs @@ -0,0 +1,158 @@ +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("Restore")] +[TaskDescription("Restore NuGet packages")] +public class RestoreTask : FrostingTask +{ + public override void Run(BuildContext context) => context.BuildRunner.Restore(); +} + +[TaskName("Build")] +[TaskDescription("Build BenchmarkDotNet.sln solution")] +[IsDependentOn(typeof(RestoreTask))] +public class BuildTask : FrostingTask +{ + public override void Run(BuildContext context) => context.BuildRunner.Build(); +} + +[TaskName("UnitTests")] +[TaskDescription("Run unit tests (fast)")] +[IsDependentOn(typeof(BuildTask))] +public class UnitTestsTask : FrostingTask +{ + public override void Run(BuildContext context) => context.UnitTestRunner.RunUnitTests(); +} + +[TaskName("InTestsFull")] +[TaskDescription("Run integration tests using .NET Framework 4.6.2+ (slow)")] +[IsDependentOn(typeof(BuildTask))] +public class InTestsFullTask : FrostingTask +{ + public override bool ShouldRun(BuildContext context) => + context.IsRunningOnWindows() && !context.IsRunningOnAppVeyor; + + public override void Run(BuildContext context) => context.UnitTestRunner.RunInTests("net462"); +} + +[TaskName("InTestsCore")] +[TaskDescription("Run integration tests using .NET 7 (slow)")] +[IsDependentOn(typeof(BuildTask))] +public class InTestsCoreTask : FrostingTask +{ + public override void Run(BuildContext context) => context.UnitTestRunner.RunInTests("net7.0"); +} + +[TaskName("AllTests")] +[TaskDescription("Run all unit and integration tests (slow)")] +[IsDependentOn(typeof(UnitTestsTask))] +[IsDependentOn(typeof(InTestsFullTask))] +[IsDependentOn(typeof(InTestsCoreTask))] +public class AllTestsTask : FrostingTask +{ +} + +[TaskName("Pack")] +[TaskDescription("Pack Nupkg packages")] +[IsDependentOn(typeof(BuildTask))] +public class PackTask : FrostingTask +{ + public override void Run(BuildContext context) => context.BuildRunner.Pack(); +} + +[TaskName("CI")] +[TaskDescription("Perform all CI-related tasks: Restore, Build, AllTests, Pack")] +[IsDependentOn(typeof(BuildTask))] +[IsDependentOn(typeof(AllTestsTask))] +[IsDependentOn(typeof(PackTask))] +public class CiTask : FrostingTask +{ +} + +[TaskName("DocsUpdate")] +[TaskDescription("Update generated documentation files")] +public class DocsUpdateTask : FrostingTask +{ + public override void Run(BuildContext context) => context.DocumentationRunner.Update(); +} + +[TaskName("DocsPrepare")] +[TaskDescription("Prepare auxiliary documentation files")] +public class DocsPrepareTask : FrostingTask +{ + public override void Run(BuildContext context) => context.DocumentationRunner.Prepare(); +} + +// 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("DocsBuild")] +[TaskDescription("Build final documentation")] +[IsDependentOn(typeof(DocsPrepareTask))] +public class DocsBuildTask : FrostingTask +{ + public override void Run(BuildContext context) => context.DocumentationRunner.Build(); +} + +[TaskName("FastTests")] +[TaskDescription("OBSOLETE: use 'UnitTests'")] +[IsDependentOn(typeof(UnitTestsTask))] +public class FastTestsTask : FrostingTask +{ +} + +[TaskName("SlowFullFrameworkTests")] +[TaskDescription("OBSOLETE: use 'InTestsFull'")] +[IsDependentOn(typeof(InTestsFullTask))] +public class SlowFullFrameworkTestsTask : FrostingTask +{ +} + +[TaskName("SlowTestsNetCore")] +[TaskDescription("OBSOLETE: use 'InTestsCore'")] +[IsDependentOn(typeof(InTestsCoreTask))] +public class SlowTestsNetCoreTask : FrostingTask +{ +} + +[TaskName("DocFX_Changelog_Download")] +[TaskDescription("OBSOLETE: use 'DocsUpdate'")] +[IsDependentOn(typeof(DocsUpdateTask))] +public class DocFxChangelogDownloadTask : FrostingTask +{ +} + +[TaskName("DocFX_Changelog_Generate")] +[TaskDescription("OBSOLETE: use 'DocsPrepare'")] +[IsDependentOn(typeof(DocsPrepareTask))] +public class DocfxChangelogGenerateTask : FrostingTask +{ +} + +[TaskName("DocFX_Generate_Redirects")] +[TaskDescription("OBSOLETE: use 'DocsBuild'")] +[IsDependentOn(typeof(DocsBuildTask))] +public class DocfxGenerateRedirectsTask : FrostingTask +{ +} + +[TaskName("DocFX_Build")] +[TaskDescription("OBSOLETE: use 'DocsBuild'")] +[IsDependentOn(typeof(DocsBuildTask))] +public class DocfxBuildTask : FrostingTask +{ +} \ 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..8ef40475d0 --- /dev/null +++ b/build/BenchmarkDotNet.Build/Runners/BuildRunner.cs @@ -0,0 +1,66 @@ +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; + +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 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..bc7e68dfa0 --- /dev/null +++ b/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs @@ -0,0 +1,168 @@ +using System; +using System.IO; +using System.Linq; +using System.Text; +using BenchmarkDotNet.Build.Meta; +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; + + public DocumentationRunner(BuildContext context) + { + this.context = context; + } + + private void GenerateRedirects() + { + var redirectFile = context.RedirectRootDirectory.CombineWithFilePath("_redirects"); + if (!context.FileExists(redirectFile)) + { + context.Error($"Redirect file '{redirectFile}' does not exist"); + return; + } + + context.EnsureDirectoryExists(context.RedirectTargetDirectory); + + 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 fullFileName = context.RedirectTargetDirectory.CombineWithFilePath(fileName); + var content = + $"" + + $"" + + $"" + + $"{target}" + + $"" + + $"" + + $"" + + $"" + + $""; + context.EnsureDirectoryExists(fullFileName.GetDirectory()); + context.FileWriteText(fullFileName, content); + } + } + + private void RunDocfx(FilePath docfxJson) + { + context.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); + } + + private void GenerateIndexMd() + { + context.Information("DocsBuild: Generate index.md"); + var content = new StringBuilder(); + content.AppendLine("---"); + content.AppendLine("title: Home"); + content.AppendLine("---"); + content.Append(context.FileReadText(context.RootDirectory.CombineWithFilePath("README.md"))); + context.FileWriteText(context.DocsDirectory.CombineWithFilePath("index.md"), content.ToString()); + } + + public void Update() + { + context.EnsureChangelogDetailsExist(); + + ReadmeUpdater.Run(context); + + if (string.IsNullOrEmpty(Repo.ProductHeader)) + throw new Exception($"Environment variable '{Repo.ProductHeaderVar}' is not specified!"); + if (string.IsNullOrEmpty(Repo.Token)) + throw new Exception($"Environment variable '{Repo.TokenVar}' is not specified!"); + + var count = context.Depth; + var total = DocumentationHelper.BdnAllVersions.Length; + + if (count == 0) + { + context.DocfxChangelogDownload( + DocumentationHelper.BdnAllVersions.First(), + DocumentationHelper.BdnFirstCommit); + + for (int i = 1; i < total; i++) + context.DocfxChangelogDownload( + DocumentationHelper.BdnAllVersions[i], + DocumentationHelper.BdnAllVersions[i - 1]); + } + else if (count > 0) + { + for (int i = Math.Max(total - count, 1); i < total; i++) + context.DocfxChangelogDownload( + DocumentationHelper.BdnAllVersions[i], + DocumentationHelper.BdnAllVersions[i - 1]); + } + + context.DocfxChangelogDownload( + DocumentationHelper.BdnNextVersion, + DocumentationHelper.BdnAllVersions.Last(), + "HEAD"); + } + + public void Prepare() + { + 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()); + } + + public void Build() + { + GenerateIndexMd(); + RunDocfx(context.DocfxJsonFile); + GenerateRedirects(); + } +} \ No newline at end of file diff --git a/build/BenchmarkDotNet.Build/Runners/ReadmeUpdater.cs b/build/BenchmarkDotNet.Build/Runners/ReadmeUpdater.cs new file mode 100644 index 0000000000..c040beada3 --- /dev/null +++ b/build/BenchmarkDotNet.Build/Runners/ReadmeUpdater.cs @@ -0,0 +1,82 @@ +using System; +using System.Net.Http; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using BenchmarkDotNet.Build.Meta; +using Cake.FileHelpers; + +namespace BenchmarkDotNet.Build.Runners; + +public class ReadmeUpdater +{ + public static void Run(BuildContext context) => new ReadmeUpdater().RunInternal(context); + + private void RunInternal(BuildContext context) + { + var dependentProjectsNumber = GetDependentProjectsNumber().Result; + var updaters = new LineUpdater[] + { + new( + "The library is adopted by", + @"\[(\d+)\+ GitHub projects\]", + dependentProjectsNumber + ), + new( + "BenchmarkDotNet is already adopted by more than ", + @"\[(\d+)\+\]", + dependentProjectsNumber + ), + }; + + var file = context.RootDirectory.CombineWithFilePath("README.md"); + var lines = context.FileReadLines(file); + for (var i = 0; i < lines.Length; i++) + { + foreach (var updater in updaters) + lines[i] = updater.Apply(lines[i]); + } + + context.FileWriteLines(file, lines); + } + + private static async Task GetDependentProjectsNumber() + { + using var httpClient = new HttpClient(); + const string url = $"{Repo.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; + } + + private class LineUpdater + { + public string Prefix { get; } + public Regex Regex { get; } + public int Value { get; } + + public LineUpdater(string prefix, string regex, int value) + { + Prefix = prefix; + Regex = new Regex(regex); + Value = value; + } + + public string Apply(string line) + { + if (!line.StartsWith(Prefix)) + return line; + + var match = Regex.Match(line); + if (!match.Success) + return line; + + // Groups[1] refers to the first group (\d+) + var numberString = match.Groups[1].Value; + var number = int.Parse(numberString); + return line.Replace(number.ToString(), Value.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 e816a1c49e..0000000000 --- a/build/Program.cs +++ /dev/null @@ -1,661 +0,0 @@ -using System; -using System.IO; -using System.Linq; -using System.Net.Http; -using System.Text; -using System.Text.RegularExpressions; -using System.Threading.Tasks; -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; -using Cake.Git; - -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"); - MsBuildSettingsBuild.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 EnsureChangelogDetailsExist(bool forceClean = false) - { - var path = ChangeLogGenDirectory.Combine("details"); - if (this.DirectoryExists(path) && forceClean) - this.DeleteDirectory(path, new DeleteDirectorySettings() { Force = true, Recursive = true }); - - if (!this.DirectoryExists(path)) - { - var settings = new GitCloneSettings { Checkout = true, BranchName = "docs-changelog-details" }; - this.GitClone("https://github.com/dotnet/BenchmarkDotNet.git", path, settings); - } - } - - public void DocfxChangelogDownload(string version, string versionPrevious, string lastCommit = "") - { - EnsureChangelogDetailsExist(true); - 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) - { - EnsureChangelogDetailsExist(); - 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 - }; - - foreach (var project in context.AllPackableSrcProjects) - context.DotNetPack(project.FullPath, settingsSrc); - - var settingsTemplate = new DotNetPackSettings - { - Configuration = context.BuildConfiguration, - OutputDirectory = context.ArtifactsDirectory.FullPath - }; - 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) - { - var count = context.Argument("VersionCount", -1); - var total = DocumentationHelper.BdnAllVersions.Length; - - if (count == 0) - { - context.DocfxChangelogDownload( - DocumentationHelper.BdnAllVersions.First(), - DocumentationHelper.BdnFirstCommit); - - for (int i = 1; i < total; i++) - context.DocfxChangelogDownload( - DocumentationHelper.BdnAllVersions[i], - DocumentationHelper.BdnAllVersions[i - 1]); - } - else if (count > 0) - { - for (int i = Math.Max(total - count, 1); i < total; 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.Information("DocfxBuild: Generate index.md"); - var content = new StringBuilder(); - content.AppendLine("---"); - content.AppendLine("title: Home"); - content.AppendLine("---"); - content.Append(context.FileReadText(context.RootDirectory.CombineWithFilePath("README.md"))); - context.FileWriteText(context.DocsDirectory.CombineWithFilePath("index.md"), content.ToString()); - - context.RunDocfx(context.DocfxJsonFile); - context.GenerateRedirects(); - } -} - -[TaskName("UpdateStats")] -public class UpdateStatsTask : FrostingTask -{ - public class Updater - { - public string Prefix { get; } - public Regex Regex { get; } - public int Value { get; } - - public Updater(string prefix, string regex, int value) - { - Prefix = prefix; - Regex = new Regex(regex); - Value = value; - } - - public string Apply(string line) - { - if (!line.StartsWith(Prefix)) - return line; - - var match = Regex.Match(line); - if (!match.Success) - return line; - - // Groups[1] refers to the first group (\d+) - var numberString = match.Groups[1].Value; - var number = int.Parse(numberString); - return line.Replace(number.ToString(), Value.ToString()); - } - } - - private static async Task GetDependentProjectsNumber() - { - using var httpClient = new HttpClient(); - const string url = "https://github.com/dotnet/BenchmarkDotNet/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; - } - - public override void Run(BuildContext context) - { - var dependentProjectsNumber = GetDependentProjectsNumber().Result; - var updaters = new Updater[] - { - new( - "The library is adopted by", - @"\[(\d+)\+ GitHub projects\]", - dependentProjectsNumber - ), - new( - "BenchmarkDotNet is already adopted by more than ", - @"\[(\d+)\+\]", - dependentProjectsNumber - ), - }; - var files = new[] - { - context.RootDirectory.CombineWithFilePath("README.md") - }; - foreach (var file in files) - { - var lines = context.FileReadLines(file); - for (var i = 0; i < lines.Length; i++) - { - foreach (var updater in updaters) - lines[i] = updater.Apply(lines[i]); - } - - context.FileWriteLines(file, lines); - } - } -} \ No newline at end of file diff --git a/build/azure-pipelines.job.template.yml b/build/azure-pipelines.job.template.yml old mode 100755 new mode 100644 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/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/docs/articles/contributing/building.md b/docs/articles/contributing/building.md index 71487cdaa0..b8c84ca942 100644 --- a/docs/articles/contributing/building.md +++ b/docs/articles/contributing/building.md @@ -6,11 +6,11 @@ There are two recommended options to build BenchmarkDotNet from source: - [Visual Studio](https://www.visualstudio.com/downloads/) (Community, Professional, Enterprise) with .NET 4.6.2 SDK and F# support. -- [.NET 5 SDK](https://dotnet.microsoft.com/download). +- [.NET 7 SDK](https://dotnet.microsoft.com/download). Once all the necessary tools are in place, building is trivial. Simply open solution file **BenchmarkDotNet.sln** that lives at the base of the repository and run Build action. -## Cake (C# Make) +## Command-line [Cake (C# Make)](https://cakebuild.net/) is a cross platform build automation system with a C# DSL to do things like compiling code, copy files/folders, running unit tests, compress files and build NuGet packages. @@ -36,19 +36,6 @@ The build currently depends on the following prerequisites: - Install [fsharp package](https://fsharp.org/use/mac/) - Install the latest version of [OpenSSL](https://www.openssl.org/source/). -After you have installed these pre-requisites, you can build the BenchmarkDotNet by invoking the build script (`build.ps1` on Windows, or `build.sh` on Linux and macOS) at the base of the BenchmarkDotNet repository. By default the build process also run all the tests. There are quite a few tests, taking a significant amount of time that is not necessary if you just want to experiment with changes. You can skip the tests phase by adding the `skiptests` argument to the build script, e.g. `.\build.ps1 --SkipTests=True` or `./build.sh --skiptests=true`. - -Build has a number of options that you use. Some of the more important options are - -- **`skiptests`** - do not run the tests. This can shorten build times quite a bit. On Windows: `.\build.ps1 --SkipTests=True` or `./build.sh --skiptests=true` on Linux/macOS. - -- **`configuration`** - build the 'Release' or 'Debug' build type. Default value is 'Release'. On Windows: `.\build.ps1 -Configuration Debug` or `./build.sh --configuration debug` on Linux/macOS. - -- **`target`** - with this parameter you can run a specific target from build pipeline. Default value is 'Default' target. On Windows: `.\build.ps1 -Target Default` or `./build.sh --target default` on Linux/macOS. Available targets: - - **`Default`** - run all actions one by one. - - **`Clean`** - clean all `obj`, `bin` and `artifacts` directories. - - **`Restore`** - automatically execute `Clean` action and after that restore all NuGet dependencies. - - **`Build`** - automatically execute `Restore` action, then run MSBuild for the solution file. - - **`FastTests`** - automatically execute `Build` action, then run all tests from the BenchmarkDotNet.Tests project. - - **`SlowTests`** - automatically execute `Build` action, then run all tests from the BenchmarkDotNet.IntegrationTests project. - - **`Pack`** - automatically execute `Build` action and after that creates local NuGet packages. +In order to run various build tasks from terminal, use `build.cmd` file in the repository root. +`build.cmd` is a cross-platform script that can be used the same way on Windows, Linux, and macOS. +When executed without arguments, it prints help information with list of all available build tasks. \ No newline at end of file diff --git a/docs/articles/contributing/documentation.md b/docs/articles/contributing/documentation.md index 6bdbc944ff..a0f23dd2d2 100644 --- a/docs/articles/contributing/documentation.md +++ b/docs/articles/contributing/documentation.md @@ -49,31 +49,12 @@ It will be transformed to: ## Building documentation locally -You can build documentation locally with the help of the `DocFX_Build` Cake target. -Use the `DocFX_Serve` Cake target to build and run the documentation. - -Windows (PowerShell): - -``` -.\build.ps1 --target DocFX_Build -.\build.ps1 --target DocFX_Serve -``` - -Windows (Batch): +You can build documentation locally with the help of the `DocsBuild` build task: ``` -.\build.bat --target DocFX_Build -.\build.bat --target DocFX_Serve +build.cmd DocsBuild ``` -Linux/macOS (Bash): - -``` -./build.sh --target DocFX_Build -./build.sh --target DocFX_Serve -``` - - ## See also * [DocFX User Manual](https://dotnet.github.io/docfx/tutorial/docfx.exe_user_manual.html) diff --git a/docs/articles/guides/nuget.md b/docs/articles/guides/nuget.md index 0d903802ea..0e2de62a79 100644 --- a/docs/articles/guides/nuget.md +++ b/docs/articles/guides/nuget.md @@ -9,17 +9,21 @@ name: Installing NuGet packages We have the following set of NuGet packages (you can install it directly from `nuget.org`): -* `BenchmarkDotNet`: Basic BenchmarkDotNet infrastructure and logic. This is all you need to run benchmarks. +* `BenchmarkDotNet`: BenchmarkDotNet infrastructure and logic. This is all you need to run benchmarks. +* `BenchmarkDotNet.Annotations`: Basic BenchmarkDotNet annotations for your benchmarks. * `BenchmarkDotNet.Diagnostics.Windows`: an additional optional package that provides a set of Windows diagnosers. +* `BenchmarkDotNet.Diagnostics.dotTrace`: an additional optional package that provides DotTraceDiagnoser. * `BenchmarkDotNet.Templates`: Templates for BenchmarkDotNet. You might find other NuGet packages that start with `BenchmarkDotNet` name, but they are internal BDN packages that should not be installed manually. All that matters are the three packages mentioned above. ## Versioning system and feeds + We have 3 kinds of versions: *stable*, *nightly*, and *develop*. You can get the current version from the source code via `BenchmarkDotNetInfo.FullVersion` and the full title via `BenchmarkDotNetInfo.FullTitle`. ### Stable + These versions are available from the official NuGet feed. ```xml @@ -28,26 +32,22 @@ These versions are available from the official NuGet feed. ``` -* Example of the main NuGet package: `BenchmarkDotNet.0.10.3.nupkg`. -* Example of `BenchmarkDotNetInfo.FullTitle`: `BenchmarkDotNet v0.10.3`. - ### Nightly -If you want to use a nightly version of the BenchmarkDotNet, add the `https://ci.appveyor.com/nuget/benchmarkdotnet` feed in the `` section of your `NuGet.config`: + +If you want to use a nightly version of the BenchmarkDotNet, add the `https://www.myget.org/F/benchmarkdotnet/api/v3/index.json` feed in the `` section of your `NuGet.config`: ```xml - + ``` Now you can install the packages from the `bdn-nightly` feed. -* Example of the main NuGet package: `BenchmarkDotNet.0.10.3.13.nupkg`. -* Example of `BenchmarkDotNetInfo.FullTitle`: `BenchmarkDotNet v0.10.3.13-nightly`. - ### Develop -You also can build BenchmarkDotNet from source code. -The `.nupkg` files could be build with the help of `.\build\build-and-pack.cmd`. -* Example of the main NuGet package: `BenchmarkDotNet.0.10.3-develop.nupkg`. -* Example of `BenchmarkDotNetInfo.FullTitle`: `BenchmarkDotNet v0.10.3.20170304-develop`. +You also can build BenchmarkDotNet from source code: + +```sh +build.cmd pack +``` \ No newline at end of file From 47bd6de3b397a10ab9a414354e07160fd3b8ad19 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Thu, 6 Jul 2023 11:55:50 +0200 Subject: [PATCH 27/73] Bump JetBrains.Profiler.SelfApi: 2.4.2->2.5.0 --- .../BenchmarkDotNet.Diagnostics.dotTrace.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BenchmarkDotNet.Diagnostics.dotTrace/BenchmarkDotNet.Diagnostics.dotTrace.csproj b/src/BenchmarkDotNet.Diagnostics.dotTrace/BenchmarkDotNet.Diagnostics.dotTrace.csproj index 65418cd9d1..e4037e5bcf 100644 --- a/src/BenchmarkDotNet.Diagnostics.dotTrace/BenchmarkDotNet.Diagnostics.dotTrace.csproj +++ b/src/BenchmarkDotNet.Diagnostics.dotTrace/BenchmarkDotNet.Diagnostics.dotTrace.csproj @@ -13,7 +13,7 @@ - + From f5777bb1fe8166b45892aac93d2da804375468a5 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Thu, 6 Jul 2023 12:13:23 +0200 Subject: [PATCH 28/73] Disable net462 integration tests on non-windows os --- .../BenchmarkDotNet.IntegrationTests.csproj | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/BenchmarkDotNet.IntegrationTests/BenchmarkDotNet.IntegrationTests.csproj b/tests/BenchmarkDotNet.IntegrationTests/BenchmarkDotNet.IntegrationTests.csproj index f89a10cbda..5bc42e3dff 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 From c78b7d60a8ecec3e74f797b46a35a26cbb643c6e Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Thu, 6 Jul 2023 12:30:52 +0200 Subject: [PATCH 29/73] Fix race in Broker, workaround for #2317 (#2318) --- src/BenchmarkDotNet/Loggers/Broker.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/BenchmarkDotNet/Loggers/Broker.cs b/src/BenchmarkDotNet/Loggers/Broker.cs index 7cffaf983f..9055523340 100644 --- a/src/BenchmarkDotNet/Loggers/Broker.cs +++ b/src/BenchmarkDotNet/Loggers/Broker.cs @@ -57,7 +57,6 @@ internal void ProcessData() Task.Run(ProcessDataBlocking); finished.WaitOne(); - finished.Dispose(); } private void OnProcessExited(object sender, EventArgs e) From 38990811eb1e5384d2ceb28839bfcf29f0c63e03 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Thu, 6 Jul 2023 09:10:02 +0200 Subject: [PATCH 30/73] Suppress dependency rebuilding in integration tests on windows+net7.0 --- src/BenchmarkDotNet/Helpers/XUnitHelper.cs | 10 ++++++++++ .../Toolchains/DotNetCli/DotNetCliCommand.cs | 17 +++++++++++++++-- .../IntegrationTestSetupTests.cs | 10 ++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 src/BenchmarkDotNet/Helpers/XUnitHelper.cs create mode 100644 tests/BenchmarkDotNet.IntegrationTests/IntegrationTestSetupTests.cs diff --git a/src/BenchmarkDotNet/Helpers/XUnitHelper.cs b/src/BenchmarkDotNet/Helpers/XUnitHelper.cs new file mode 100644 index 0000000000..559113a8f4 --- /dev/null +++ b/src/BenchmarkDotNet/Helpers/XUnitHelper.cs @@ -0,0 +1,10 @@ +using System; +using System.Linq; + +namespace BenchmarkDotNet.Helpers; + +internal static class XUnitHelper +{ + public static Lazy IsIntegrationTest = + new (() => AppDomain.CurrentDomain.GetAssemblies().Any(assembly => assembly.GetName().Name == "BenchmarkDotNet.IntegrationTests")); +} \ No newline at end of file diff --git a/src/BenchmarkDotNet/Toolchains/DotNetCli/DotNetCliCommand.cs b/src/BenchmarkDotNet/Toolchains/DotNetCli/DotNetCliCommand.cs index bdcafc06e2..77401f022e 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,21 @@ 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(); + } return buildResult.ToBuildResult(GenerateResult); } 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 From 469b43bd937eb8e725b753550e6ca78d85150fb6 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Thu, 6 Jul 2023 17:42:23 +0200 Subject: [PATCH 31/73] Update test-reporter --- .github/workflows/build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index ae19f9b0e6..14fca006b6 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -109,7 +109,7 @@ jobs: - name: Display structure of downloaded files run: ls -R - name: Report tests results - uses: dorny/test-reporter@v1 + uses: AndreyAkinshin/test-reporter@0e2c48ebec2007001dd77dd4bcbcd450b96d5a38 if: always() with: name: test-results From 2b8bc88d9ee880bb8021cb8c4440b8b7fd14dfc9 Mon Sep 17 00:00:00 2001 From: Tim Cassell <35501420+timcassell@users.noreply.github.com> Date: Fri, 7 Jul 2023 08:19:02 -0400 Subject: [PATCH 32/73] Fix netcoreapp3.0 and older builds (#2352) --- src/BenchmarkDotNet/BenchmarkDotNet.csproj | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/BenchmarkDotNet/BenchmarkDotNet.csproj b/src/BenchmarkDotNet/BenchmarkDotNet.csproj index f7825d7f50..dbdc9449a4 100644 --- a/src/BenchmarkDotNet/BenchmarkDotNet.csproj +++ b/src/BenchmarkDotNet/BenchmarkDotNet.csproj @@ -22,19 +22,21 @@ - - - + - - + + + + + + From c0cbd255f065688916064bbe803dc95f50122a2d Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Fri, 7 Jul 2023 11:37:50 +0200 Subject: [PATCH 33/73] Add version history to BuildContext A new property called 'VersionHistory' was added to the 'BuildContext' class. This was done to manage historical version data and facilitate the automatic processing of changelogs for different versions. The version data was previously stored in the 'DocumentationHelper' class, but this was renamed to 'VersionHistory' and refactored to fetch historical data from a text file ('versions.txt'). This addition and changes improve the manageability and flexibility of handling version data for documentation generation. --- build/BenchmarkDotNet.Build/BuildContext.cs | 6 ++ .../Meta/DocumentationHelper.cs | 62 ------------------- .../Meta/VersionHistory.cs | 20 ++++++ .../Runners/DocumentationRunner.cs | 42 +++++++------ build/versions.txt | 53 ++++++++++++++++ 5 files changed, 102 insertions(+), 81 deletions(-) delete mode 100644 build/BenchmarkDotNet.Build/Meta/DocumentationHelper.cs create mode 100644 build/BenchmarkDotNet.Build/Meta/VersionHistory.cs create mode 100644 build/versions.txt diff --git a/build/BenchmarkDotNet.Build/BuildContext.cs b/build/BenchmarkDotNet.Build/BuildContext.cs index 416220424e..c25441a901 100644 --- a/build/BenchmarkDotNet.Build/BuildContext.cs +++ b/build/BenchmarkDotNet.Build/BuildContext.cs @@ -27,6 +27,7 @@ public class BuildContext : FrostingContext public int Depth { get; set; } public DirectoryPath RootDirectory { get; } + public DirectoryPath BuildDirectory { get; } public DirectoryPath ArtifactsDirectory { get; } public DirectoryPath DocsDirectory { get; } public FilePath DocfxJsonFile { get; } @@ -56,6 +57,8 @@ public class BuildContext : FrostingContext public bool IsLocalBuild => this.BuildSystem().IsLocalBuild; public bool IsCiBuild => !this.BuildSystem().IsLocalBuild; + public VersionHistory VersionHistory { get; } + public UnitTestRunner UnitTestRunner { get; } public DocumentationRunner DocumentationRunner { get; } public BuildRunner BuildRunner { get; } @@ -64,6 +67,7 @@ public BuildContext(ICakeContext context) : base(context) { RootDirectory = new DirectoryPath(new DirectoryInfo(Directory.GetCurrentDirectory()).Parent?.Parent?.FullName); + BuildDirectory = RootDirectory.Combine("build"); ArtifactsDirectory = RootDirectory.Combine("artifacts"); DocsDirectory = RootDirectory.Combine("docs"); DocfxJsonFile = DocsDirectory.CombineWithFilePath("docfx.json"); @@ -133,6 +137,8 @@ public BuildContext(ICakeContext context) MsBuildSettingsBuild.WithProperty("Platform", "Any CPU"); } + VersionHistory = new VersionHistory(this, BuildDirectory.CombineWithFilePath("versions.txt")); + UnitTestRunner = new UnitTestRunner(this); DocumentationRunner = new DocumentationRunner(this); BuildRunner = new BuildRunner(this); diff --git a/build/BenchmarkDotNet.Build/Meta/DocumentationHelper.cs b/build/BenchmarkDotNet.Build/Meta/DocumentationHelper.cs deleted file mode 100644 index 103a6e5368..0000000000 --- a/build/BenchmarkDotNet.Build/Meta/DocumentationHelper.cs +++ /dev/null @@ -1,62 +0,0 @@ -namespace BenchmarkDotNet.Build.Meta; - -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"; -} \ 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..41fe5b702d --- /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 NextVersion { get; } + + public VersionHistory(BuildContext context, FilePath versionFilePath) + { + var lines = context.FileReadLines(versionFilePath).Where(line => !string.IsNullOrWhiteSpace(line)).ToArray(); + FirstCommit = lines.First(); + NextVersion = lines.Last(); + StableVersions = lines.Skip(1).SkipLast(1).ToArray(); + } +} \ No newline at end of file diff --git a/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs b/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs index bc7e68dfa0..bca9521558 100644 --- a/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs +++ b/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs @@ -87,39 +87,43 @@ public void Update() if (string.IsNullOrEmpty(Repo.Token)) throw new Exception($"Environment variable '{Repo.TokenVar}' is not specified!"); - var count = context.Depth; - var total = DocumentationHelper.BdnAllVersions.Length; + var history = context.VersionHistory; - if (count == 0) + var depth = context.Depth; + var stableVersionCount = history.StableVersions.Length; + + if (depth == 0) { context.DocfxChangelogDownload( - DocumentationHelper.BdnAllVersions.First(), - DocumentationHelper.BdnFirstCommit); + history.StableVersions.First(), + history.FirstCommit); - for (int i = 1; i < total; i++) + for (int i = 1; i < stableVersionCount; i++) context.DocfxChangelogDownload( - DocumentationHelper.BdnAllVersions[i], - DocumentationHelper.BdnAllVersions[i - 1]); + history.StableVersions[i], + history.StableVersions[i - 1]); } - else if (count > 0) + else if (depth > 0) { - for (int i = Math.Max(total - count, 1); i < total; i++) + for (int i = Math.Max(stableVersionCount - depth, 1); i < stableVersionCount; i++) context.DocfxChangelogDownload( - DocumentationHelper.BdnAllVersions[i], - DocumentationHelper.BdnAllVersions[i - 1]); + history.StableVersions[i], + history.StableVersions[i - 1]); } context.DocfxChangelogDownload( - DocumentationHelper.BdnNextVersion, - DocumentationHelper.BdnAllVersions.Last(), + history.NextVersion, + history.StableVersions.Last(), "HEAD"); } public void Prepare() { - foreach (var version in DocumentationHelper.BdnAllVersions) + var history = context.VersionHistory; + + foreach (var version in history.StableVersions) context.DocfxChangelogGenerate(version); - context.DocfxChangelogGenerate(DocumentationHelper.BdnNextVersion); + context.DocfxChangelogGenerate(history.NextVersion); context.Information("DocfxChangelogGenerate: index.md"); var indexContent = new StringBuilder(); @@ -129,7 +133,7 @@ public void Prepare() indexContent.AppendLine(""); indexContent.AppendLine("# ChangeLog"); indexContent.AppendLine(""); - foreach (var version in DocumentationHelper.BdnAllVersions.Reverse()) + foreach (var version in history.StableVersions.Reverse()) indexContent.AppendLine($"* @changelog.{version}"); indexContent.AppendLine("* @changelog.full"); context.FileWriteText(context.ChangeLogDirectory.CombineWithFilePath("index.md"), indexContent.ToString()); @@ -142,13 +146,13 @@ public void Prepare() fullContent.AppendLine(""); fullContent.AppendLine("# Full ChangeLog"); fullContent.AppendLine(""); - foreach (var version in DocumentationHelper.BdnAllVersions.Reverse()) + foreach (var version in history.StableVersions.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()) + foreach (var version in history.StableVersions.Reverse()) { tocContent.AppendLine($"- name: {version}"); tocContent.AppendLine($" href: {version}.md"); diff --git a/build/versions.txt b/build/versions.txt new file mode 100644 index 0000000000..70df4068ca --- /dev/null +++ b/build/versions.txt @@ -0,0 +1,53 @@ +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 \ No newline at end of file From 41f86e54880350637629af3636be627c0f67454c Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Fri, 7 Jul 2023 13:29:42 +0200 Subject: [PATCH 34/73] Rework documentation generation --- README.md | 4 +- build/BenchmarkDotNet.Build/BuildContext.cs | 138 +++----- .../BenchmarkDotNet.Build/ChangeLogBuilder.cs | 44 +-- .../Meta/GitHubCredentials.cs | 11 + build/BenchmarkDotNet.Build/Meta/Repo.cs | 8 - .../Runners/DocumentationRunner.cs | 310 ++++++++++++------ 6 files changed, 281 insertions(+), 234 deletions(-) create mode 100644 build/BenchmarkDotNet.Build/Meta/GitHubCredentials.cs diff --git a/README.md b/README.md index 280f7ba435..eef8e04684 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ 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 [16500+ GitHub projects](#who-uses-benchmarkdotnet) including .NET Runtime. +The library is adopted by [16600+ GitHub projects](#who-uses-benchmarkdotnet) including .NET Runtime. 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)): @@ -231,7 +231,7 @@ If you don't customize the summary view, ## Who uses BenchmarkDotNet? Everyone! -BenchmarkDotNet is already adopted by more than [16500+](https://github.com/dotnet/BenchmarkDotNet/network/dependents?package_id=UGFja2FnZS0xNTY3MzExMzE%3D) projects including +BenchmarkDotNet is already adopted by more than [16600+](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), diff --git a/build/BenchmarkDotNet.Build/BuildContext.cs b/build/BenchmarkDotNet.Build/BuildContext.cs index c25441a901..a256f4a4d1 100644 --- a/build/BenchmarkDotNet.Build/BuildContext.cs +++ b/build/BenchmarkDotNet.Build/BuildContext.cs @@ -29,14 +29,6 @@ public class BuildContext : FrostingContext public DirectoryPath RootDirectory { get; } public DirectoryPath BuildDirectory { get; } public DirectoryPath ArtifactsDirectory { get; } - public DirectoryPath DocsDirectory { get; } - public FilePath DocfxJsonFile { get; } - - public DirectoryPath ChangeLogDirectory { get; } - public DirectoryPath ChangeLogGenDirectory { get; } - - public DirectoryPath RedirectRootDirectory { get; } - public DirectoryPath RedirectTargetDirectory { get; } public FilePath SolutionFile { get; } public FilePath TemplatesTestsProjectFile { get; } @@ -56,9 +48,9 @@ public class BuildContext : FrostingContext public bool IsLocalBuild => this.BuildSystem().IsLocalBuild; public bool IsCiBuild => !this.BuildSystem().IsLocalBuild; - + public VersionHistory VersionHistory { get; } - + public UnitTestRunner UnitTestRunner { get; } public DocumentationRunner DocumentationRunner { get; } public BuildRunner BuildRunner { get; } @@ -69,17 +61,10 @@ public BuildContext(ICakeContext context) RootDirectory = new DirectoryPath(new DirectoryInfo(Directory.GetCurrentDirectory()).Parent?.Parent?.FullName); BuildDirectory = RootDirectory.Combine("build"); ArtifactsDirectory = RootDirectory.Combine("artifacts"); - DocsDirectory = RootDirectory.Combine("docs"); - DocfxJsonFile = DocsDirectory.CombineWithFilePath("docfx.json"); - - 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"); - + TemplatesTestsProjectFile = RootDirectory.Combine("templates") .CombineWithFilePath("BenchmarkDotNet.Templates.csproj"); AllPackableSrcProjects = new FilePathCollection(context.GetFiles(RootDirectory.FullPath + "/src/**/*.csproj") @@ -127,7 +112,7 @@ public BuildContext(ICakeContext context) } } } - + // 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" @@ -143,92 +128,57 @@ public BuildContext(ICakeContext context) DocumentationRunner = new DocumentationRunner(this); BuildRunner = new BuildRunner(this); } - - public void EnsureChangelogDetailsExist(bool forceClean = false) - { - var path = ChangeLogGenDirectory.Combine("details"); - if (this.DirectoryExists(path) && forceClean) - this.DeleteDirectory(path, new DeleteDirectorySettings() { Force = true, Recursive = true }); - - if (!this.DirectoryExists(path)) - { - var repo = Repo.HttpsGitUrl; - var branchName = Repo.ChangelogDetailsBranch; - var settings = new GitCloneSettings { Checkout = true, BranchName = branchName }; - this.Information($"Trying to clone {repo} to {path} (branch: '{branchName})"); - try - { - this.GitClone(repo, path, settings); - } - catch (Exception e) - { - this.Error($"Failed to clone {repo} to {path} (branch: '{branchName}), Exception: {e.GetType().Name}'"); - try - { - var gitArgs = $"clone -b {branchName} {repo} {path}"; - this.Information($"Trying to clone manually: 'git {gitArgs}'"); - this.StartProcess("git", gitArgs); - } - catch (Exception e2) - { - throw new Exception($"Failed to clone {repo} to {path} (branch: '{branchName})'", e2); - } - } - this.Information("Clone is successfully finished"); - this.Information(""); - } - } - - public void DocfxChangelogDownload(string version, string versionPrevious, string lastCommit = "") + public void GenerateFile(FilePath filePath, StringBuilder content) { - EnsureChangelogDetailsExist(); - this.Information("DocfxChangelogDownload: " + version); - var path = ChangeLogGenDirectory.Combine("details"); - ChangeLogBuilder.Run(path, version, versionPrevious, lastCommit).Wait(); + GenerateFile(filePath, content.ToString()); } - public void DocfxChangelogGenerate(string version) + public void GenerateFile(FilePath filePath, string content) { - EnsureChangelogDetailsExist(); - 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)) + var relativePath = RootDirectory.GetRelativePath(filePath); + if (this.FileExists(filePath)) { - content.AppendLine(this.FileReadText(header)); - content.AppendLine(""); - content.AppendLine(""); - } + var oldContent = this.FileReadText(filePath); + if (content == oldContent) + return; - if (this.FileExists(details)) + this.FileWriteText(filePath, content); + this.Information("[Updated] " + relativePath); + } + else { - content.AppendLine(this.FileReadText(details)); - content.AppendLine(""); - content.AppendLine(""); + this.FileWriteText(filePath, content); + this.Information("[Generated] " + relativePath); } + } - if (this.FileExists(footer)) + public void Clone(DirectoryPath path, string repoUrl, string branchName) + { + this.Information($"[GitClone]"); + this.Information($" Repo: {repoUrl}"); + this.Information($" Branch: {branchName}"); + this.Information($" Path: {path}"); + var settings = new GitCloneSettings { Checkout = true, BranchName = branchName }; + try { - content.AppendLine("## Additional details"); - content.AppendLine(""); - content.AppendLine(this.FileReadText(footer)); + this.GitClone(repoUrl, path, settings); + this.Information(" Success"); + } + catch (Exception e) + { + this.Error($" Failed to clone via API (Exception: {e.GetType().Name})'"); + try + { + var gitArgs = $"clone -b {branchName} {repoUrl} {path}"; + this.Information($" Trying to clone manually using 'git {gitArgs}'"); + this.StartProcess("git", gitArgs); + this.Information(" Success"); + } + catch (Exception e2) + { + throw new Exception($"Failed to clone {repoUrl} to {path} (branch: '{branchName})'", e2); + } } - - this.FileWriteText(release, content.ToString()); } - - } \ No newline at end of file diff --git a/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs b/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs index caf20629fc..0180947a67 100644 --- a/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs +++ b/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs @@ -16,21 +16,21 @@ public static class ChangeLogBuilder { private class Config { - public string CurrentMilestone { get; } - public string PreviousMilestone { get; } + public string CurrentVersion { get; } + public string PreviousVersion { get; } public string LastCommit { get; } public void Deconstruct(out string currentMilestone, out string previousMilestone, out string lastCommit) { - currentMilestone = CurrentMilestone; - previousMilestone = PreviousMilestone; + currentMilestone = CurrentVersion; + previousMilestone = PreviousVersion; lastCommit = LastCommit; } - public Config(string currentMilestone, string previousMilestone, string lastCommit) + public Config(string currentVersion, string previousVersion, string lastCommit) { - CurrentMilestone = currentMilestone; - PreviousMilestone = previousMilestone; + CurrentVersion = currentVersion; + PreviousVersion = previousVersion; LastCommit = lastCommit; } } @@ -56,15 +56,15 @@ private MarkdownBuilder(Config config) private async Task Build() { - var (milestone, previousMilestone, lastCommit) = config; + var (currentVersion, previousVersion, lastCommit) = config; if (string.IsNullOrEmpty(lastCommit)) - lastCommit = milestone; + lastCommit = currentVersion; - var client = new GitHubClient(new ProductHeaderValue(Repo.ProductHeader)); - var tokenAuth = new Credentials(Repo.Token); + var client = new GitHubClient(new ProductHeaderValue(GitHubCredentials.ProductHeader)); + var tokenAuth = new Credentials(GitHubCredentials.Token); client.Credentials = tokenAuth; - if (milestone == "_") + if (currentVersion == "_") { var allContributors = await client.Repository.GetAllContributors(Repo.Owner, Repo.Name); builder.AppendLine("# All contributors"); @@ -87,11 +87,12 @@ private async Task Build() { State = ItemStateFilter.All }; - allMilestones = await client.Issue.Milestone.GetAllForRepository(Repo.Owner, Repo.Name, 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 @@ -112,10 +113,10 @@ private async Task Build() .OrderBy(issue => issue.Number) .ToList(); - var compare = await client.Repository.Commit.Compare(Repo.Owner, Repo.Name, 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)) { @@ -137,11 +138,11 @@ string PresentContributor(GitHubCommit commit) .Distinct() .ToImmutableList(); - var milestoneHtmlUlr = $"https://github.com/{Repo.Owner}/{Repo.Name}/issues?q=milestone:{milestone}"; + var milestoneHtmlUlr = $"https://github.com/{Repo.Owner}/{Repo.Name}/issues?q=milestone:{currentVersion}"; builder.AppendLine("## Milestone details"); builder.AppendLine(); - builder.AppendLine($"In the [{milestone}]({milestoneHtmlUlr}) scope, "); + builder.AppendLine($"In the [{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."); @@ -175,14 +176,13 @@ private void AppendList(string title, IReadOnlyList items, Func } } - public static async Task Run(DirectoryPath path, string currentMilestone, string previousMilestone, - string lastCommit) + public static async Task Run(DirectoryPath path, string currentVersion, string previousVersion, string lastCommit) { try { - var config = new Config(currentMilestone, previousMilestone, lastCommit); + var config = new Config(currentVersion, previousVersion, lastCommit); var releaseNotes = await MarkdownBuilder.Build(config); - await File.WriteAllTextAsync(path.Combine(config.CurrentMilestone + ".md").FullPath, releaseNotes); + await File.WriteAllTextAsync(path.Combine(config.CurrentVersion + ".md").FullPath, releaseNotes); } catch (Exception e) { diff --git a/build/BenchmarkDotNet.Build/Meta/GitHubCredentials.cs b/build/BenchmarkDotNet.Build/Meta/GitHubCredentials.cs new file mode 100644 index 0000000000..dc09bce5ab --- /dev/null +++ b/build/BenchmarkDotNet.Build/Meta/GitHubCredentials.cs @@ -0,0 +1,11 @@ +using System; + +namespace BenchmarkDotNet.Build.Meta; + +public static class GitHubCredentials +{ + public const string TokenVariableName = "GITHUB_TOKEN"; + + public const string ProductHeader = "BenchmarkDotNet"; + public static string? Token => Environment.GetEnvironmentVariable(TokenVariableName); +} \ No newline at end of file diff --git a/build/BenchmarkDotNet.Build/Meta/Repo.cs b/build/BenchmarkDotNet.Build/Meta/Repo.cs index 06e6137b55..4eace53e81 100644 --- a/build/BenchmarkDotNet.Build/Meta/Repo.cs +++ b/build/BenchmarkDotNet.Build/Meta/Repo.cs @@ -1,5 +1,3 @@ -using System; - namespace BenchmarkDotNet.Build.Meta; public static class Repo @@ -9,10 +7,4 @@ public static class Repo 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 ProductHeaderVar = "GITHUB_PRODUCT"; - public const string TokenVar = "GITHUB_TOKEN"; - - public static string? ProductHeader => Environment.GetEnvironmentVariable(ProductHeaderVar); - public static string? Token => Environment.GetEnvironmentVariable(TokenVar); } \ No newline at end of file diff --git a/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs b/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs index bca9521558..cf3065cb10 100644 --- a/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs +++ b/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs @@ -14,159 +14,253 @@ public class DocumentationRunner { private readonly BuildContext context; + private readonly DirectoryPath changelogDirectory; + private readonly DirectoryPath changelogSrcDirectory; + 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; + public DocumentationRunner(BuildContext context) { this.context = context; + + var docsDirectory = context.RootDirectory.Combine("docs"); + changelogDirectory = docsDirectory.Combine("changelog"); + changelogSrcDirectory = docsDirectory.Combine("_changelog"); + docsGeneratedDirectory = docsDirectory.Combine("_site"); + changelogDetailsDirectory = changelogSrcDirectory.Combine("details"); + + 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"); } - private void GenerateRedirects() + public void Update() { - var redirectFile = context.RedirectRootDirectory.CombineWithFilePath("_redirects"); - if (!context.FileExists(redirectFile)) - { - context.Error($"Redirect file '{redirectFile}' does not exist"); - return; - } + EnsureChangelogDetailsExist(); - context.EnsureDirectoryExists(context.RedirectTargetDirectory); + ReadmeUpdater.Run(context); - var redirects = context.FileReadLines(redirectFile) - .Select(line => line.Split(' ')) - .Select(parts => (source: parts[0], target: parts[1])) - .ToList(); + if (string.IsNullOrEmpty(GitHubCredentials.Token)) + throw new Exception($"Environment variable '{GitHubCredentials.TokenVariableName}' is not specified!"); - foreach (var (source, target) in redirects) + var history = context.VersionHistory; + var depth = context.Depth; + var stableVersionCount = history.StableVersions.Length; + + if (depth == 0) { - var fileName = source.StartsWith("/") || source.StartsWith("\\") ? source[1..] : source; - var fullFileName = context.RedirectTargetDirectory.CombineWithFilePath(fileName); - var content = - $"" + - $"" + - $"" + - $"{target}" + - $"" + - $"" + - $"" + - $"" + - $""; - context.EnsureDirectoryExists(fullFileName.GetDirectory()); - context.FileWriteText(fullFileName, content); + DocfxChangelogDownload( + history.StableVersions.First(), + history.FirstCommit); + + for (int i = 1; i < stableVersionCount; i++) + DocfxChangelogDownload( + history.StableVersions[i], + history.StableVersions[i - 1]); + } + else if (depth > 0) + { + for (int i = Math.Max(stableVersionCount - depth, 1); i < stableVersionCount; i++) + DocfxChangelogDownload( + history.StableVersions[i], + history.StableVersions[i - 1]); } + + DocfxChangelogDownload( + history.NextVersion, + history.StableVersions.Last(), + "HEAD"); } - private void RunDocfx(FilePath docfxJson) + + public void Prepare() { - context.Information($"Running docfx for '{docfxJson}'"); + foreach (var version in context.VersionHistory.StableVersions) + DocfxChangelogGenerate(version); + DocfxChangelogGenerate(context.VersionHistory.NextVersion); + + GenerateIndexMd(); + GenerateChangelogIndex(); + GenerateChangelogFull(); + GenerateChangelogToc(); + } + + public void Build() + { + RunDocfx(); + GenerateRedirects(); + } + + private void RunDocfx() + { + context.Information($"Running docfx for '{docfxJsonFile}'"); 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(docfxJsonFile.GetDirectory().FullPath); + Microsoft.DocAsCode.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(docfxJsonFile.FullPath).Wait(); + Microsoft.DocAsCode.Docset.Build(docfxJsonFile.FullPath).Wait(); Directory.SetCurrentDirectory(currentDirectory); } private void GenerateIndexMd() { - context.Information("DocsBuild: Generate index.md"); var content = new StringBuilder(); content.AppendLine("---"); content.AppendLine("title: Home"); content.AppendLine("---"); - content.Append(context.FileReadText(context.RootDirectory.CombineWithFilePath("README.md"))); - context.FileWriteText(context.DocsDirectory.CombineWithFilePath("index.md"), content.ToString()); + content.Append(context.FileReadText(readmeFile)); + + context.GenerateFile(rootIndexFile, content); } - public void Update() + private void GenerateChangelogToc() { - context.EnsureChangelogDetailsExist(); + var content = new StringBuilder(); + foreach (var version in context.VersionHistory.StableVersions.Reverse()) + { + content.AppendLine($"- name: {version}"); + content.AppendLine($" href: {version}.md"); + } - ReadmeUpdater.Run(context); + content.AppendLine("- name: Full ChangeLog"); + content.AppendLine(" href: full.md"); - if (string.IsNullOrEmpty(Repo.ProductHeader)) - throw new Exception($"Environment variable '{Repo.ProductHeaderVar}' is not specified!"); - if (string.IsNullOrEmpty(Repo.Token)) - throw new Exception($"Environment variable '{Repo.TokenVar}' is not specified!"); + context.GenerateFile(changelogTocFile, content); + } - var history = context.VersionHistory; + private void GenerateChangelogFull() + { + var content = new StringBuilder(); + content.AppendLine("---"); + content.AppendLine("uid: changelog.full"); + content.AppendLine("---"); + content.AppendLine(""); + content.AppendLine("# Full ChangeLog"); + content.AppendLine(""); + foreach (var version in context.VersionHistory.StableVersions.Reverse()) + content.AppendLine($"[!include[{version}]({version}.md)]"); - var depth = context.Depth; - var stableVersionCount = history.StableVersions.Length; + context.GenerateFile(changelogFullFile, content); + } - if (depth == 0) + private void GenerateChangelogIndex() + { + var content = new StringBuilder(); + content.AppendLine("---"); + content.AppendLine("uid: changelog"); + content.AppendLine("---"); + content.AppendLine(""); + content.AppendLine("# ChangeLog"); + content.AppendLine(""); + foreach (var version in context.VersionHistory.StableVersions.Reverse()) + content.AppendLine($"* @changelog.{version}"); + content.AppendLine("* @changelog.full"); + + context.GenerateFile(changelogIndexFile, content); + } + + private void DocfxChangelogGenerate(string version) + { + EnsureChangelogDetailsExist(); + var header = changelogSrcDirectory.Combine("header").CombineWithFilePath(version + ".md"); + var footer = changelogSrcDirectory.Combine("footer").CombineWithFilePath(version + ".md"); + var details = changelogSrcDirectory.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 (context.FileExists(header)) { - context.DocfxChangelogDownload( - history.StableVersions.First(), - history.FirstCommit); + content.AppendLine(context.FileReadText(header)); + content.AppendLine(""); + content.AppendLine(""); + } - for (int i = 1; i < stableVersionCount; i++) - context.DocfxChangelogDownload( - history.StableVersions[i], - history.StableVersions[i - 1]); + if (context.FileExists(details)) + { + content.AppendLine(context.FileReadText(details)); + content.AppendLine(""); + content.AppendLine(""); } - else if (depth > 0) + + if (context.FileExists(footer)) { - for (int i = Math.Max(stableVersionCount - depth, 1); i < stableVersionCount; i++) - context.DocfxChangelogDownload( - history.StableVersions[i], - history.StableVersions[i - 1]); + content.AppendLine("## Additional details"); + content.AppendLine(""); + content.AppendLine(context.FileReadText(footer)); } - context.DocfxChangelogDownload( - history.NextVersion, - history.StableVersions.Last(), - "HEAD"); + context.GenerateFile(release, content.ToString()); } - public void Prepare() + private void EnsureChangelogDetailsExist(bool forceClean = false) { - var history = context.VersionHistory; - - foreach (var version in history.StableVersions) - context.DocfxChangelogGenerate(version); - context.DocfxChangelogGenerate(history.NextVersion); - - 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 history.StableVersions.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 history.StableVersions.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 history.StableVersions.Reverse()) - { - tocContent.AppendLine($"- name: {version}"); - tocContent.AppendLine($" href: {version}.md"); - } + if (context.DirectoryExists(changelogDetailsDirectory) && forceClean) + context.DeleteDirectory( + changelogDetailsDirectory, + new DeleteDirectorySettings { Force = true, Recursive = true }); - tocContent.AppendLine("- name: Full ChangeLog"); - tocContent.AppendLine(" href: full.md"); - context.FileWriteText(context.ChangeLogDirectory.CombineWithFilePath("toc.yml"), tocContent.ToString()); + if (!context.DirectoryExists(changelogDetailsDirectory)) + context.Clone(changelogDetailsDirectory, Repo.HttpsGitUrl, Repo.ChangelogDetailsBranch); } - public void Build() + private void DocfxChangelogDownload(string version, string versionPrevious, string lastCommit = "") { - GenerateIndexMd(); - RunDocfx(context.DocfxJsonFile); - GenerateRedirects(); + EnsureChangelogDetailsExist(); + context.Information("DocfxChangelogDownload: " + version); + ChangeLogBuilder.Run(changelogDetailsDirectory, version, versionPrevious, lastCommit).Wait(); + } + + 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); + } } } \ No newline at end of file From 4243a6045bd9c30e9ca475869a1cb18ebbb53f5f Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Fri, 7 Jul 2023 14:24:46 +0200 Subject: [PATCH 35/73] Improve build script option parsing --- .../CommandLineParser.cs | 359 +++++++++++------- build/BenchmarkDotNet.Build/HelpInfo.cs | 8 + build/BenchmarkDotNet.Build/IHelpProvider.cs | 6 + build/BenchmarkDotNet.Build/Program.cs | 14 +- 4 files changed, 244 insertions(+), 143 deletions(-) create mode 100644 build/BenchmarkDotNet.Build/HelpInfo.cs create mode 100644 build/BenchmarkDotNet.Build/IHelpProvider.cs diff --git a/build/BenchmarkDotNet.Build/CommandLineParser.cs b/build/BenchmarkDotNet.Build/CommandLineParser.cs index 6f8af08a8c..122dffa1a8 100644 --- a/build/BenchmarkDotNet.Build/CommandLineParser.cs +++ b/build/BenchmarkDotNet.Build/CommandLineParser.cs @@ -8,8 +8,89 @@ namespace BenchmarkDotNet.Build; public class CommandLineParser { + private const string ScriptName = "build.cmd"; + 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(); + + taskName = taskName.Replace("-", ""); + + var taskNames = GetTaskNames(); + if (!taskNames.Contains(taskName)) + { + PrintError($"'{taskName}' is not a task"); + return null; + } + + 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(); + + var matched = false; + foreach (var option in options) + { + if (Is(arg, option.ShortName, option.FullName)) + { + matched = true; + cakeArgs.Add(option.CakeOption); + if (option.Arg != "") + { + if (!argsToProcess.Any()) + { + PrintError(option.FullName + " is not specified"); + return null; + } + + cakeArgs.Add(argsToProcess.Dequeue()); + } + } + } + + if (arg.StartsWith("/p:")) + { + matched = true; + cakeArgs.Add("--msbuild"); + cakeArgs.Add(arg[3..]); + } + + if (!matched) + { + PrintError("Unknown option: " + arg); + return null; + } + } + + return cakeArgs.ToArray(); + } + + private record Option(string ShortName, string FullName, string Arg, string Description, string CakeOption); private readonly Option[] options = @@ -23,37 +104,45 @@ private record Option(string ShortName, string FullName, string Arg, string Desc "--exclusive", "", "Executes the target task without any dependencies", - "--exclusive") + "--exclusive"), + new("-h", + "--help", + "", + "Prints help information for the target task", + "") }; - private void PrintHelp(bool skipWelcome = false) + private void PrintHelp() { - const string scriptName = "build.cmd"; - if (!skipWelcome) - { - WriteHeader("Welcome to the BenchmarkDotNet build script!"); - WriteLine(); - } + WriteHeader("Description:"); + + WritePrefix(); + WriteLine("BenchmarkDotNet build script"); + + WritePrefix(); + WriteLine("Task names are case-insensitive, dashes are ignored"); + + WriteLine(); - WriteHeader("USAGE:"); + WriteHeader("Usage:"); WritePrefix(); - Write(scriptName + " "); + Write(ScriptName + " "); WriteTask(" "); WriteOption("[OPTIONS]"); WriteLine(); WriteLine(); - WriteHeader("EXAMPLES:"); + WriteHeader("Examples:"); WritePrefix(); - Write(scriptName + " "); + Write(ScriptName + " "); WriteTask("restore"); WriteLine(); WritePrefix(); - Write(scriptName + " "); + Write(ScriptName + " "); WriteTask("build "); WriteOption("/p:"); WriteArg("Configuration"); @@ -62,24 +151,24 @@ private void PrintHelp(bool skipWelcome = false) WriteLine(); WritePrefix(); - Write(scriptName + " "); + Write(ScriptName + " "); WriteTask("pack "); WriteOption("/p:"); WriteArg("Version"); WriteOption("="); WriteArg("0.1.1729-preview"); WriteLine(); - + WritePrefix(); - Write(scriptName + " "); + Write(ScriptName + " "); WriteTask("unittests "); WriteOption("--exclusive --verbosity "); WriteArg("Diagnostic"); WriteLine(); WritePrefix(); - Write(scriptName + " "); - WriteTask("docsupdate "); + Write(ScriptName + " "); + WriteTask("docs-update "); WriteOption("/p:"); WriteArg("Depth"); WriteOption("="); @@ -88,7 +177,35 @@ private void PrintHelp(bool skipWelcome = false) WriteLine(); - WriteLine("OPTIONS:", ConsoleColor.DarkCyan); + PrintCommonOptions(); + + WriteLine(); + + WriteHeader("Tasks:"); + var taskWidth = GetTaskNames().Max(name => name.Length) + 3; + foreach (var (taskName, taskDescription) in GetTasks()) + { + if (taskName.Equals("Default", StringComparison.OrdinalIgnoreCase)) + continue; + + if (taskDescription.StartsWith("OBSOLETE", StringComparison.OrdinalIgnoreCase)) + { + WriteObsolete(" " + taskName.PadRight(taskWidth)); + WriteObsolete(taskDescription); + } + else + { + WriteTask(" " + taskName.PadRight(taskWidth)); + Write(taskDescription); + } + + WriteLine(); + } + } + + private void PrintCommonOptions() + { + WriteLine("Options:", ConsoleColor.DarkCyan); var shortNameWidth = options.Max(it => it.ShortName.Length); var targetWidth = options.Max(it => it.FullName.Length + it.Arg.Length); @@ -114,7 +231,7 @@ private void PrintHelp(bool skipWelcome = false) WriteLine(); } - + WritePrefix(); WriteOption("/p:"); WriteArg(""); @@ -123,57 +240,72 @@ private void PrintHelp(bool skipWelcome = false) Write(new string(' ', targetWidth + shortNameWidth - 11)); Write("Passes custom properties to MSBuild"); WriteLine(); + } - 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 taskInstance = Activator.CreateInstance(taskType); + var helpInfo = taskInstance is IHelpProvider helpProvider ? helpProvider.GetHelp() : new HelpInfo(); - WriteHeader("TASKS:"); - var taskWidth = GetTaskNames().Max(name => name.Length) + 3; - foreach (var (taskName, taskDescription) in GetTasks()) - { - if (taskName.Equals("Default", StringComparison.OrdinalIgnoreCase)) - continue; + WriteHeader("Description:"); - if (taskDescription.StartsWith("OBSOLETE", StringComparison.OrdinalIgnoreCase)) - { - WriteObsolete(" " + taskName.PadRight(taskWidth)); - WriteObsolete(taskDescription); - } - else - { - WriteTask(" " + taskName.PadRight(taskWidth)); - Write(taskDescription); - } + WritePrefix(); + WriteLine($"Task '{taskName}'"); + if (!string.IsNullOrWhiteSpace(taskDescription)) + { + WritePrefix(); + WriteLine(taskDescription); + } - WriteLine(); + foreach (var line in helpInfo.Description) + { + WritePrefix(); + WriteLine(line); } - return; + WriteLine(); - void WritePrefix() => Write(" "); - void WriteTask(string message) => Write(message, ConsoleColor.Green); - void WriteOption(string message) => Write(message, ConsoleColor.Blue); - void WriteArg(string message) => Write(message, ConsoleColor.DarkYellow); - void WriteObsolete(string message) => Write(message, ConsoleColor.Gray); + WriteHeader("Usage:"); - void WriteHeader(string message) - { - WriteLine(message, ConsoleColor.DarkCyan); - } + WritePrefix(); + Write(ScriptName + " "); + WriteTask(taskName + " "); + WriteOption("[OPTIONS]"); + WriteLine(); - void Write(string message, ConsoleColor? color = null) + WriteLine(); + + WriteHeader("Examples:"); + + WritePrefix(); + Write(ScriptName + " "); + WriteTask(taskName); + WriteLine(); + + if (taskName.StartsWith("docs", StringComparison.OrdinalIgnoreCase)) { - if (color != null) - Console.ForegroundColor = color.Value; - Console.Write(message); - if (color != null) - Console.ResetColor(); + WritePrefix(); + Write(ScriptName + " "); + WriteTask("docs-" + taskName[4..].ToLowerInvariant()); + WriteLine(); } - - void WriteLine(string message = "", ConsoleColor? color = null) + else { - Write(message, color); - Console.WriteLine(); + WritePrefix(); + Write(ScriptName + " "); + WriteTask(taskName.ToLowerInvariant()); + WriteLine(); } + + WriteLine(); + + PrintCommonOptions(); } private static HashSet GetTaskNames() @@ -194,98 +326,41 @@ private static HashSet GetTaskNames() .ToList(); } + private static bool Is(string? arg, params string[] values) => + values.Any(value => value.Equals(arg, StringComparison.OrdinalIgnoreCase)); - public string[]? Parse(string[]? args) + private void PrintError(string text) { - if (args == null || args.Length == 0) - { - PrintHelp(); - return null; - } - - if (args.Length == 1) - { - if (IsOneOf(args[0], "help")) - { - PrintHelp(); - return null; - } - - if (IsOneOf(args[0], "help-cake")) - { - new CakeHost().UseContext().Run(new[] { "--help" }); - return null; - } - } - - var argsToProcess = new Queue(args); - - var taskName = argsToProcess.Dequeue(); - if (IsOneOf(taskName, "-t", "--target") && argsToProcess.Any()) - taskName = argsToProcess.Dequeue(); - - var taskNames = GetTaskNames(); - if (!taskNames.Contains(taskName)) - { - PrintError($"'{taskName}' is not a task"); - return null; - } - - var cakeArgs = new List - { - "--target", - taskName - }; - while (argsToProcess.Any()) - { - var arg = argsToProcess.Dequeue(); - - var matched = false; - foreach (var option in options) - { - if (IsOneOf(arg, option.ShortName, option.FullName)) - { - matched = true; - cakeArgs.Add(option.CakeOption); - if (option.Arg != "") - { - if (!argsToProcess.Any()) - { - PrintError(option.FullName + " is not specified"); - return null; - } - - cakeArgs.Add(argsToProcess.Dequeue()); - } - } - } + Console.ForegroundColor = ConsoleColor.Red; + Console.Error.WriteLine("ERROR: " + text); + Console.WriteLine(); + Console.ResetColor(); + PrintHelp(); + } - if (arg.StartsWith("/p:")) - { - matched = true; - cakeArgs.Add("--msbuild"); - cakeArgs.Add(arg[3..]); - } + 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); - if (!matched) - { - PrintError("Unknown option: " + arg); - return null; - } - } - - return cakeArgs.ToArray(); + private void WriteHeader(string message) + { + WriteLine(message, ConsoleColor.DarkCyan); } - bool IsOneOf(string arg, params string[] values) => - values.Any(value => value.Equals(arg, StringComparison.OrdinalIgnoreCase)); + private void Write(string message, ConsoleColor? color = null) + { + if (color != null) + Console.ForegroundColor = color.Value; + Console.Write(message); + if (color != null) + Console.ResetColor(); + } - void PrintError(string text) + private void WriteLine(string message = "", ConsoleColor? color = null) { - Console.ForegroundColor = ConsoleColor.Red; - Console.Error.WriteLine("ERROR: " + text); + Write(message, color); Console.WriteLine(); - Console.ResetColor(); - PrintHelp(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..8f93af63f9 --- /dev/null +++ b/build/BenchmarkDotNet.Build/HelpInfo.cs @@ -0,0 +1,8 @@ +using System; + +namespace BenchmarkDotNet.Build; + +public class HelpInfo +{ + public string[] Description { get; init; } = Array.Empty(); +} \ 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/Program.cs b/build/BenchmarkDotNet.Build/Program.cs index 4f9138bf08..715c37e3ae 100644 --- a/build/BenchmarkDotNet.Build/Program.cs +++ b/build/BenchmarkDotNet.Build/Program.cs @@ -1,3 +1,4 @@ +using BenchmarkDotNet.Build.Meta; using Cake.Common; using Cake.Frosting; @@ -84,9 +85,20 @@ public class CiTask : FrostingTask [TaskName("DocsUpdate")] [TaskDescription("Update generated documentation files")] -public class DocsUpdateTask : FrostingTask +public class DocsUpdateTask : FrostingTask, IHelpProvider { public override void Run(BuildContext context) => context.DocumentationRunner.Update(); + + public HelpInfo GetHelp() + { + return new HelpInfo + { + Description = new[] + { + $"Requires environment variable '{GitHubCredentials.TokenVariableName}'" + } + }; + } } [TaskName("DocsPrepare")] From 210020dcdd525a3513b3a9552884c34a1425df33 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Fri, 7 Jul 2023 14:46:25 +0200 Subject: [PATCH 36/73] Rework GitHub workflows --- ...-generate.yaml => generate-changelog.yaml} | 2 +- ...ocs-stable.yaml => generate-gh-pages.yaml} | 2 +- .github/workflows/report-test-results.yaml | 29 +++++++++++ .github/workflows/spellcheck.yml | 28 ---------- .github/workflows/{build.yaml => test.yaml} | 51 ++++++++----------- 5 files changed, 52 insertions(+), 60 deletions(-) rename .github/workflows/{docs-changelog-generate.yaml => generate-changelog.yaml} (96%) rename .github/workflows/{docs-stable.yaml => generate-gh-pages.yaml} (98%) create mode 100644 .github/workflows/report-test-results.yaml delete mode 100644 .github/workflows/spellcheck.yml rename .github/workflows/{build.yaml => test.yaml} (72%) diff --git a/.github/workflows/docs-changelog-generate.yaml b/.github/workflows/generate-changelog.yaml similarity index 96% rename from .github/workflows/docs-changelog-generate.yaml rename to .github/workflows/generate-changelog.yaml index 9afad1f814..b8171ef9bc 100644 --- a/.github/workflows/docs-changelog-generate.yaml +++ b/.github/workflows/generate-changelog.yaml @@ -1,4 +1,4 @@ -name: docs-changelog-generate +name: generate-changelog on: push: diff --git a/.github/workflows/docs-stable.yaml b/.github/workflows/generate-gh-pages.yaml similarity index 98% rename from .github/workflows/docs-stable.yaml rename to .github/workflows/generate-gh-pages.yaml index 089f6ed7b4..419b067703 100644 --- a/.github/workflows/docs-stable.yaml +++ b/.github/workflows/generate-gh-pages.yaml @@ -1,4 +1,4 @@ -name: docs-stable +name: generate-gh-pages on: push: diff --git a/.github/workflows/report-test-results.yaml b/.github/workflows/report-test-results.yaml new file mode 100644 index 0000000000..e5f7e2e7c2 --- /dev/null +++ b/.github/workflows/report-test-results.yaml @@ -0,0 +1,29 @@ +name: report-test-results + +on: + workflow_run: + workflows: [ 'main' ] + types: + - completed + +jobs: + report: + runs-on: ubuntu-latest + permissions: + id-token: write + contents: read + issues: write + pull-requests: write + steps: + - name: Download Artifacts + uses: actions/download-artifact@v3 + - name: Display structure of downloaded files + run: ls -R + - name: Report tests results + uses: AndreyAkinshin/test-reporter@0e2c48ebec2007001dd77dd4bcbcd450b96d5a38 + if: always() + with: + name: test-results + path: "**/*.trx" + reporter: dotnet-trx + fail-on-error: true \ 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/.github/workflows/build.yaml b/.github/workflows/test.yaml similarity index 72% rename from .github/workflows/build.yaml rename to .github/workflows/test.yaml index 14fca006b6..3958bec8a8 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/test.yaml @@ -1,14 +1,12 @@ -name: build +name: test on: pull_request: push: -permissions: write-all - jobs: - build-windows-core: + test-windows-core: runs-on: windows-latest steps: - name: Disable Windows Defender @@ -26,13 +24,13 @@ jobs: call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" ./build.cmd InTestsCore -e - name: Upload test results - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 if: always() with: - name: build-windows-core-trx + name: test-windows-core-trx path: "**/*.trx" - build-windows-full: + test-windows-full: runs-on: windows-latest steps: - name: Disable Windows Defender @@ -50,13 +48,13 @@ jobs: call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" ./build.cmd InTestsFull -e - name: Upload test results - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 if: always() with: - name: build-windows-full-trx + name: test-windows-full-trx path: "**/*.trx" - build-linux: + test-linux: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -74,13 +72,13 @@ jobs: - name: Run task 'InTestsCore' run: ./build.cmd InTestsCore -e - name: Upload test results - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 if: always() with: - name: build-linux-trx + name: test-linux-trx path: "**/*.trx" - build-macos: + test-macos: runs-on: macos-13 steps: - uses: actions/checkout@v3 @@ -91,28 +89,21 @@ jobs: - name: Run task 'InTestsCore' run: ./build.cmd InTestsCore -e - name: Upload test results - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 if: always() with: - name: build-macos-trx + name: test-macos-trx path: "**/*.trx" - report: - concurrency: ci-${{ github.ref }} - needs: [build-windows-full, build-windows-core, build-linux, build-macos] + docs-spellcheck: runs-on: ubuntu-latest - if: always() steps: - uses: actions/checkout@v3 - - name: Download Artifacts - uses: actions/download-artifact@v3 - - name: Display structure of downloaded files - run: ls -R - - name: Report tests results - uses: AndreyAkinshin/test-reporter@0e2c48ebec2007001dd77dd4bcbcd450b96d5a38 - if: always() + - uses: actions/setup-node@v1 + name: Setup node with: - name: test-results - path: "**/*.trx" - reporter: dotnet-trx - fail-on-error: true + 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 From c5fd22797fc60c1a1273c6f2d2a50007754da3d6 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Fri, 7 Jul 2023 15:47:08 +0200 Subject: [PATCH 37/73] Fix DocsUpdate --- build/BenchmarkDotNet.Build/ChangeLogBuilder.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs b/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs index 0180947a67..41bba947f0 100644 --- a/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs +++ b/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs @@ -58,7 +58,7 @@ private async Task Build() { var (currentVersion, previousVersion, lastCommit) = config; if (string.IsNullOrEmpty(lastCommit)) - lastCommit = currentVersion; + lastCommit = $"v{currentVersion}"; var client = new GitHubClient(new ProductHeaderValue(GitHubCredentials.ProductHeader)); var tokenAuth = new Credentials(GitHubCredentials.Token); @@ -182,7 +182,7 @@ public static async Task Run(DirectoryPath path, string currentVersion, string p { var config = new Config(currentVersion, previousVersion, lastCommit); var releaseNotes = await MarkdownBuilder.Build(config); - await File.WriteAllTextAsync(path.Combine(config.CurrentVersion + ".md").FullPath, releaseNotes); + await File.WriteAllTextAsync(path.Combine($"v{config.CurrentVersion}.md").FullPath, releaseNotes); } catch (Exception e) { From b6cbadc8ed0d8b1e5e7031b3b9b4fa5b76a49f3a Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Fri, 7 Jul 2023 15:51:12 +0200 Subject: [PATCH 38/73] Fix report-test-results.yaml --- .github/workflows/report-test-results.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/report-test-results.yaml b/.github/workflows/report-test-results.yaml index e5f7e2e7c2..e374637ff2 100644 --- a/.github/workflows/report-test-results.yaml +++ b/.github/workflows/report-test-results.yaml @@ -2,7 +2,7 @@ name: report-test-results on: workflow_run: - workflows: [ 'main' ] + workflows: [ 'test' ] types: - completed From 5195372aedcec414c1de2737ab28209d6b9c6bf6 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Fri, 7 Jul 2023 16:06:39 +0200 Subject: [PATCH 39/73] report-test-results.yaml: fix artifact download --- .github/workflows/report-test-results.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/report-test-results.yaml b/.github/workflows/report-test-results.yaml index e374637ff2..63f50c1794 100644 --- a/.github/workflows/report-test-results.yaml +++ b/.github/workflows/report-test-results.yaml @@ -16,12 +16,13 @@ jobs: pull-requests: write steps: - name: Download Artifacts - uses: actions/download-artifact@v3 + 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 - if: always() with: name: test-results path: "**/*.trx" From 81cf9fa31aff1369814900dd05136787b280aa0b Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Fri, 7 Jul 2023 16:13:16 +0200 Subject: [PATCH 40/73] report-test-results.yaml: fix permissions --- .github/workflows/report-test-results.yaml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/report-test-results.yaml b/.github/workflows/report-test-results.yaml index 63f50c1794..a286ce716e 100644 --- a/.github/workflows/report-test-results.yaml +++ b/.github/workflows/report-test-results.yaml @@ -9,11 +9,7 @@ on: jobs: report: runs-on: ubuntu-latest - permissions: - id-token: write - contents: read - issues: write - pull-requests: write + permissions: write-all steps: - name: Download Artifacts uses: dawidd6/action-download-artifact@v2 From e42dae62174261d7026ae676a8419ec503c252b0 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Fri, 7 Jul 2023 16:22:52 +0200 Subject: [PATCH 41/73] GitHub workflow rename --- .github/workflows/generate-changelog.yaml | 2 +- .github/workflows/generate-gh-pages.yaml | 2 +- .github/workflows/publish-nightly.yaml | 2 +- .github/workflows/report-test-results.yaml | 4 ++-- .github/workflows/{test.yaml => run-tests.yaml} | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) rename .github/workflows/{test.yaml => run-tests.yaml} (99%) diff --git a/.github/workflows/generate-changelog.yaml b/.github/workflows/generate-changelog.yaml index b8171ef9bc..c0fed6b27a 100644 --- a/.github/workflows/generate-changelog.yaml +++ b/.github/workflows/generate-changelog.yaml @@ -9,7 +9,7 @@ on: permissions: write-all jobs: - build: + generate: runs-on: ubuntu-latest steps: diff --git a/.github/workflows/generate-gh-pages.yaml b/.github/workflows/generate-gh-pages.yaml index 419b067703..797e09e11d 100644 --- a/.github/workflows/generate-gh-pages.yaml +++ b/.github/workflows/generate-gh-pages.yaml @@ -9,7 +9,7 @@ on: permissions: write-all jobs: - build: + generate: runs-on: windows-latest steps: diff --git a/.github/workflows/publish-nightly.yaml b/.github/workflows/publish-nightly.yaml index 8cdf355f61..ea9920fa0d 100644 --- a/.github/workflows/publish-nightly.yaml +++ b/.github/workflows/publish-nightly.yaml @@ -6,7 +6,7 @@ on: - master jobs: - main: + publish: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/report-test-results.yaml b/.github/workflows/report-test-results.yaml index a286ce716e..d6b376a48d 100644 --- a/.github/workflows/report-test-results.yaml +++ b/.github/workflows/report-test-results.yaml @@ -2,7 +2,7 @@ name: report-test-results on: workflow_run: - workflows: [ 'test' ] + workflows: [ 'run-tests' ] types: - completed @@ -20,7 +20,7 @@ jobs: - name: Report tests results uses: AndreyAkinshin/test-reporter@0e2c48ebec2007001dd77dd4bcbcd450b96d5a38 with: - name: test-results + name: report path: "**/*.trx" reporter: dotnet-trx fail-on-error: true \ No newline at end of file diff --git a/.github/workflows/test.yaml b/.github/workflows/run-tests.yaml similarity index 99% rename from .github/workflows/test.yaml rename to .github/workflows/run-tests.yaml index 3958bec8a8..eab97577ad 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/run-tests.yaml @@ -1,4 +1,4 @@ -name: test +name: run-tests on: pull_request: From 554b00c2bddd7c56f696b1d5d60a01a1e47f8e9a Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Fri, 7 Jul 2023 17:24:31 +0200 Subject: [PATCH 42/73] Update report-test-results.yaml --- .github/workflows/report-test-results.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/report-test-results.yaml b/.github/workflows/report-test-results.yaml index d6b376a48d..6972ecb0c3 100644 --- a/.github/workflows/report-test-results.yaml +++ b/.github/workflows/report-test-results.yaml @@ -11,6 +11,12 @@ jobs: runs-on: ubuntu-latest permissions: write-all steps: + - name: Print info about the target workflow_run + run : | + echo "workflow_run: ${{ github.event.workflow_run }}" + echo "head_sha: ${{ github.event.workflow_run.head_sha }}" + echo "workflow_id: ${{ github.event.workflow_run.workflow_id }}" + echo "head_branch: ${{ github.event.workflow_run.head_branch }}" - name: Download Artifacts uses: dawidd6/action-download-artifact@v2 with: From f3a799a2b732f7aaccee6c27220bc19483647397 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Fri, 7 Jul 2023 19:49:31 +0200 Subject: [PATCH 43/73] Update Github Actions workflow files --- .github/workflows/generate-changelog.yaml | 1 + .github/workflows/generate-gh-pages.yaml | 1 + .github/workflows/publish-nightly.yaml | 6 ++++++ .github/workflows/report-test-results.yaml | 7 +------ .github/workflows/run-tests.yaml | 3 ++- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/.github/workflows/generate-changelog.yaml b/.github/workflows/generate-changelog.yaml index c0fed6b27a..9589b92fc8 100644 --- a/.github/workflows/generate-changelog.yaml +++ b/.github/workflows/generate-changelog.yaml @@ -1,4 +1,5 @@ name: generate-changelog +run-name: Generate changelog / ${{ github.event.head_commit.message }} on: push: diff --git a/.github/workflows/generate-gh-pages.yaml b/.github/workflows/generate-gh-pages.yaml index 797e09e11d..a0f6218d4e 100644 --- a/.github/workflows/generate-gh-pages.yaml +++ b/.github/workflows/generate-gh-pages.yaml @@ -1,4 +1,5 @@ name: generate-gh-pages +run-name: Generate gh-pages / ${{ github.event.head_commit.message }} on: push: diff --git a/.github/workflows/publish-nightly.yaml b/.github/workflows/publish-nightly.yaml index ea9920fa0d..19907a81a0 100644 --- a/.github/workflows/publish-nightly.yaml +++ b/.github/workflows/publish-nightly.yaml @@ -1,4 +1,5 @@ name: publish-nightly +run-name: Publish nightly nupkg / ${{ github.event.head_commit.message }} on: push: @@ -14,6 +15,11 @@ jobs: 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 }} diff --git a/.github/workflows/report-test-results.yaml b/.github/workflows/report-test-results.yaml index 6972ecb0c3..81f9fb220b 100644 --- a/.github/workflows/report-test-results.yaml +++ b/.github/workflows/report-test-results.yaml @@ -1,4 +1,5 @@ name: report-test-results +run-name: Report test results for '${{ github.event.workflow_run.head_branch }}' / ${{ github.event.workflow_run.display_title }} on: workflow_run: @@ -11,12 +12,6 @@ jobs: runs-on: ubuntu-latest permissions: write-all steps: - - name: Print info about the target workflow_run - run : | - echo "workflow_run: ${{ github.event.workflow_run }}" - echo "head_sha: ${{ github.event.workflow_run.head_sha }}" - echo "workflow_id: ${{ github.event.workflow_run.workflow_id }}" - echo "head_branch: ${{ github.event.workflow_run.head_branch }}" - name: Download Artifacts uses: dawidd6/action-download-artifact@v2 with: diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml index eab97577ad..84653bf8a7 100644 --- a/.github/workflows/run-tests.yaml +++ b/.github/workflows/run-tests.yaml @@ -1,4 +1,5 @@ name: run-tests +run-name: Run tests / ${{ github.event.head_commit.message }} on: pull_request: @@ -95,7 +96,7 @@ jobs: name: test-macos-trx path: "**/*.trx" - docs-spellcheck: + spellcheck-docs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 From cca00937fbb59067cc920a60dee6d89d2dde8905 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Fri, 7 Jul 2023 19:52:53 +0200 Subject: [PATCH 44/73] Update report-test-results.yaml --- .github/workflows/report-test-results.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/report-test-results.yaml b/.github/workflows/report-test-results.yaml index 81f9fb220b..005465b329 100644 --- a/.github/workflows/report-test-results.yaml +++ b/.github/workflows/report-test-results.yaml @@ -1,5 +1,5 @@ name: report-test-results -run-name: Report test results for '${{ github.event.workflow_run.head_branch }}' / ${{ github.event.workflow_run.display_title }} +run-name: Report test results for '${{ github.event.workflow_run.head_branch }}' / ${{ github.event.workflow_run.head_commit.message }} on: workflow_run: From 28a19697c527863ba18e99826b28dc2214c0b689 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Fri, 7 Jul 2023 23:26:18 +0200 Subject: [PATCH 45/73] Disable AppVeyor integration --- README.md | 1 - appveyor.yml | 46 ------------------- build/BenchmarkDotNet.Build/BuildContext.cs | 12 +---- build/BenchmarkDotNet.Build/Program.cs | 3 +- build/common.props | 5 +- build/uploadtests.ps1 | 37 --------------- docs/_changelog/header/v0.13.0.md | 10 ---- .../BenchmarkSwitcherTest.cs | 3 -- .../ContinuousIntegration.cs | 7 +-- .../CustomBuildConfigurationTests.cs | 3 -- .../MemoryDiagnoserTests.cs | 5 -- .../MonoTests.cs | 3 -- .../NativeAotTests.cs | 2 - .../RunStrategyTests.cs | 3 -- .../ThreadingDiagnoserTests.cs | 3 +- 15 files changed, 6 insertions(+), 137 deletions(-) delete mode 100644 appveyor.yml delete mode 100644 build/uploadtests.ps1 diff --git a/README.md b/README.md index eef8e04684..5b4d3aee9a 100644 --- a/README.md +++ b/README.md @@ -289,7 +289,6 @@ You will avoid common pitfalls, control the accuracy of your measurements, and i | Azure Pipelines | Windows | [![Azure 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 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 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 | * | [![GitHub Actions](https://github.com/dotnet/BenchmarkDotNet/actions/workflows/build.yaml/badge.svg)](https://github.com/dotnet/BenchmarkDotNet/actions/workflows/build.yaml) | ## Contributions are welcome! diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index 2960c99409..0000000000 --- a/appveyor.yml +++ /dev/null @@ -1,46 +0,0 @@ -#---------------------------------# -# general configuration # -#---------------------------------# - -# version format -version: 0.13.5.{build} - -# branches to build -branches: - # blacklist - except: - - gh-pages - - docs-changelog-details - -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.cmd CI - -test: off -deploy: off - -artifacts: - - path: '**\BenchmarkDotNet.*.*nupkg' # find all NuGet packages recursively \ No newline at end of file diff --git a/build/BenchmarkDotNet.Build/BuildContext.cs b/build/BenchmarkDotNet.Build/BuildContext.cs index a256f4a4d1..fc7cf3c59f 100644 --- a/build/BenchmarkDotNet.Build/BuildContext.cs +++ b/build/BenchmarkDotNet.Build/BuildContext.cs @@ -7,7 +7,6 @@ using BenchmarkDotNet.Build.Runners; 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; @@ -38,16 +37,7 @@ public class BuildContext : FrostingContext 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; + private bool IsCiBuild => !this.BuildSystem().IsLocalBuild; public VersionHistory VersionHistory { get; } diff --git a/build/BenchmarkDotNet.Build/Program.cs b/build/BenchmarkDotNet.Build/Program.cs index 715c37e3ae..eaff56db0c 100644 --- a/build/BenchmarkDotNet.Build/Program.cs +++ b/build/BenchmarkDotNet.Build/Program.cs @@ -43,8 +43,7 @@ public class UnitTestsTask : FrostingTask [IsDependentOn(typeof(BuildTask))] public class InTestsFullTask : FrostingTask { - public override bool ShouldRun(BuildContext context) => - context.IsRunningOnWindows() && !context.IsRunningOnAppVeyor; + public override bool ShouldRun(BuildContext context) => context.IsRunningOnWindows(); public override void Run(BuildContext context) => context.UnitTestRunner.RunInTests("net462"); } diff --git a/build/common.props b/build/common.props index 726da55db6..79a3d883e4 100644 --- a/build/common.props +++ b/build/common.props @@ -38,12 +38,11 @@ 0.13.5 - $(VersionPrefix).$(APPVEYOR_BUILD_NUMBER) - + develop - ci + ci 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/docs/_changelog/header/v0.13.0.md b/docs/_changelog/header/v0.13.0.md index 1f516ed4cd..d0fca1471d 100644 --- a/docs/_changelog/header/v0.13.0.md +++ b/docs/_changelog/header/v0.13.0.md @@ -257,16 +257,6 @@ IConfig after = ManualConfig.CreateMinimumViable(); In [#1659](https://github.com/dotnet/BenchmarkDotNet/pull/1659/) [@workgroupengineering](https://github.com/workgroupengineering) added the possibility to indicate the source of the tested nuget package and whether it is a pre-release version. -```cs -IConfig config = DefaultConfig.Instance - .AddJob(Job.Default - .WithNuGet("BenchmarkDotNet", "0.13.0", new Uri("https://api.nuget.org/v3/index.json")) - .WithId("0.13.0")) - .AddJob(Job.Default - .WithNuGet("BenchmarkDotNet", "0.12.1.1534", new Uri("https://ci.appveyor.com/nuget/benchmarkdotnet"), prerelease: true) - .WithId("0.12.1.1534")); -``` - ### Deterministic benchmark builds BenchmarkDotNet is now always enforcing Deterministic builds ([#1489](https://github.com/dotnet/BenchmarkDotNet/pull/1489)) and Optimizations enabled ([#1494](https://github.com/dotnet/BenchmarkDotNet/pull/1494)) which is a must-have if you are using custom build configurations. MSBuild enforces optimizations **only** for configurations that are named `Release` (the comparison is case-insensitive). 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/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") From bd89a00434a3a4315ecc27adf79b491b8b08ee8c Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Fri, 7 Jul 2023 23:32:19 +0200 Subject: [PATCH 46/73] Disable Azure Pipelines integration --- README.md | 9 -------- azure-pipelines.Ubuntu.yml | 23 ------------------ azure-pipelines.Windows.yml | 16 ------------- azure-pipelines.macOS.yml | 16 ------------- build/azure-pipelines.job.template.yml | 32 -------------------------- 5 files changed, 96 deletions(-) delete mode 100755 azure-pipelines.Ubuntu.yml delete mode 100755 azure-pipelines.Windows.yml delete mode 100755 azure-pipelines.macOS.yml delete mode 100644 build/azure-pipelines.job.template.yml diff --git a/README.md b/README.md index 5b4d3aee9a..f402f5fb45 100644 --- a/README.md +++ b/README.md @@ -282,15 +282,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 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 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 macOS](https://dev.azure.com/dotnet/BenchmarkDotNet/_apis/build/status/BenchmarkDotNet%20-%20macOS)](https://dev.azure.com/dotnet/BenchmarkDotNet/_build/latest?definitionId=57) | -| GitHub Actions | * | [![GitHub Actions](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. diff --git a/azure-pipelines.Ubuntu.yml b/azure-pipelines.Ubuntu.yml deleted file mode 100755 index a16a5446d5..0000000000 --- a/azure-pipelines.Ubuntu.yml +++ /dev/null @@ -1,23 +0,0 @@ -trigger: - branches: - include: - - master - exclude: - - gh-pages - - docs-changelog-details - -name: $(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r) - -jobs: -- template: build/azure-pipelines.job.template.yml - parameters: - name: Ubuntu - vmImage: 'ubuntu-20.04' - scriptFileName: ./build.cmd CI - 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 34e23807f0..0000000000 --- a/azure-pipelines.Windows.yml +++ /dev/null @@ -1,16 +0,0 @@ -trigger: - branches: - include: - - master - exclude: - - gh-pages - - docs-changelog-details - -name: $(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r) - -jobs: -- template: build/azure-pipelines.job.template.yml - parameters: - name: Windows - vmImage: 'windows-2019' - scriptFileName: .\build.cmd CI \ No newline at end of file diff --git a/azure-pipelines.macOS.yml b/azure-pipelines.macOS.yml deleted file mode 100755 index 19a34556f4..0000000000 --- a/azure-pipelines.macOS.yml +++ /dev/null @@ -1,16 +0,0 @@ -trigger: - branches: - include: - - master - exclude: - - gh-pages - - docs-changelog-details - -name: $(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r) - -jobs: -- template: build/azure-pipelines.job.template.yml - parameters: - name: macOS - vmImage: 'macOS-latest' - scriptFileName: ./build.cmd CI diff --git a/build/azure-pipelines.job.template.yml b/build/azure-pipelines.job.template.yml deleted file mode 100644 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 From 1e9c998a2dfaae432c8789f0b93309bc1e133ece Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Sat, 8 Jul 2023 00:04:56 +0200 Subject: [PATCH 47/73] Update version handling in build properties Modified common.props and CommandLineParser.cs to handle stable versions. The changes in common.props split the versioning into two parts: VersionPrefix and VersionSuffix. If the VersionStable property isn't set, the VersionSuffix is set to "develop" or "ci". In CommandLineParser.cs, build task arguments are modified to write VersionPrefix and VersionSuffix separately. This provides more granular control over product versioning. --- build/BenchmarkDotNet.Build/CommandLineParser.cs | 8 ++++++-- build/common.props | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/build/BenchmarkDotNet.Build/CommandLineParser.cs b/build/BenchmarkDotNet.Build/CommandLineParser.cs index 122dffa1a8..95dc065875 100644 --- a/build/BenchmarkDotNet.Build/CommandLineParser.cs +++ b/build/BenchmarkDotNet.Build/CommandLineParser.cs @@ -154,9 +154,13 @@ private void PrintHelp() Write(ScriptName + " "); WriteTask("pack "); WriteOption("/p:"); - WriteArg("Version"); + WriteArg("VersionPrefix"); WriteOption("="); - WriteArg("0.1.1729-preview"); + WriteArg("0.1.1729"); + WriteOption(" /p:"); + WriteArg("VersionSuffix"); + WriteOption("="); + WriteArg("preview"); WriteLine(); WritePrefix(); diff --git a/build/common.props b/build/common.props index 79a3d883e4..808e8a43a4 100644 --- a/build/common.props +++ b/build/common.props @@ -40,7 +40,7 @@ 0.13.5 - + develop ci From d4c70ed186ce095ad83d9bf7f883905da314babd Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Sat, 8 Jul 2023 00:06:08 +0200 Subject: [PATCH 48/73] Update version prefix to 0.13.6 Now the default version references the upcoming version instead of the last stable version --- build/common.props | 2 +- .../.template.config/template.json | 2 +- .../.template.config/template.json | 2 +- .../.template.config/template.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build/common.props b/build/common.props index 808e8a43a4..f88bc9435e 100644 --- a/build/common.props +++ b/build/common.props @@ -37,7 +37,7 @@ - 0.13.5 + 0.13.6 diff --git a/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.CSharp/.template.config/template.json b/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.CSharp/.template.config/template.json index 1dadbd681b..3e6fd1107c 100644 --- a/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.CSharp/.template.config/template.json +++ b/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.CSharp/.template.config/template.json @@ -144,7 +144,7 @@ "type": "parameter", "datatype": "string", "description": "Version of BenchmarkDotNet that will be referenced.", - "defaultValue": "0.13.5", + "defaultValue": "0.13.6", "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 fe80939f35..aeb5503a79 100644 --- a/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.FSharp/.template.config/template.json +++ b/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.FSharp/.template.config/template.json @@ -144,7 +144,7 @@ "type": "parameter", "datatype": "string", "description": "Version of BenchmarkDotNet that will be referenced.", - "defaultValue": "0.13.5", + "defaultValue": "0.13.6", "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 bb0873fa1b..72d361290a 100644 --- a/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.VB/.template.config/template.json +++ b/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.VB/.template.config/template.json @@ -144,7 +144,7 @@ "type": "parameter", "datatype": "string", "description": "Version of BenchmarkDotNet that will be referenced.", - "defaultValue": "0.13.5", + "defaultValue": "0.13.6", "replaces": "$(BenchmarkDotNetVersion)" } }, From bf020e9cd675c0388ac61347567f5307c7980097 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Sat, 8 Jul 2023 00:53:40 +0200 Subject: [PATCH 49/73] Automatically update changelog footer --- build/BenchmarkDotNet.Build/BuildContext.cs | 17 ++++++++ .../Meta/VersionHistory.cs | 4 +- .../Runners/DocumentationRunner.cs | 39 ++++++++++++++++--- docs/_changelog/footer/v0.13.6.md | 6 +-- 4 files changed, 55 insertions(+), 11 deletions(-) diff --git a/build/BenchmarkDotNet.Build/BuildContext.cs b/build/BenchmarkDotNet.Build/BuildContext.cs index fc7cf3c59f..4b98174137 100644 --- a/build/BenchmarkDotNet.Build/BuildContext.cs +++ b/build/BenchmarkDotNet.Build/BuildContext.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; @@ -24,6 +25,7 @@ public class BuildContext : FrostingContext public string BuildConfiguration { get; set; } = "Release"; public DotNetVerbosity BuildVerbosity { get; set; } = DotNetVerbosity.Minimal; public int Depth { get; set; } + public bool VersionStable { get; } public DirectoryPath RootDirectory { get; } public DirectoryPath BuildDirectory { get; } @@ -39,6 +41,8 @@ public class BuildContext : FrostingContext private bool IsCiBuild => !this.BuildSystem().IsLocalBuild; + public IReadOnlyCollection NuGetPackageNames { get; } + public VersionHistory VersionHistory { get; } public UnitTestRunner UnitTestRunner { get; } @@ -73,6 +77,7 @@ public BuildContext(ICakeContext context) } Depth = -1; + VersionStable = false; if (context.Arguments.HasArgument("msbuild")) { var msBuildParameters = context.Arguments.GetArguments().First(it => it.Key == "msbuild").Value; @@ -99,6 +104,9 @@ public BuildContext(ICakeContext context) if (name.Equals("depth", StringComparison.OrdinalIgnoreCase)) Depth = int.Parse(value); + + if (name.Equals("VersionStable", StringComparison.OrdinalIgnoreCase) && value != "") + VersionStable = true; } } } @@ -112,6 +120,15 @@ public BuildContext(ICakeContext context) 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, BuildDirectory.CombineWithFilePath("versions.txt")); UnitTestRunner = new UnitTestRunner(this); diff --git a/build/BenchmarkDotNet.Build/Meta/VersionHistory.cs b/build/BenchmarkDotNet.Build/Meta/VersionHistory.cs index 41fe5b702d..f7637e7439 100644 --- a/build/BenchmarkDotNet.Build/Meta/VersionHistory.cs +++ b/build/BenchmarkDotNet.Build/Meta/VersionHistory.cs @@ -8,13 +8,13 @@ public class VersionHistory { public string FirstCommit { get; } public string[] StableVersions { get; } - public string NextVersion { 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(); - NextVersion = lines.Last(); + CurrentVersion = lines.Last(); StableVersions = lines.Skip(1).SkipLast(1).ToArray(); } } \ No newline at end of file diff --git a/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs b/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs index cf3065cb10..5301713873 100644 --- a/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs +++ b/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs @@ -1,4 +1,5 @@ using System; +using System.Globalization; using System.IO; using System.Linq; using System.Text; @@ -26,6 +27,7 @@ public class DocumentationRunner private readonly FilePath changelogIndexFile; private readonly FilePath changelogFullFile; private readonly FilePath changelogTocFile; + private readonly FilePath lastFooterFile; public DocumentationRunner(BuildContext context) { @@ -34,8 +36,8 @@ public DocumentationRunner(BuildContext context) var docsDirectory = context.RootDirectory.Combine("docs"); changelogDirectory = docsDirectory.Combine("changelog"); changelogSrcDirectory = docsDirectory.Combine("_changelog"); - docsGeneratedDirectory = docsDirectory.Combine("_site"); changelogDetailsDirectory = changelogSrcDirectory.Combine("details"); + docsGeneratedDirectory = docsDirectory.Combine("_site"); redirectFile = docsDirectory.Combine("_redirects").CombineWithFilePath("_redirects"); docfxJsonFile = docsDirectory.CombineWithFilePath("docfx.json"); @@ -44,13 +46,16 @@ public DocumentationRunner(BuildContext context) 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() { - EnsureChangelogDetailsExist(); - ReadmeUpdater.Run(context); + UpdateLastFooter(); + + EnsureChangelogDetailsExist(); if (string.IsNullOrEmpty(GitHubCredentials.Token)) throw new Exception($"Environment variable '{GitHubCredentials.TokenVariableName}' is not specified!"); @@ -79,17 +84,16 @@ public void Update() } DocfxChangelogDownload( - history.NextVersion, + history.CurrentVersion, history.StableVersions.Last(), "HEAD"); } - public void Prepare() { foreach (var version in context.VersionHistory.StableVersions) DocfxChangelogGenerate(version); - DocfxChangelogGenerate(context.VersionHistory.NextVersion); + DocfxChangelogGenerate(context.VersionHistory.CurrentVersion); GenerateIndexMd(); GenerateChangelogIndex(); @@ -263,4 +267,27 @@ private void GenerateRedirects() context.GenerateFile(fullFilePath, content); } } + + private void UpdateLastFooter() + { + var version = context.VersionHistory.CurrentVersion; + var previousVersion = context.VersionHistory.StableVersions.Last(); + var date = context.VersionStable + ? 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/docs/_changelog/footer/v0.13.6.md b/docs/_changelog/footer/v0.13.6.md index a795c8a07e..f78501ac1d 100644 --- a/docs/_changelog/footer/v0.13.6.md +++ b/docs/_changelog/footer/v0.13.6.md @@ -5,7 +5,7 @@ _Milestone: [v0.13.6](https://github.com/dotnet/BenchmarkDotNet/issues?q=milesto _NuGet Packages:_ * https://www.nuget.org/packages/BenchmarkDotNet/0.13.6 -* https://www.nuget.org/packages/BenchmarkDotNet.Diagnostics.Windows/0.13.6 -* https://www.nuget.org/packages/BenchmarkDotNet.Diagnostics.dotTrace/0.13.6 * https://www.nuget.org/packages/BenchmarkDotNet.Annotations/0.13.6 -* https://www.nuget.org/packages/BenchmarkDotNet.Templates/0.13.6 \ No newline at end of file +* https://www.nuget.org/packages/BenchmarkDotNet.Diagnostics.dotTrace/0.13.6 +* https://www.nuget.org/packages/BenchmarkDotNet.Diagnostics.Windows/0.13.6 +* https://www.nuget.org/packages/BenchmarkDotNet.Templates/0.13.6 From 3b361e3294bde9e54a82f9e3d007a5f8676457d5 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Sat, 8 Jul 2023 01:59:03 +0200 Subject: [PATCH 50/73] Add Release build task --- build/BenchmarkDotNet.Build/BuildContext.cs | 49 ++--- .../BenchmarkDotNet.Build/ChangeLogBuilder.cs | 4 +- .../Meta/GitHubCredentials.cs | 9 + build/BenchmarkDotNet.Build/Meta/Repo.cs | 3 + build/BenchmarkDotNet.Build/Program.cs | 11 ++ .../Runners/BuildRunner.cs | 13 ++ .../Runners/DocumentationRunner.cs | 37 ++-- .../Runners/GitRunner.cs | 106 ++++++++++ .../Runners/ReleaseRunner.cs | 182 ++++++++++++++++++ 9 files changed, 367 insertions(+), 47 deletions(-) create mode 100644 build/BenchmarkDotNet.Build/Runners/GitRunner.cs create mode 100644 build/BenchmarkDotNet.Build/Runners/ReleaseRunner.cs diff --git a/build/BenchmarkDotNet.Build/BuildContext.cs b/build/BenchmarkDotNet.Build/BuildContext.cs index 4b98174137..d7b12205f9 100644 --- a/build/BenchmarkDotNet.Build/BuildContext.cs +++ b/build/BenchmarkDotNet.Build/BuildContext.cs @@ -26,6 +26,8 @@ public class BuildContext : FrostingContext public DotNetVerbosity BuildVerbosity { get; set; } = DotNetVerbosity.Minimal; public int Depth { get; set; } public bool VersionStable { get; } + public string NextVersion { get; } + public bool PushMode { get; } public DirectoryPath RootDirectory { get; } public DirectoryPath BuildDirectory { get; } @@ -34,6 +36,8 @@ public class BuildContext : FrostingContext public FilePath SolutionFile { get; } public FilePath TemplatesTestsProjectFile { get; } public FilePathCollection AllPackableSrcProjects { get; } + public FilePath VersionsFile { get; } + public FilePath CommonPropsFile { get; } public DotNetMSBuildSettings MsBuildSettingsRestore { get; } public DotNetMSBuildSettings MsBuildSettingsBuild { get; } @@ -45,9 +49,11 @@ public class BuildContext : FrostingContext 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) @@ -64,6 +70,9 @@ public BuildContext(ICakeContext context) 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"); + MsBuildSettingsRestore = new DotNetMSBuildSettings(); MsBuildSettingsBuild = new DotNetMSBuildSettings(); MsBuildSettingsPack = new DotNetMSBuildSettings(); @@ -78,6 +87,8 @@ public BuildContext(ICakeContext context) Depth = -1; VersionStable = false; + NextVersion = ""; + PushMode = false; if (context.Arguments.HasArgument("msbuild")) { var msBuildParameters = context.Arguments.GetArguments().First(it => it.Key == "msbuild").Value; @@ -107,6 +118,12 @@ public BuildContext(ICakeContext context) if (name.Equals("VersionStable", StringComparison.OrdinalIgnoreCase) && value != "") VersionStable = true; + + if (name.Equals("NextVersion", StringComparison.OrdinalIgnoreCase) && value != "") + NextVersion = value; + + if (name.Equals("PushMode", StringComparison.OrdinalIgnoreCase) && value != "") + PushMode = true; } } } @@ -129,11 +146,13 @@ public BuildContext(ICakeContext context) nuGetPackageNames.Sort(); NuGetPackageNames = nuGetPackageNames; - VersionHistory = new VersionHistory(this, BuildDirectory.CombineWithFilePath("versions.txt")); + 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) @@ -160,32 +179,4 @@ public void GenerateFile(FilePath filePath, string content) } } - public void Clone(DirectoryPath path, string repoUrl, string branchName) - { - this.Information($"[GitClone]"); - this.Information($" Repo: {repoUrl}"); - this.Information($" Branch: {branchName}"); - this.Information($" Path: {path}"); - var settings = new GitCloneSettings { Checkout = true, BranchName = branchName }; - try - { - this.GitClone(repoUrl, path, settings); - this.Information(" Success"); - } - catch (Exception e) - { - this.Error($" Failed to clone via API (Exception: {e.GetType().Name})'"); - try - { - var gitArgs = $"clone -b {branchName} {repoUrl} {path}"; - this.Information($" Trying to clone manually using 'git {gitArgs}'"); - this.StartProcess("git", gitArgs); - this.Information(" Success"); - } - catch (Exception e2) - { - throw new Exception($"Failed to clone {repoUrl} to {path} (branch: '{branchName})'", e2); - } - } - } } \ No newline at end of file diff --git a/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs b/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs index 41bba947f0..ce628d09d6 100644 --- a/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs +++ b/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs @@ -60,9 +60,7 @@ private async Task Build() if (string.IsNullOrEmpty(lastCommit)) lastCommit = $"v{currentVersion}"; - var client = new GitHubClient(new ProductHeaderValue(GitHubCredentials.ProductHeader)); - var tokenAuth = new Credentials(GitHubCredentials.Token); - client.Credentials = tokenAuth; + var client = GitHubCredentials.CreateClient(); if (currentVersion == "_") { diff --git a/build/BenchmarkDotNet.Build/Meta/GitHubCredentials.cs b/build/BenchmarkDotNet.Build/Meta/GitHubCredentials.cs index dc09bce5ab..c174784417 100644 --- a/build/BenchmarkDotNet.Build/Meta/GitHubCredentials.cs +++ b/build/BenchmarkDotNet.Build/Meta/GitHubCredentials.cs @@ -1,4 +1,5 @@ using System; +using Octokit; namespace BenchmarkDotNet.Build.Meta; @@ -8,4 +9,12 @@ public static class GitHubCredentials public const string ProductHeader = "BenchmarkDotNet"; public static string? Token => Environment.GetEnvironmentVariable(TokenVariableName); + + public static GitHubClient CreateClient() + { + var client = new GitHubClient(new ProductHeaderValue(ProductHeader)); + var tokenAuth = new Credentials(Token); + client.Credentials = tokenAuth; + return client; + } } \ No newline at end of file diff --git a/build/BenchmarkDotNet.Build/Meta/Repo.cs b/build/BenchmarkDotNet.Build/Meta/Repo.cs index 4eace53e81..ec1231a9d0 100644 --- a/build/BenchmarkDotNet.Build/Meta/Repo.cs +++ b/build/BenchmarkDotNet.Build/Meta/Repo.cs @@ -6,5 +6,8 @@ public static class Repo 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"; } \ No newline at end of file diff --git a/build/BenchmarkDotNet.Build/Program.cs b/build/BenchmarkDotNet.Build/Program.cs index eaff56db0c..42cc824d1a 100644 --- a/build/BenchmarkDotNet.Build/Program.cs +++ b/build/BenchmarkDotNet.Build/Program.cs @@ -119,6 +119,17 @@ public class DocsBuildTask : FrostingTask public override void Run(BuildContext context) => context.DocumentationRunner.Build(); } +[TaskName("Release")] +[TaskDescription("Release new version")] +[IsDependentOn(typeof(BuildTask))] +[IsDependentOn(typeof(PackTask))] +[IsDependentOn(typeof(DocsUpdateTask))] +[IsDependentOn(typeof(DocsBuildTask))] +public class ReleaseTask : FrostingTask +{ + public override void Run(BuildContext context) => context.ReleaseRunner.Run(); +} + [TaskName("FastTests")] [TaskDescription("OBSOLETE: use 'UnitTests'")] [IsDependentOn(typeof(UnitTestsTask))] diff --git a/build/BenchmarkDotNet.Build/Runners/BuildRunner.cs b/build/BenchmarkDotNet.Build/Runners/BuildRunner.cs index 8ef40475d0..01c490fce3 100644 --- a/build/BenchmarkDotNet.Build/Runners/BuildRunner.cs +++ b/build/BenchmarkDotNet.Build/Runners/BuildRunner.cs @@ -6,6 +6,7 @@ using Cake.Common.Tools.DotNet.Pack; using Cake.Common.Tools.DotNet.Restore; using Cake.Core; +using Cake.Core.IO; namespace BenchmarkDotNet.Build.Runners; @@ -40,6 +41,18 @@ public void Build() }); } + 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); diff --git a/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs b/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs index 5301713873..10ea30f64f 100644 --- a/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs +++ b/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs @@ -15,8 +15,8 @@ public class DocumentationRunner { private readonly BuildContext context; - private readonly DirectoryPath changelogDirectory; - private readonly DirectoryPath changelogSrcDirectory; + public DirectoryPath ChangelogDirectory { get; } + public DirectoryPath ChangelogSrcDirectory { get; } private readonly DirectoryPath changelogDetailsDirectory; private readonly DirectoryPath docsGeneratedDirectory; @@ -34,19 +34,19 @@ public DocumentationRunner(BuildContext context) this.context = context; var docsDirectory = context.RootDirectory.Combine("docs"); - changelogDirectory = docsDirectory.Combine("changelog"); - changelogSrcDirectory = docsDirectory.Combine("_changelog"); - changelogDetailsDirectory = changelogSrcDirectory.Combine("details"); + 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") + 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"); } @@ -132,6 +132,10 @@ private void GenerateIndexMd() private void GenerateChangelogToc() { var content = new StringBuilder(); + + content.AppendLine($"- name: {context.VersionHistory.CurrentVersion}"); + content.AppendLine($" href: {context.VersionHistory.CurrentVersion}.md"); + foreach (var version in context.VersionHistory.StableVersions.Reverse()) { content.AppendLine($"- name: {version}"); @@ -153,6 +157,8 @@ private void GenerateChangelogFull() content.AppendLine(""); content.AppendLine("# Full ChangeLog"); content.AppendLine(""); + content.AppendLine( + $"[!include[{context.VersionHistory.CurrentVersion}]({context.VersionHistory.CurrentVersion}.md)]"); foreach (var version in context.VersionHistory.StableVersions.Reverse()) content.AppendLine($"[!include[{version}]({version}.md)]"); @@ -168,6 +174,7 @@ private void GenerateChangelogIndex() content.AppendLine(""); content.AppendLine("# ChangeLog"); content.AppendLine(""); + content.AppendLine($"* @changelog.{context.VersionHistory.CurrentVersion}"); foreach (var version in context.VersionHistory.StableVersions.Reverse()) content.AppendLine($"* @changelog.{version}"); content.AppendLine("* @changelog.full"); @@ -178,10 +185,10 @@ private void GenerateChangelogIndex() private void DocfxChangelogGenerate(string version) { EnsureChangelogDetailsExist(); - var header = changelogSrcDirectory.Combine("header").CombineWithFilePath(version + ".md"); - var footer = changelogSrcDirectory.Combine("footer").CombineWithFilePath(version + ".md"); - var details = changelogSrcDirectory.Combine("details").CombineWithFilePath(version + ".md"); - var release = changelogDirectory.CombineWithFilePath(version + ".md"); + var header = ChangelogSrcDirectory.Combine("header").CombineWithFilePath(version + ".md"); + var footer = ChangelogSrcDirectory.Combine("footer").CombineWithFilePath(version + ".md"); + var details = ChangelogSrcDirectory.Combine("details").CombineWithFilePath(version + ".md"); + var release = ChangelogDirectory.CombineWithFilePath(version + ".md"); var content = new StringBuilder(); content.AppendLine("---"); @@ -224,7 +231,7 @@ private void EnsureChangelogDetailsExist(bool forceClean = false) new DeleteDirectorySettings { Force = true, Recursive = true }); if (!context.DirectoryExists(changelogDetailsDirectory)) - context.Clone(changelogDetailsDirectory, Repo.HttpsGitUrl, Repo.ChangelogDetailsBranch); + context.GitRunner.Clone(changelogDetailsDirectory, Repo.HttpsGitUrl, Repo.ChangelogDetailsBranch); } private void DocfxChangelogDownload(string version, string versionPrevious, string lastCommit = "") @@ -273,7 +280,7 @@ private void UpdateLastFooter() var version = context.VersionHistory.CurrentVersion; var previousVersion = context.VersionHistory.StableVersions.Last(); var date = context.VersionStable - ? DateTime.Now.ToString("MMMM dd, yyyy", CultureInfo.InvariantCulture) + ? DateTime.Now.ToString("MMMM dd, yyyy", CultureInfo.InvariantCulture) : "TBA"; var content = new StringBuilder(); diff --git a/build/BenchmarkDotNet.Build/Runners/GitRunner.cs b/build/BenchmarkDotNet.Build/Runners/GitRunner.cs new file mode 100644 index 0000000000..0fd1ae5640 --- /dev/null +++ b/build/BenchmarkDotNet.Build/Runners/GitRunner.cs @@ -0,0 +1,106 @@ +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}"); + if (context.PushMode) + { + var forceFlag = force ? " --force" : ""; + RunCommand($"push origin {target}{forceFlag}"); + } + else + context.Information(" Skip because PushMode is disabled"); + } + + 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..44a2377d0b --- /dev/null +++ b/build/BenchmarkDotNet.Build/Runners/ReleaseRunner.cs @@ -0,0 +1,182 @@ +using System; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using BenchmarkDotNet.Build.Meta; +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() + { + var nextVersion = context.NextVersion; + var currentVersion = context.VersionHistory.CurrentVersion; + var isStable = context.VersionStable; + var tag = "v" + currentVersion; + + if (string.IsNullOrEmpty(nextVersion)) + throw new Exception("NextVersion is not specified"); + if (!isStable) + throw new Exception("VersionStable is not specified"); + if (string.IsNullOrEmpty(GitHubCredentials.Token)) + throw new Exception($"Environment variable '{GitHubCredentials.TokenVariableName}' is not specified!"); + if (string.IsNullOrEmpty(Environment.GetEnvironmentVariable("NUGET_TOKEN"))) + throw new Exception($"Environment variable 'NUGET_TOKEN' is not specified!"); + + context.GitRunner.Tag(tag); + context.GitRunner.BranchMove(Repo.DocsStableBranch, "HEAD"); + + // Upgrade current version and commit changes + UpdateVersionsTxt(); + UpdateCommonProps(); + context.Information($"Building {context.TemplatesTestsProjectFile}"); + context.BuildRunner.BuildProjectSilent(context.TemplatesTestsProjectFile); + context.GitRunner.Commit($"Set next BenchmarkDotNet version: {nextVersion}"); + + UpdateMilestones().Wait(); + + context.GitRunner.Push(Repo.MasterBranch); + context.GitRunner.Push(Repo.DocsStableBranch, true); + context.GitRunner.Push(tag); + + PushNupkg(); + + PublishGitHubRelease().Wait(); + } + + private void UpdateVersionsTxt() + { + var content = context.FileReadText(context.VersionsFile).Trim(); + context.GenerateFile(context.VersionsFile, $"{content}\n{context.NextVersion}"); + } + + private void UpdateCommonProps() + { + var regex = new Regex(@"([\d\.]+)"); + + var content = context.FileReadText(context.CommonPropsFile); + var match = regex.Match(content); + if (!match.Success) + throw new Exception($"Failed to find VersionPrefix definition in {context.CommonPropsFile}"); + + var oldVersion = match.Groups[1].Value; + context.GenerateFile(context.CommonPropsFile, content.Replace(oldVersion, context.NextVersion)); + } + + private async Task UpdateMilestones() + { + var currentVersion = context.VersionHistory.CurrentVersion; + var nextVersion = context.NextVersion; + + var client = GitHubCredentials.CreateClient(); + 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}"); + if (context.PushMode) + { + await client.Issue.Milestone.Update(Repo.Owner, Repo.Name, currentMilestone.Number, + new MilestoneUpdate { State = ItemState.Closed, DueOn = DateTimeOffset.Now }); + } + else + { + context.Information(" Skip because PushMode is disabled"); + } + + context.Information($"[GitHub] Create milestone v{nextVersion}"); + if (context.PushMode) + { + await client.Issue.Milestone.Create(Repo.Owner, Repo.Name, new NewMilestone($"v{nextVersion}")); + } + else + { + context.Information(" Skip because PushMode is disabled"); + } + } + + private void PushNupkg() + { + var nuGetToken = Environment.GetEnvironmentVariable("NUGET_TOKEN"); + + var files = context + .GetFiles(context.ArtifactsDirectory.CombineWithFilePath("*").FullPath) + .OrderBy(file => file.FullPath); + var settings = new DotNetNuGetPushSettings + { + ApiKey = nuGetToken, + SymbolApiKey = nuGetToken + }; + + foreach (var file in files) + { + context.Information($"Push: {file}"); + if (context.PushMode) + context.DotNetNuGetPush(file, settings); + else + context.Information(" Skip because PushMode is disabled"); + } + } + + private async Task 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 = GitHubCredentials.CreateClient(); + if (context.PushMode) + { + await client.Repository.Release.Create(Repo.Owner, Repo.Name, new NewRelease(tag) + { + Name = version, + Draft = false, + Prerelease = false, + GenerateReleaseNotes = false, + Body = notes + }); + context.Information(" Success"); + } + else + { + context.Information(" Skip because PushMode is disabled"); + } + } + + 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 From f43495c165c61d70a8fb6a656dd58b99d45b44f3 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Sat, 8 Jul 2023 04:12:11 +0200 Subject: [PATCH 51/73] Fix documentation generation --- .../BenchmarkDotNet.Build/ChangeLogBuilder.cs | 4 +-- .../Runners/DocumentationRunner.cs | 29 ++++++++++--------- docs/template/public/main.css | 4 +++ 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs b/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs index ce628d09d6..046c5fc728 100644 --- a/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs +++ b/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs @@ -136,11 +136,11 @@ string PresentContributor(GitHubCommit commit) .Distinct() .ToImmutableList(); - var milestoneHtmlUlr = $"https://github.com/{Repo.Owner}/{Repo.Name}/issues?q=milestone:{currentVersion}"; + var milestoneHtmlUlr = $"https://github.com/{Repo.Owner}/{Repo.Name}/issues?q=milestone:v{currentVersion}"; builder.AppendLine("## Milestone details"); builder.AppendLine(); - builder.AppendLine($"In the [{currentVersion}]({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."); diff --git a/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs b/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs index 10ea30f64f..a7cf31b1bd 100644 --- a/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs +++ b/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs @@ -133,13 +133,13 @@ private void GenerateChangelogToc() { var content = new StringBuilder(); - content.AppendLine($"- name: {context.VersionHistory.CurrentVersion}"); - content.AppendLine($" href: {context.VersionHistory.CurrentVersion}.md"); + 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: {version}"); - content.AppendLine($" href: {version}.md"); + content.AppendLine($"- name: v{version}"); + content.AppendLine($" href: v{version}.md"); } content.AppendLine("- name: Full ChangeLog"); @@ -158,9 +158,9 @@ private void GenerateChangelogFull() content.AppendLine("# Full ChangeLog"); content.AppendLine(""); content.AppendLine( - $"[!include[{context.VersionHistory.CurrentVersion}]({context.VersionHistory.CurrentVersion}.md)]"); + $"[!include[v{context.VersionHistory.CurrentVersion}](v{context.VersionHistory.CurrentVersion}.md)]"); foreach (var version in context.VersionHistory.StableVersions.Reverse()) - content.AppendLine($"[!include[{version}]({version}.md)]"); + content.AppendLine($"[!include[v{version}](v{version}.md)]"); context.GenerateFile(changelogFullFile, content); } @@ -174,9 +174,9 @@ private void GenerateChangelogIndex() content.AppendLine(""); content.AppendLine("# ChangeLog"); content.AppendLine(""); - content.AppendLine($"* @changelog.{context.VersionHistory.CurrentVersion}"); + content.AppendLine($"* @changelog.v{context.VersionHistory.CurrentVersion}"); foreach (var version in context.VersionHistory.StableVersions.Reverse()) - content.AppendLine($"* @changelog.{version}"); + content.AppendLine($"* @changelog.v{version}"); content.AppendLine("* @changelog.full"); context.GenerateFile(changelogIndexFile, content); @@ -185,17 +185,18 @@ private void GenerateChangelogIndex() private void DocfxChangelogGenerate(string version) { EnsureChangelogDetailsExist(); - var header = ChangelogSrcDirectory.Combine("header").CombineWithFilePath(version + ".md"); - var footer = ChangelogSrcDirectory.Combine("footer").CombineWithFilePath(version + ".md"); - var details = ChangelogSrcDirectory.Combine("details").CombineWithFilePath(version + ".md"); - var release = ChangelogDirectory.CombineWithFilePath(version + ".md"); + 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." + version); + content.AppendLine("uid: changelog.v" + version); content.AppendLine("---"); content.AppendLine(""); - content.AppendLine("# BenchmarkDotNet " + version); + content.AppendLine("# BenchmarkDotNet v" + version); content.AppendLine(""); content.AppendLine(""); diff --git a/docs/template/public/main.css b/docs/template/public/main.css index e7541186f4..4eee5f9881 100644 --- a/docs/template/public/main.css +++ b/docs/template/public/main.css @@ -5,4 +5,8 @@ #breadcrumb { display: none; +} + +.affix { + display: none !important; } \ No newline at end of file From 30887e577dd6faaf5ca7e72479dc16aabdd80984 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Sat, 8 Jul 2023 04:14:46 +0200 Subject: [PATCH 52/73] Update team.md --- docs/articles/team.md | 75 +++---------------------------------------- 1 file changed, 5 insertions(+), 70 deletions(-) diff --git a/docs/articles/team.md b/docs/articles/team.md index 663c35958c..7330d85441 100644 --- a/docs/articles/team.md +++ b/docs/articles/team.md @@ -1,76 +1,11 @@ # Team -This project is supported by the [.NET Foundation](https://dotnetfoundation.org). - Maintainers: [Andrey Akinshin](https://github.com/AndreyAkinshin) (Project Lead), - [Adam Sitnik](https://github.com/adamsitnik). - -Contributors: + [Adam Sitnik](https://github.com/adamsitnik), + [Yegor Stepanov](https://github.com/YegorStepanov), + [Tim Cassell](https://github.com/timcassell). -* [@mattwarren (Matt Warren)](https://github.com/mattwarren) -* [@alinasmirnova (Alina Smirnova)](https://github.com/alinasmirnova) -* [@ig-sinicyn](https://github.com/ig-sinicyn) -* [@Ky7m (Igor Fesenko)](https://github.com/Ky7m) -* [@epeshk (Evgeny Peshkov)](https://github.com/epeshk) -* [@redknightlois (Federico Andres Lois)](https://github.com/redknightlois) -* [@Teknikaali (Anssi Kettunen)](https://github.com/Teknikaali) -* [@morgan-kn (Irina Ananyeva)](https://github.com/morgan-kn) -* [@gigi81 (Luigi Grilli)](https://github.com/gigi81) -* [@lukasz-pyrzyk (Łukasz Pyrzyk)](https://github.com/lukasz-pyrzyk) -* [@Rizzen (Mark)](https://github.com/Rizzen) -* [@FransBouma (Frans Bouma)](https://github.com/FransBouma) -* [@AmadeusW (Amadeusz Wieczorek)](https://github.com/AmadeusW) -* [@lahma (Marko Lahma)](https://github.com/lahma) -* [@ppanyukov (Philip Panyukov)](https://github.com/ppanyukov) -* [@roji (Shay Rojansky)](https://github.com/roji) -* [@mtschneiders (Mateus Artur Schneiders)](https://github.com/mtschneiders) -* [@mfilippov (Mikhail Filippov)](https://github.com/mfilippov) -* [@svick (Petr Onderka)](https://github.com/svick) -* [@alexandrnikitin (Alexandr Nikitin)](https://github.com/alexandrnikitin) -* [@Chrisgozd (Christopher Gozdziewski)](https://github.com/Chrisgozd) -* [@dmitry-ra (Dmitry Razumikhin)](https://github.com/dmitry-ra) -* [@ENikS (Eugene Sadovoi)](https://github.com/ENikS) -* [@GeorgePlotnikov (George Plotnikov)](https://github.com/GeorgePlotnikov) -* [@ltrzesniewski (Lucas Trzesniewski)](https://github.com/ltrzesniewski) -* [@cdmihai (Mihai Codoban)](https://github.com/cdmihai) -* [@shoelzer (Steve Hoelzer)](https://github.com/shoelzer) -* [@krk (Kerem)](https://github.com/krk) -* [@ipjohnson (Ian Johnson)](https://github.com/ipjohnson) -* [@stevedesmond-ca (Steve Desmond)](https://github.com/stevedesmond-ca) -* [@aarondandy (Aaron Dandy)](https://github.com/aarondandy) -* [@AlekseiKudelia](https://github.com/AlekseiKudelia) -* [@aidmsu (Andrey Dorokhov)](https://github.com/aidmsu) -* [@arthrp (Arthur)](https://github.com/arthrp) -* [@benjamin-hodgson (Benjamin Hodgson)](https://github.com/benjamin-hodgson) -* [@jawn (Bernard Vander Beken)](https://github.com/jawn) -* [@dfederm (David Federman)](https://github.com/dfederm) -* [@davkean (David Kean)](https://github.com/davkean) -* [@DenisIstomin (Denis Istomin)](https://github.com/DenisIstomin) -* [@mijay (Dmitry Kononchuk)](https://github.com/mijay) -* [@eerhardt (Eric Erhardt)](https://github.com/eerhardt) -* [@onionhammer (Erik O'Leary)](https://github.com/onionhammer) -* [@ForNeVeR (Friedrich von Never)](https://github.com/ForNeVeR) -* [@IanKemp (Ian Kemp)](https://github.com/IanKemp) -* [@cloudRoutine (Jared Hester)](https://github.com/cloudRoutine) -* [@cincuranet (Jiri Cincura ↹)](https://github.com/cincuranet) -* [@JohanLarsson (Johan Larsson)](https://github.com/JohanLarsson) -* [@Matthew-Bonner (Matthew Bonner)](https://github.com/Matthew-Bonner) -* [@mmayr-at (Michael Mayr)](https://github.com/mmayr-at) -* [@MishaHusiuk (MishaHusiuk)](https://github.com/MishaHusiuk) -* [@NN--- (NN)](https://github.com/NN---) -* [@paulness (Paul Ness)](https://github.com/paulness) -* [@pentp (Pent Ploompuu)](https://github.com/pentp) -* [@RichLinnell (Rich Linnell)](https://github.com/RichLinnell) -* [@rolshevsky (Rostislav Olshevsky)](https://github.com/rolshevsky) -* [@russcam (Russ Cam)](https://github.com/russcam) -* [@goldshtn (Sasha Goldshtein)](https://github.com/goldshtn) -* [@ScottHutchinson (Scott Hutchinson)](https://github.com/ScottHutchinson) -* [@smitpatel (Smit Patel)](https://github.com/smitpatel) -* [@afmorris (Tony Morris)](https://github.com/afmorris) -* [@Tornhoof](https://github.com/Tornhoof) -* [@vkkoshelev](https://github.com/vkkoshelev) -* [@factormystic](https://github.com/factormystic) -* [@nietras](https://github.com/nietras) +[All contributors on GitHub (200+)](https://github.com/dotnet/BenchmarkDotNet/graphs/contributors) -[All contributors on GitHub](https://github.com/dotnet/BenchmarkDotNet/graphs/contributors) \ No newline at end of file +BenchmarkDotNet is a part of the [.NET Foundation](https://dotnetfoundation.org). \ No newline at end of file From 28e003c658080ce77fe48b0997340a028b479c0b Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Sat, 8 Jul 2023 04:22:36 +0200 Subject: [PATCH 53/73] Update license.md --- docs/articles/license.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/license.md b/docs/articles/license.md index 3bf1f0a225..d20c387e81 100644 --- a/docs/articles/license.md +++ b/docs/articles/license.md @@ -1,6 +1,6 @@ ### The MIT License -Copyright (c) 2013–2021 .NET Foundation and contributors +Copyright (c) 2013–2023 .NET Foundation and contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the From d883fdd2d301545a001db7289d3c15c669258623 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Sun, 9 Jul 2023 11:52:10 +0200 Subject: [PATCH 54/73] Suppress running publish-nightly on forked repositories --- .github/workflows/publish-nightly.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/publish-nightly.yaml b/.github/workflows/publish-nightly.yaml index 19907a81a0..e316c0fcba 100644 --- a/.github/workflows/publish-nightly.yaml +++ b/.github/workflows/publish-nightly.yaml @@ -9,6 +9,7 @@ on: jobs: publish: runs-on: ubuntu-latest + if: ${{ github.repository == 'dotnet/BenchmarkDotNet' }} steps: - uses: actions/checkout@v3 - name: Set date From ca9d8b91928aaca258bd9de1a04cc6b00f8dff06 Mon Sep 17 00:00:00 2001 From: Tim Cassell <35501420+timcassell@users.noreply.github.com> Date: Sun, 9 Jul 2023 06:05:10 -0400 Subject: [PATCH 55/73] Fix `MosCpuInfoProvider` (#2360) * Fixed MosCpuInfoProvider * Use null instead of 0. --- src/BenchmarkDotNet/Portability/Cpu/MosCpuInfoProvider.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/BenchmarkDotNet/Portability/Cpu/MosCpuInfoProvider.cs b/src/BenchmarkDotNet/Portability/Cpu/MosCpuInfoProvider.cs index 59b0524014..2edc7cabcb 100644 --- a/src/BenchmarkDotNet/Portability/Cpu/MosCpuInfoProvider.cs +++ b/src/BenchmarkDotNet/Portability/Cpu/MosCpuInfoProvider.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Linq; using System.Management; -using JetBrains.Annotations; using Perfolizer.Horology; namespace BenchmarkDotNet.Portability.Cpu @@ -49,9 +48,9 @@ private static CpuInfo Load() processorsCount > 0 ? processorsCount : (int?) null, physicalCoreCount > 0 ? (int?) physicalCoreCount : null, logicalCoreCount > 0 ? (int?) logicalCoreCount : null, - nominalClockSpeed > 0 && logicalCoreCount > 0 ? Frequency.FromMHz(nominalClockSpeed) : (Frequency?)null, - maxClockSpeed > 0 && logicalCoreCount > 0 ? Frequency.FromMHz(maxClockSpeed) : 0, - minClockSpeed > 0 && logicalCoreCount > 0 ? Frequency.FromMHz(minClockSpeed) : (Frequency?)null); + nominalClockSpeed > 0 && logicalCoreCount > 0 ? Frequency.FromMHz(nominalClockSpeed) : (Frequency?) null, + minClockSpeed > 0 && logicalCoreCount > 0 ? Frequency.FromMHz(minClockSpeed) : (Frequency?) null, + maxClockSpeed > 0 && logicalCoreCount > 0 ? Frequency.FromMHz(maxClockSpeed) : (Frequency?) null); } } } \ No newline at end of file From 3e7334fa9c55ca7f72cf2dd1ae8e6c46f917108a Mon Sep 17 00:00:00 2001 From: Tim Cassell <35501420+timcassell@users.noreply.github.com> Date: Sun, 9 Jul 2023 08:49:55 -0400 Subject: [PATCH 56/73] Cancel old CI jobs when a new push is done. (#2362) --- .github/workflows/run-tests.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml index 84653bf8a7..66326dbc34 100644 --- a/.github/workflows/run-tests.yaml +++ b/.github/workflows/run-tests.yaml @@ -5,6 +5,10 @@ on: pull_request: push: +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + jobs: test-windows-core: From 9171cfd50c5bddebe4999b5829c3f8bc96f6cbf8 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Sun, 9 Jul 2023 18:35:32 +0200 Subject: [PATCH 57/73] Lock perfolizer reference, fix #2358 --- src/BenchmarkDotNet/BenchmarkDotNet.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BenchmarkDotNet/BenchmarkDotNet.csproj b/src/BenchmarkDotNet/BenchmarkDotNet.csproj index dbdc9449a4..09d920b3ce 100644 --- a/src/BenchmarkDotNet/BenchmarkDotNet.csproj +++ b/src/BenchmarkDotNet/BenchmarkDotNet.csproj @@ -21,7 +21,7 @@ - + From 27854953aef45e8bb618f3b83741424bd2cb35c4 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Sun, 9 Jul 2023 18:49:59 +0200 Subject: [PATCH 58/73] Add MyGet badge in README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f402f5fb45..fa0f673bac 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@
[![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) ![License](https://img.shields.io/badge/license-MIT-blue.svg) From e85fe2874f67153de3af018ad1bf7602f9123d68 Mon Sep 17 00:00:00 2001 From: Tim Cassell <35501420+timcassell@users.noreply.github.com> Date: Mon, 10 Jul 2023 03:45:28 -0400 Subject: [PATCH 59/73] Fix netcoreapp3.0 builds (#2359) * Fix netcoreapp3.0 builds for real * Use same nuget package versions for all targets. * Add comment * Fix tests. --- src/BenchmarkDotNet/BenchmarkDotNet.csproj | 9 +++------ ...hmarkDotNet.IntegrationTests.ConfigPerAssembly.csproj | 2 +- .../BenchmarkDotNet.IntegrationTests.CustomPaths.csproj | 2 +- ...kDotNet.IntegrationTests.DisabledOptimizations.csproj | 2 +- ...rkDotNet.IntegrationTests.EnabledOptimizations.csproj | 2 +- .../BenchmarkDotNet.IntegrationTests.Static.csproj | 2 +- .../BenchmarkDotNet.IntegrationTests.csproj | 2 +- tests/BenchmarkDotNet.Tests/BenchmarkDotNet.Tests.csproj | 2 +- 8 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/BenchmarkDotNet/BenchmarkDotNet.csproj b/src/BenchmarkDotNet/BenchmarkDotNet.csproj index 09d920b3ce..58a33c64f9 100644 --- a/src/BenchmarkDotNet/BenchmarkDotNet.csproj +++ b/src/BenchmarkDotNet/BenchmarkDotNet.csproj @@ -24,6 +24,9 @@ + + + @@ -31,12 +34,6 @@ - - - - - - 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 5bc42e3dff..5d70626536 100644 --- a/tests/BenchmarkDotNet.IntegrationTests/BenchmarkDotNet.IntegrationTests.csproj +++ b/tests/BenchmarkDotNet.IntegrationTests/BenchmarkDotNet.IntegrationTests.csproj @@ -46,7 +46,7 @@ - + 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 @@ - + From c9347c9b319852e9e608182024f14583bc96ba60 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Tue, 11 Jul 2023 14:34:24 +0400 Subject: [PATCH 60/73] Set next BenchmarkDotNet version: 0.13.7 --- build/common.props | 2 +- build/versions.txt | 3 ++- docs/_changelog/footer/v0.13.6.md | 2 +- .../.template.config/template.json | 2 +- .../.template.config/template.json | 2 +- .../.template.config/template.json | 2 +- 6 files changed, 7 insertions(+), 6 deletions(-) diff --git a/build/common.props b/build/common.props index f88bc9435e..7037f3bed9 100644 --- a/build/common.props +++ b/build/common.props @@ -37,7 +37,7 @@ - 0.13.6 + 0.13.7 diff --git a/build/versions.txt b/build/versions.txt index 70df4068ca..12a1f57f12 100644 --- a/build/versions.txt +++ b/build/versions.txt @@ -50,4 +50,5 @@ 0.13.3 0.13.4 0.13.5 -0.13.6 \ No newline at end of file +0.13.6 +0.13.7 \ No newline at end of file diff --git a/docs/_changelog/footer/v0.13.6.md b/docs/_changelog/footer/v0.13.6.md index f78501ac1d..7235cd2302 100644 --- a/docs/_changelog/footer/v0.13.6.md +++ b/docs/_changelog/footer/v0.13.6.md @@ -1,4 +1,4 @@ -_Date: TBA_ +_Date: July 11, 2023_ _Milestone: [v0.13.6](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone%3Av0.13.6)_ ([List of commits](https://github.com/dotnet/BenchmarkDotNet/compare/v0.13.5...v0.13.6)) diff --git a/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.CSharp/.template.config/template.json b/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.CSharp/.template.config/template.json index 3e6fd1107c..b4051ccbf4 100644 --- a/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.CSharp/.template.config/template.json +++ b/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.CSharp/.template.config/template.json @@ -144,7 +144,7 @@ "type": "parameter", "datatype": "string", "description": "Version of BenchmarkDotNet that will be referenced.", - "defaultValue": "0.13.6", + "defaultValue": "0.13.7", "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 aeb5503a79..20d49ec024 100644 --- a/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.FSharp/.template.config/template.json +++ b/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.FSharp/.template.config/template.json @@ -144,7 +144,7 @@ "type": "parameter", "datatype": "string", "description": "Version of BenchmarkDotNet that will be referenced.", - "defaultValue": "0.13.6", + "defaultValue": "0.13.7", "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 72d361290a..1fe705443d 100644 --- a/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.VB/.template.config/template.json +++ b/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.VB/.template.config/template.json @@ -144,7 +144,7 @@ "type": "parameter", "datatype": "string", "description": "Version of BenchmarkDotNet that will be referenced.", - "defaultValue": "0.13.6", + "defaultValue": "0.13.7", "replaces": "$(BenchmarkDotNetVersion)" } }, From df4cedd86c1135b7a8fdcf25125f7c683bd9cd74 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Tue, 11 Jul 2023 14:46:01 +0400 Subject: [PATCH 61/73] Fix generate-gh-pages.yaml --- .github/workflows/generate-gh-pages.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/generate-gh-pages.yaml b/.github/workflows/generate-gh-pages.yaml index a0f6218d4e..41bc3f9b59 100644 --- a/.github/workflows/generate-gh-pages.yaml +++ b/.github/workflows/generate-gh-pages.yaml @@ -39,7 +39,7 @@ jobs: deploy: concurrency: ci-${{ github.ref }} - needs: [build] + needs: [generate] runs-on: ubuntu-latest steps: From 142a89e11d17add923501368d9f46e514f8e0ade Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Tue, 11 Jul 2023 02:25:34 -0400 Subject: [PATCH 62/73] DotNetCliCommand.cs: Fail the build if no-dependencies retry build fails Issue: https://github.com/dotnet/BenchmarkDotNet/issues/2311 --- src/BenchmarkDotNet/Toolchains/DotNetCli/DotNetCliCommand.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/BenchmarkDotNet/Toolchains/DotNetCli/DotNetCliCommand.cs b/src/BenchmarkDotNet/Toolchains/DotNetCli/DotNetCliCommand.cs index 77401f022e..31546d3112 100644 --- a/src/BenchmarkDotNet/Toolchains/DotNetCli/DotNetCliCommand.cs +++ b/src/BenchmarkDotNet/Toolchains/DotNetCli/DotNetCliCommand.cs @@ -90,6 +90,9 @@ public BuildResult RestoreThenBuild() buildResult = BuildNoRestoreNoDependencies(); } + if (!buildResult.IsSuccess) + return BuildResult.Failure(GenerateResult, buildResult.AllInformation); + return buildResult.ToBuildResult(GenerateResult); } From c0311bf687c754ef828928771e205e125ab54db5 Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Tue, 11 Jul 2023 20:50:36 -0400 Subject: [PATCH 63/73] MonoAOTLLVMCsProj.txt: Add auto-imports for extension props/targets Automatically import any `$projectName.Mono.props`, and `$projectName.Mono.targets` files, if found. - This allows the actual project to control settings for the generated project, eg, for modifying the build to add a property like `SelfContained=true`. Wasm projects have the same extension mechanism in `src/BenchmarkDotNet/Templates/WasmCsProj.txt` . --- src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt b/src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt index a0ad858c54..3f28937a3f 100644 --- a/src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt +++ b/src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt @@ -1,5 +1,8 @@  + $CSPROJPATH$ + $([System.IO.Path]::ChangeExtension('$(OriginalCSProjPath)', '.Mono.props')) + $([System.IO.Path]::ChangeExtension('$(OriginalCSProjPath)', '.Mono.targets')) Exe bin $TFM$ @@ -13,6 +16,8 @@ BenchmarkDotNet.Autogenerated.UniqueProgramName + + @@ -75,4 +80,5 @@ + From f42b9757dd6af5db562cd4ca250558ab0001213d Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Wed, 12 Jul 2023 08:01:17 -0400 Subject: [PATCH 64/73] MonoAOTLLVMCsProj.txt: Imports the props file early enough to allow .. setting properties early. --- src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt b/src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt index 3f28937a3f..7c658970bd 100644 --- a/src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt +++ b/src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt @@ -3,6 +3,11 @@ $CSPROJPATH$ $([System.IO.Path]::ChangeExtension('$(OriginalCSProjPath)', '.Mono.props')) $([System.IO.Path]::ChangeExtension('$(OriginalCSProjPath)', '.Mono.targets')) + + + + + Exe bin $TFM$ @@ -16,8 +21,6 @@ BenchmarkDotNet.Autogenerated.UniqueProgramName - - From f6bc29bfc75b49387098ddd77ff5aeb096d6fdc2 Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Wed, 12 Jul 2023 08:02:11 -0400 Subject: [PATCH 65/73] MonoAOTLLVMCsProj.txt: Add SelfContained=true --- src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt b/src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt index 7c658970bd..1db40072d1 100644 --- a/src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt +++ b/src/BenchmarkDotNet/Templates/MonoAOTLLVMCsProj.txt @@ -19,6 +19,7 @@ false true BenchmarkDotNet.Autogenerated.UniqueProgramName + true From e4c4f6f4a189e964f8dad4b92573662104355d32 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Wed, 12 Jul 2023 11:59:25 +0400 Subject: [PATCH 66/73] [build] Specify NuGet source to PushNupkg --- build/BenchmarkDotNet.Build/Runners/ReleaseRunner.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build/BenchmarkDotNet.Build/Runners/ReleaseRunner.cs b/build/BenchmarkDotNet.Build/Runners/ReleaseRunner.cs index 44a2377d0b..10873340ef 100644 --- a/build/BenchmarkDotNet.Build/Runners/ReleaseRunner.cs +++ b/build/BenchmarkDotNet.Build/Runners/ReleaseRunner.cs @@ -119,7 +119,8 @@ private void PushNupkg() var settings = new DotNetNuGetPushSettings { ApiKey = nuGetToken, - SymbolApiKey = nuGetToken + SymbolApiKey = nuGetToken, + Source = "https://api.nuget.org/v3/index.json" }; foreach (var file in files) From 7de12a1d3ee2b37351465ff2175d03d2898f045e Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Wed, 12 Jul 2023 16:01:38 +0400 Subject: [PATCH 67/73] [build] rework command line argument parsing --- .github/workflows/generate-changelog.yaml | 3 +- .github/workflows/generate-gh-pages.yaml | 3 +- build/BenchmarkDotNet.Build/BuildContext.cs | 12 +- .../BenchmarkDotNet.Build/ChangeLogBuilder.cs | 11 +- .../CommandLineParser.cs | 157 +++++++++--------- build/BenchmarkDotNet.Build/HelpInfo.cs | 5 +- .../Options/BoolOption.cs | 20 +++ .../BenchmarkDotNet.Build/Options/IOption.cs | 8 + .../Options/KnownOptions.cs | 37 +++++ build/BenchmarkDotNet.Build/Options/Option.cs | 40 +++++ .../Options/StringOption.cs | 19 +++ build/BenchmarkDotNet.Build/Program.cs | 24 ++- .../Runners/DocumentationRunner.cs | 50 ++++-- .../.template.config/template.json | 2 +- .../.template.config/template.json | 2 +- .../.template.config/template.json | 2 +- 16 files changed, 277 insertions(+), 118 deletions(-) create mode 100644 build/BenchmarkDotNet.Build/Options/BoolOption.cs create mode 100644 build/BenchmarkDotNet.Build/Options/IOption.cs create mode 100644 build/BenchmarkDotNet.Build/Options/KnownOptions.cs create mode 100644 build/BenchmarkDotNet.Build/Options/Option.cs create mode 100644 build/BenchmarkDotNet.Build/Options/StringOption.cs diff --git a/.github/workflows/generate-changelog.yaml b/.github/workflows/generate-changelog.yaml index 9589b92fc8..54dd5c2250 100644 --- a/.github/workflows/generate-changelog.yaml +++ b/.github/workflows/generate-changelog.yaml @@ -20,9 +20,8 @@ jobs: ref: master - name: Download changelog - run: ./build.cmd DocsUpdate /p:Depth=1 + run: ./build.cmd DocsUpdate --depth 1 --preview env: - GITHUB_PRODUCT: ChangelogBuilder GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Push changelog diff --git a/.github/workflows/generate-gh-pages.yaml b/.github/workflows/generate-gh-pages.yaml index 41bc3f9b59..868fa49c5c 100644 --- a/.github/workflows/generate-gh-pages.yaml +++ b/.github/workflows/generate-gh-pages.yaml @@ -23,9 +23,8 @@ jobs: run: ./build.cmd Build - name: Download changelog - run: ./build.cmd DocsUpdate /p:Depth=1 + run: ./build.cmd DocsUpdate --depth 1 --preview env: - GITHUB_PRODUCT: ChangelogBuilder GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Build documentation diff --git a/build/BenchmarkDotNet.Build/BuildContext.cs b/build/BenchmarkDotNet.Build/BuildContext.cs index d7b12205f9..d20e5891e7 100644 --- a/build/BenchmarkDotNet.Build/BuildContext.cs +++ b/build/BenchmarkDotNet.Build/BuildContext.cs @@ -16,7 +16,6 @@ using Cake.Core.IO; using Cake.FileHelpers; using Cake.Frosting; -using Cake.Git; namespace BenchmarkDotNet.Build; @@ -24,7 +23,6 @@ public class BuildContext : FrostingContext { public string BuildConfiguration { get; set; } = "Release"; public DotNetVerbosity BuildVerbosity { get; set; } = DotNetVerbosity.Minimal; - public int Depth { get; set; } public bool VersionStable { get; } public string NextVersion { get; } public bool PushMode { get; } @@ -85,7 +83,6 @@ public BuildContext(ICakeContext context) MsBuildSettingsBuild.WithProperty("UseSharedCompilation", "false"); } - Depth = -1; VersionStable = false; NextVersion = ""; PushMode = false; @@ -113,9 +110,6 @@ public BuildContext(ICakeContext context) BuildVerbosity = parsedVerbosity.Value; } - if (name.Equals("depth", StringComparison.OrdinalIgnoreCase)) - Depth = int.Parse(value); - if (name.Equals("VersionStable", StringComparison.OrdinalIgnoreCase) && value != "") VersionStable = true; @@ -160,14 +154,18 @@ public void GenerateFile(FilePath filePath, StringBuilder content) GenerateFile(filePath, content.ToString()); } - public void GenerateFile(FilePath filePath, string content) + 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); diff --git a/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs b/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs index 046c5fc728..a7537c51c6 100644 --- a/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs +++ b/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs @@ -1,12 +1,12 @@ using System; using System.Collections.Generic; using System.Collections.Immutable; -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 Octokit; @@ -174,17 +174,18 @@ private void AppendList(string title, IReadOnlyList items, Func } } - public static async Task Run(DirectoryPath path, string currentVersion, string previousVersion, string lastCommit) + public static void Run(BuildContext context, DirectoryPath path, + string currentVersion, string previousVersion, string lastCommit) { try { var config = new Config(currentVersion, previousVersion, lastCommit); - var releaseNotes = await MarkdownBuilder.Build(config); - await File.WriteAllTextAsync(path.Combine($"v{config.CurrentVersion}.md").FullPath, releaseNotes); + 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.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 index 95dc065875..5e797e6375 100644 --- a/build/BenchmarkDotNet.Build/CommandLineParser.cs +++ b/build/BenchmarkDotNet.Build/CommandLineParser.cs @@ -2,6 +2,8 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; +using System.Runtime.InteropServices; +using BenchmarkDotNet.Build.Options; using Cake.Frosting; namespace BenchmarkDotNet.Build; @@ -10,6 +12,9 @@ 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) @@ -53,63 +58,32 @@ public class CommandLineParser { var arg = argsToProcess.Dequeue(); - var matched = false; - foreach (var option in options) - { - if (Is(arg, option.ShortName, option.FullName)) - { - matched = true; - cakeArgs.Add(option.CakeOption); - if (option.Arg != "") - { - if (!argsToProcess.Any()) - { - PrintError(option.FullName + " is not specified"); - return null; - } - - cakeArgs.Add(argsToProcess.Dequeue()); - } - } - } - if (arg.StartsWith("/p:")) { - matched = true; cakeArgs.Add("--msbuild"); cakeArgs.Add(arg[3..]); + continue; } - if (!matched) + if (arg.StartsWith('-')) { - PrintError("Unknown option: " + arg); - return null; + cakeArgs.Add(arg); + if (argsToProcess.Any() && !argsToProcess.Peek().StartsWith('-')) + cakeArgs.Add(argsToProcess.Dequeue()); + continue; } + + PrintError("Unknown option: " + arg); + return null; } return cakeArgs.ToArray(); } - private record Option(string ShortName, string FullName, string Arg, string Description, string CakeOption); - - private readonly Option[] options = + private readonly IOption[] baseOptions = { - new("-v", - "--verbosity", - "", - "Specifies the amount of information to be displayed\n(Quiet, Minimal, Normal, Verbose, Diagnostic)", - "--verbosity"), - new("-e", - "--exclusive", - "", - "Executes the target task without any dependencies", - "--exclusive"), - new("-h", - "--help", - "", - "Prints help information for the target task", - "") + KnownOptions.Verbosity, KnownOptions.Exclusive, KnownOptions.Help }; private void PrintHelp() @@ -127,7 +101,7 @@ private void PrintHelp() WriteHeader("Usage:"); WritePrefix(); - Write(ScriptName + " "); + Write(CallScriptName + " "); WriteTask(" "); WriteOption("[OPTIONS]"); WriteLine(); @@ -137,12 +111,12 @@ private void PrintHelp() WriteHeader("Examples:"); WritePrefix(); - Write(ScriptName + " "); + Write(CallScriptName + " "); WriteTask("restore"); WriteLine(); WritePrefix(); - Write(ScriptName + " "); + Write(CallScriptName + " "); WriteTask("build "); WriteOption("/p:"); WriteArg("Configuration"); @@ -151,7 +125,7 @@ private void PrintHelp() WriteLine(); WritePrefix(); - Write(ScriptName + " "); + Write(CallScriptName + " "); WriteTask("pack "); WriteOption("/p:"); WriteArg("VersionPrefix"); @@ -164,27 +138,29 @@ private void PrintHelp() WriteLine(); WritePrefix(); - Write(ScriptName + " "); + Write(CallScriptName + " "); WriteTask("unittests "); WriteOption("--exclusive --verbosity "); WriteArg("Diagnostic"); WriteLine(); WritePrefix(); - Write(ScriptName + " "); + Write(CallScriptName + " "); WriteTask("docs-update "); - WriteOption("/p:"); - WriteArg("Depth"); - WriteOption("="); + WriteOption("--depth "); WriteArg("3"); WriteLine(); + WritePrefix(); + Write(CallScriptName + " "); + WriteTask("docs-build "); + WriteOption("--preview "); WriteLine(); - PrintCommonOptions(); - WriteLine(); + PrintOptions(baseOptions); + WriteHeader("Tasks:"); var taskWidth = GetTaskNames().Max(name => name.Length) + 3; foreach (var (taskName, taskDescription) in GetTasks()) @@ -207,29 +183,47 @@ private void PrintHelp() } } - private void PrintCommonOptions() + private void PrintOptions(IOption[] options) { + const string valuePlaceholder = ""; + WriteLine("Options:", ConsoleColor.DarkCyan); - var shortNameWidth = options.Max(it => it.ShortName.Length); - var targetWidth = options.Max(it => it.FullName.Length + it.Arg.Length); + 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; + } - foreach (var (shortName, fullName, arg, description, _) in options) + 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(shortName.PadRight(shortNameWidth)); - WriteOption(shortName != "" ? "," : " "); - WriteOption(fullName); - Write(" "); - WriteArg(arg); - Write(new string(' ', targetWidth - fullName.Length - arg.Length + 3)); - var descriptionLines = description.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries); + 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(' ', shortNameWidth + 2 + targetWidth + 3)); + Write(new string(' ', maxWidth)); Write(descriptionLines[i]); } @@ -240,10 +234,12 @@ private void PrintCommonOptions() WriteOption("/p:"); WriteArg(""); WriteOption("="); - WriteArg(""); - Write(new string(' ', targetWidth + shortNameWidth - 11)); + WriteArg(valuePlaceholder); + Write(new string(' ', maxWidth - "/p:=".Length - valuePlaceholder.Length)); Write("Passes custom properties to MSBuild"); WriteLine(); + + WriteLine(); } private void PrintTaskHelp(string taskName) @@ -267,18 +263,19 @@ private void PrintTaskHelp(string taskName) WriteLine(taskDescription); } - foreach (var line in helpInfo.Description) - { - WritePrefix(); - WriteLine(line); - } + if (string.IsNullOrWhiteSpace(helpInfo.Description)) + foreach (var line in helpInfo.Description.Split('\n', StringSplitOptions.RemoveEmptyEntries)) + { + WritePrefix(); + WriteLine(line.Trim()); + } WriteLine(); WriteHeader("Usage:"); WritePrefix(); - Write(ScriptName + " "); + Write(CallScriptName + " "); WriteTask(taskName + " "); WriteOption("[OPTIONS]"); WriteLine(); @@ -309,7 +306,19 @@ private void PrintTaskHelp(string taskName) WriteLine(); - PrintCommonOptions(); + PrintOptions(helpInfo.Options.Concat(baseOptions).ToArray()); + + if (helpInfo.EnvironmentVariables.Any()) + { + WriteHeader("Environment variables:"); + foreach (var variable in helpInfo.EnvironmentVariables) + { + WritePrefix(); + WriteOption(variable); + } + + WriteLine(); + } } private static HashSet GetTaskNames() diff --git a/build/BenchmarkDotNet.Build/HelpInfo.cs b/build/BenchmarkDotNet.Build/HelpInfo.cs index 8f93af63f9..868299677b 100644 --- a/build/BenchmarkDotNet.Build/HelpInfo.cs +++ b/build/BenchmarkDotNet.Build/HelpInfo.cs @@ -1,8 +1,11 @@ using System; +using BenchmarkDotNet.Build.Options; namespace BenchmarkDotNet.Build; public class HelpInfo { - public string[] Description { get; init; } = Array.Empty(); + public string Description { get; init; } = ""; + public IOption[] Options { get; init; } = Array.Empty(); + public string[] EnvironmentVariables { get; init; } = Array.Empty(); } \ 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..5a437d8095 --- /dev/null +++ b/build/BenchmarkDotNet.Build/Options/BoolOption.cs @@ -0,0 +1,20 @@ +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); + } +} \ 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..19467c09c3 --- /dev/null +++ b/build/BenchmarkDotNet.Build/Options/KnownOptions.cs @@ -0,0 +1,37 @@ +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" } + }; +} \ 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..66a3bc375b --- /dev/null +++ b/build/BenchmarkDotNet.Build/Options/StringOption.cs @@ -0,0 +1,19 @@ +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(); + } +} \ No newline at end of file diff --git a/build/BenchmarkDotNet.Build/Program.cs b/build/BenchmarkDotNet.Build/Program.cs index 42cc824d1a..2717e9b20a 100644 --- a/build/BenchmarkDotNet.Build/Program.cs +++ b/build/BenchmarkDotNet.Build/Program.cs @@ -1,4 +1,5 @@ using BenchmarkDotNet.Build.Meta; +using BenchmarkDotNet.Build.Options; using Cake.Common; using Cake.Frosting; @@ -92,19 +93,25 @@ public HelpInfo GetHelp() { return new HelpInfo { - Description = new[] - { - $"Requires environment variable '{GitHubCredentials.TokenVariableName}'" - } + Options = new IOption[] { KnownOptions.DocsPreview, KnownOptions.DocsDepth }, + EnvironmentVariables = new[] { GitHubCredentials.TokenVariableName } }; } } [TaskName("DocsPrepare")] [TaskDescription("Prepare auxiliary documentation files")] -public class DocsPrepareTask : FrostingTask +public class DocsPrepareTask : FrostingTask, IHelpProvider { public override void Run(BuildContext context) => context.DocumentationRunner.Prepare(); + + public HelpInfo GetHelp() + { + return new HelpInfo + { + Options = new IOption[] { KnownOptions.DocsPreview } + }; + } } // In order to work around xref issues in DocFx, BenchmarkDotNet and BenchmarkDotNet.Annotations must be build @@ -114,9 +121,14 @@ public class DocsPrepareTask : FrostingTask [TaskName("DocsBuild")] [TaskDescription("Build final documentation")] [IsDependentOn(typeof(DocsPrepareTask))] -public class DocsBuildTask : FrostingTask +public class DocsBuildTask : FrostingTask, IHelpProvider { public override void Run(BuildContext context) => context.DocumentationRunner.Build(); + + public HelpInfo GetHelp() => new() + { + Options = new IOption[] { KnownOptions.DocsPreview } + }; } [TaskName("Release")] diff --git a/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs b/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs index a7cf31b1bd..7b59d223fc 100644 --- a/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs +++ b/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Text; using BenchmarkDotNet.Build.Meta; +using BenchmarkDotNet.Build.Options; using Cake.Common.Diagnostics; using Cake.Common.IO; using Cake.Core.IO; @@ -14,6 +15,8 @@ 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; } @@ -32,6 +35,8 @@ public class DocumentationRunner 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"); @@ -61,39 +66,43 @@ public void Update() throw new Exception($"Environment variable '{GitHubCredentials.TokenVariableName}' is not specified!"); var history = context.VersionHistory; - var depth = context.Depth; var stableVersionCount = history.StableVersions.Length; - if (depth == 0) + if (depth.Equals("all", StringComparison.OrdinalIgnoreCase)) { DocfxChangelogDownload( history.StableVersions.First(), history.FirstCommit); - for (int i = 1; i < stableVersionCount; i++) + for (var i = 1; i < stableVersionCount; i++) DocfxChangelogDownload( history.StableVersions[i], history.StableVersions[i - 1]); } - else if (depth > 0) + else if (depth != "") { - for (int i = Math.Max(stableVersionCount - depth, 1); i < stableVersionCount; i++) + 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]); } - DocfxChangelogDownload( - history.CurrentVersion, - history.StableVersions.Last(), - "HEAD"); + if (preview) + DocfxChangelogDownload( + history.CurrentVersion, + history.StableVersions.Last(), + "HEAD"); } public void Prepare() { foreach (var version in context.VersionHistory.StableVersions) DocfxChangelogGenerate(version); - DocfxChangelogGenerate(context.VersionHistory.CurrentVersion); + if (preview) + DocfxChangelogGenerate(context.VersionHistory.CurrentVersion); GenerateIndexMd(); GenerateChangelogIndex(); @@ -133,9 +142,12 @@ private void GenerateChangelogToc() { var content = new StringBuilder(); - content.AppendLine($"- name: v{context.VersionHistory.CurrentVersion}"); - content.AppendLine($" href: v{context.VersionHistory.CurrentVersion}.md"); - + 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}"); @@ -157,8 +169,9 @@ private void GenerateChangelogFull() content.AppendLine(""); content.AppendLine("# Full ChangeLog"); content.AppendLine(""); - content.AppendLine( - $"[!include[v{context.VersionHistory.CurrentVersion}](v{context.VersionHistory.CurrentVersion}.md)]"); + 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)]"); @@ -174,7 +187,8 @@ private void GenerateChangelogIndex() content.AppendLine(""); content.AppendLine("# ChangeLog"); content.AppendLine(""); - content.AppendLine($"* @changelog.v{context.VersionHistory.CurrentVersion}"); + 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"); @@ -238,8 +252,8 @@ private void EnsureChangelogDetailsExist(bool forceClean = false) private void DocfxChangelogDownload(string version, string versionPrevious, string lastCommit = "") { EnsureChangelogDetailsExist(); - context.Information("DocfxChangelogDownload: " + version); - ChangeLogBuilder.Run(changelogDetailsDirectory, version, versionPrevious, lastCommit).Wait(); + context.Information($"Downloading changelog details for v{version}"); + ChangeLogBuilder.Run(context, changelogDetailsDirectory, version, versionPrevious, lastCommit); } private void GenerateRedirects() diff --git a/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.CSharp/.template.config/template.json b/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.CSharp/.template.config/template.json index b4051ccbf4..c0c4e6c182 100644 --- a/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.CSharp/.template.config/template.json +++ b/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.CSharp/.template.config/template.json @@ -144,7 +144,7 @@ "type": "parameter", "datatype": "string", "description": "Version of BenchmarkDotNet that will be referenced.", - "defaultValue": "0.13.7", + "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 20d49ec024..4158c6bc0f 100644 --- a/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.FSharp/.template.config/template.json +++ b/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.FSharp/.template.config/template.json @@ -144,7 +144,7 @@ "type": "parameter", "datatype": "string", "description": "Version of BenchmarkDotNet that will be referenced.", - "defaultValue": "0.13.7", + "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 1fe705443d..103d38332b 100644 --- a/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.VB/.template.config/template.json +++ b/templates/templates/BenchmarkDotNet.BenchmarkProjectTemplate.VB/.template.config/template.json @@ -144,7 +144,7 @@ "type": "parameter", "datatype": "string", "description": "Version of BenchmarkDotNet that will be referenced.", - "defaultValue": "0.13.7", + "defaultValue": "0.1.1729", "replaces": "$(BenchmarkDotNetVersion)" } }, From 3f890fd4a87dad5718a84a19a0ecff734413a278 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Wed, 12 Jul 2023 16:15:43 +0400 Subject: [PATCH 68/73] [build] Rename tasks --- .github/workflows/generate-changelog.yaml | 2 +- .github/workflows/generate-gh-pages.yaml | 6 +- .github/workflows/run-tests.yaml | 40 ++++----- .../CommandLineParser.cs | 29 ++----- build/BenchmarkDotNet.Build/Program.cs | 85 +++---------------- docs/articles/contributing/documentation.md | 4 +- 6 files changed, 45 insertions(+), 121 deletions(-) diff --git a/.github/workflows/generate-changelog.yaml b/.github/workflows/generate-changelog.yaml index 54dd5c2250..71592e4d46 100644 --- a/.github/workflows/generate-changelog.yaml +++ b/.github/workflows/generate-changelog.yaml @@ -20,7 +20,7 @@ jobs: ref: master - name: Download changelog - run: ./build.cmd DocsUpdate --depth 1 --preview + run: ./build.cmd docs-update --depth 1 --preview env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/generate-gh-pages.yaml b/.github/workflows/generate-gh-pages.yaml index 868fa49c5c..cb01860995 100644 --- a/.github/workflows/generate-gh-pages.yaml +++ b/.github/workflows/generate-gh-pages.yaml @@ -20,15 +20,15 @@ jobs: ref: docs-stable - name: Build BenchmarkDotNet - run: ./build.cmd Build + run: ./build.cmd build - name: Download changelog - run: ./build.cmd DocsUpdate --depth 1 --preview + run: ./build.cmd docs-update --depth 1 --preview env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Build documentation - run: ./build.cmd DocsBuild + run: ./build.cmd docs-build - name: Upload Artifacts uses: actions/upload-artifact@v1 diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml index 66326dbc34..58a248382d 100644 --- a/.github/workflows/run-tests.yaml +++ b/.github/workflows/run-tests.yaml @@ -18,16 +18,16 @@ jobs: run: Set-MpPreference -DisableRealtimeMonitoring $true shell: powershell - uses: actions/checkout@v3 - - name: Run task 'Build' + - 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 'InTestsCore' + ./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 InTestsCore -e + ./build.cmd in-tests-core -e - name: Upload test results uses: actions/upload-artifact@v3 if: always() @@ -42,16 +42,16 @@ jobs: run: Set-MpPreference -DisableRealtimeMonitoring $true shell: powershell - uses: actions/checkout@v3 - - name: Run task 'Build' + - 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 'InTestsFull' + ./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 InTestsFull -e + ./build.cmd in-tests-full -e - name: Upload test results uses: actions/upload-artifact@v3 if: always() @@ -70,12 +70,12 @@ jobs: 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 'UnitTests' - run: ./build.cmd UnitTests -e - - name: Run task 'InTestsCore' - run: ./build.cmd InTestsCore -e + - 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() @@ -87,12 +87,12 @@ jobs: runs-on: macos-13 steps: - uses: actions/checkout@v3 - - name: Run task 'Build' - run: ./build.cmd Build - - name: Run task 'UnitTests' - run: ./build.cmd UnitTests -e - - name: Run task 'InTestsCore' - run: ./build.cmd InTestsCore -e + - 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() diff --git a/build/BenchmarkDotNet.Build/CommandLineParser.cs b/build/BenchmarkDotNet.Build/CommandLineParser.cs index 5e797e6375..50dd344811 100644 --- a/build/BenchmarkDotNet.Build/CommandLineParser.cs +++ b/build/BenchmarkDotNet.Build/CommandLineParser.cs @@ -34,15 +34,18 @@ public class CommandLineParser if (Is(taskName, "-t", "--target") && argsToProcess.Any()) taskName = argsToProcess.Dequeue(); - taskName = taskName.Replace("-", ""); - var taskNames = GetTaskNames(); - if (!taskNames.Contains(taskName)) + 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); @@ -93,9 +96,6 @@ private void PrintHelp() WritePrefix(); WriteLine("BenchmarkDotNet build script"); - WritePrefix(); - WriteLine("Task names are case-insensitive, dashes are ignored"); - WriteLine(); WriteHeader("Usage:"); @@ -139,7 +139,7 @@ private void PrintHelp() WritePrefix(); Write(CallScriptName + " "); - WriteTask("unittests "); + WriteTask("unit-tests "); WriteOption("--exclusive --verbosity "); WriteArg("Diagnostic"); WriteLine(); @@ -289,21 +289,6 @@ private void PrintTaskHelp(string taskName) WriteTask(taskName); WriteLine(); - if (taskName.StartsWith("docs", StringComparison.OrdinalIgnoreCase)) - { - WritePrefix(); - Write(ScriptName + " "); - WriteTask("docs-" + taskName[4..].ToLowerInvariant()); - WriteLine(); - } - else - { - WritePrefix(); - Write(ScriptName + " "); - WriteTask(taskName.ToLowerInvariant()); - WriteLine(); - } - WriteLine(); PrintOptions(helpInfo.Options.Concat(baseOptions).ToArray()); diff --git a/build/BenchmarkDotNet.Build/Program.cs b/build/BenchmarkDotNet.Build/Program.cs index 2717e9b20a..a0ab546188 100644 --- a/build/BenchmarkDotNet.Build/Program.cs +++ b/build/BenchmarkDotNet.Build/Program.cs @@ -16,14 +16,14 @@ public static int Main(string[] args) } } -[TaskName("Restore")] +[TaskName("restore")] [TaskDescription("Restore NuGet packages")] public class RestoreTask : FrostingTask { public override void Run(BuildContext context) => context.BuildRunner.Restore(); } -[TaskName("Build")] +[TaskName("build")] [TaskDescription("Build BenchmarkDotNet.sln solution")] [IsDependentOn(typeof(RestoreTask))] public class BuildTask : FrostingTask @@ -31,7 +31,7 @@ public class BuildTask : FrostingTask public override void Run(BuildContext context) => context.BuildRunner.Build(); } -[TaskName("UnitTests")] +[TaskName("unit-tests")] [TaskDescription("Run unit tests (fast)")] [IsDependentOn(typeof(BuildTask))] public class UnitTestsTask : FrostingTask @@ -39,7 +39,7 @@ public class UnitTestsTask : FrostingTask public override void Run(BuildContext context) => context.UnitTestRunner.RunUnitTests(); } -[TaskName("InTestsFull")] +[TaskName("in-tests-full")] [TaskDescription("Run integration tests using .NET Framework 4.6.2+ (slow)")] [IsDependentOn(typeof(BuildTask))] public class InTestsFullTask : FrostingTask @@ -49,7 +49,7 @@ public class InTestsFullTask : FrostingTask public override void Run(BuildContext context) => context.UnitTestRunner.RunInTests("net462"); } -[TaskName("InTestsCore")] +[TaskName("in-tests-core")] [TaskDescription("Run integration tests using .NET 7 (slow)")] [IsDependentOn(typeof(BuildTask))] public class InTestsCoreTask : FrostingTask @@ -57,7 +57,7 @@ public class InTestsCoreTask : FrostingTask public override void Run(BuildContext context) => context.UnitTestRunner.RunInTests("net7.0"); } -[TaskName("AllTests")] +[TaskName("all-tests")] [TaskDescription("Run all unit and integration tests (slow)")] [IsDependentOn(typeof(UnitTestsTask))] [IsDependentOn(typeof(InTestsFullTask))] @@ -66,7 +66,7 @@ public class AllTestsTask : FrostingTask { } -[TaskName("Pack")] +[TaskName("pack")] [TaskDescription("Pack Nupkg packages")] [IsDependentOn(typeof(BuildTask))] public class PackTask : FrostingTask @@ -74,16 +74,7 @@ public class PackTask : FrostingTask public override void Run(BuildContext context) => context.BuildRunner.Pack(); } -[TaskName("CI")] -[TaskDescription("Perform all CI-related tasks: Restore, Build, AllTests, Pack")] -[IsDependentOn(typeof(BuildTask))] -[IsDependentOn(typeof(AllTestsTask))] -[IsDependentOn(typeof(PackTask))] -public class CiTask : FrostingTask -{ -} - -[TaskName("DocsUpdate")] +[TaskName("docs-update")] [TaskDescription("Update generated documentation files")] public class DocsUpdateTask : FrostingTask, IHelpProvider { @@ -99,7 +90,7 @@ public HelpInfo GetHelp() } } -[TaskName("DocsPrepare")] +[TaskName("docs-prepare")] [TaskDescription("Prepare auxiliary documentation files")] public class DocsPrepareTask : FrostingTask, IHelpProvider { @@ -114,11 +105,7 @@ public HelpInfo GetHelp() } } -// 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("DocsBuild")] +[TaskName("docs-build")] [TaskDescription("Build final documentation")] [IsDependentOn(typeof(DocsPrepareTask))] public class DocsBuildTask : FrostingTask, IHelpProvider @@ -127,11 +114,12 @@ public class DocsBuildTask : FrostingTask, IHelpProvider public HelpInfo GetHelp() => new() { + Description = "The 'build' task should be run manually to build api docs", Options = new IOption[] { KnownOptions.DocsPreview } }; } -[TaskName("Release")] +[TaskName("release")] [TaskDescription("Release new version")] [IsDependentOn(typeof(BuildTask))] [IsDependentOn(typeof(PackTask))] @@ -140,53 +128,4 @@ public class DocsBuildTask : FrostingTask, IHelpProvider public class ReleaseTask : FrostingTask { public override void Run(BuildContext context) => context.ReleaseRunner.Run(); -} - -[TaskName("FastTests")] -[TaskDescription("OBSOLETE: use 'UnitTests'")] -[IsDependentOn(typeof(UnitTestsTask))] -public class FastTestsTask : FrostingTask -{ -} - -[TaskName("SlowFullFrameworkTests")] -[TaskDescription("OBSOLETE: use 'InTestsFull'")] -[IsDependentOn(typeof(InTestsFullTask))] -public class SlowFullFrameworkTestsTask : FrostingTask -{ -} - -[TaskName("SlowTestsNetCore")] -[TaskDescription("OBSOLETE: use 'InTestsCore'")] -[IsDependentOn(typeof(InTestsCoreTask))] -public class SlowTestsNetCoreTask : FrostingTask -{ -} - -[TaskName("DocFX_Changelog_Download")] -[TaskDescription("OBSOLETE: use 'DocsUpdate'")] -[IsDependentOn(typeof(DocsUpdateTask))] -public class DocFxChangelogDownloadTask : FrostingTask -{ -} - -[TaskName("DocFX_Changelog_Generate")] -[TaskDescription("OBSOLETE: use 'DocsPrepare'")] -[IsDependentOn(typeof(DocsPrepareTask))] -public class DocfxChangelogGenerateTask : FrostingTask -{ -} - -[TaskName("DocFX_Generate_Redirects")] -[TaskDescription("OBSOLETE: use 'DocsBuild'")] -[IsDependentOn(typeof(DocsBuildTask))] -public class DocfxGenerateRedirectsTask : FrostingTask -{ -} - -[TaskName("DocFX_Build")] -[TaskDescription("OBSOLETE: use 'DocsBuild'")] -[IsDependentOn(typeof(DocsBuildTask))] -public class DocfxBuildTask : FrostingTask -{ } \ No newline at end of file diff --git a/docs/articles/contributing/documentation.md b/docs/articles/contributing/documentation.md index a0f23dd2d2..73854e928b 100644 --- a/docs/articles/contributing/documentation.md +++ b/docs/articles/contributing/documentation.md @@ -49,10 +49,10 @@ It will be transformed to: ## Building documentation locally -You can build documentation locally with the help of the `DocsBuild` build task: +You can build documentation locally with the help of the `docs-build` build task: ``` -build.cmd DocsBuild +build.cmd docs-build ``` ## See also From c780b3cc6cd3f0e2c398956e49430afa47366061 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Wed, 12 Jul 2023 16:50:30 +0400 Subject: [PATCH 69/73] [build] Rework examples --- .../CommandLineParser.cs | 189 ++++++++---------- build/BenchmarkDotNet.Build/Example.cs | 38 ++++ build/BenchmarkDotNet.Build/HelpInfo.cs | 1 + build/BenchmarkDotNet.Build/Program.cs | 132 ++++++++++-- 4 files changed, 229 insertions(+), 131 deletions(-) create mode 100644 build/BenchmarkDotNet.Build/Example.cs diff --git a/build/BenchmarkDotNet.Build/CommandLineParser.cs b/build/BenchmarkDotNet.Build/CommandLineParser.cs index 50dd344811..c80535a40f 100644 --- a/build/BenchmarkDotNet.Build/CommandLineParser.cs +++ b/build/BenchmarkDotNet.Build/CommandLineParser.cs @@ -108,78 +108,73 @@ private void PrintHelp() WriteLine(); - WriteHeader("Examples:"); + PrintExamples(GetTasks().SelectMany(task => task.HelpInfo.Examples)); - WritePrefix(); - Write(CallScriptName + " "); - WriteTask("restore"); - WriteLine(); + PrintOptions(baseOptions); - WritePrefix(); - Write(CallScriptName + " "); - WriteTask("build "); - WriteOption("/p:"); - WriteArg("Configuration"); - WriteOption("="); - WriteArg("Debug"); - WriteLine(); + WriteHeader("Tasks:"); + var taskWidth = GetTaskNames().Max(name => name.Length) + 3; + foreach (var (taskName, taskDescription, _) in GetTasks()) + { + if (taskName.Equals("Default", StringComparison.OrdinalIgnoreCase)) + continue; - WritePrefix(); - Write(CallScriptName + " "); - WriteTask("pack "); - WriteOption("/p:"); - WriteArg("VersionPrefix"); - WriteOption("="); - WriteArg("0.1.1729"); - WriteOption(" /p:"); - WriteArg("VersionSuffix"); - WriteOption("="); - WriteArg("preview"); - WriteLine(); + WriteTask(" " + taskName.PadRight(taskWidth)); + Write(taskDescription); - WritePrefix(); - Write(CallScriptName + " "); - WriteTask("unit-tests "); - WriteOption("--exclusive --verbosity "); - WriteArg("Diagnostic"); - WriteLine(); + 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(); - Write(CallScriptName + " "); - WriteTask("docs-update "); - WriteOption("--depth "); - WriteArg("3"); + 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.Trim()); + } + WriteLine(); + WriteHeader("Usage:"); + WritePrefix(); Write(CallScriptName + " "); - WriteTask("docs-build "); - WriteOption("--preview "); + WriteTask(taskName + " "); + WriteOption("[OPTIONS]"); WriteLine(); WriteLine(); - PrintOptions(baseOptions); + PrintExamples(helpInfo.Examples); - WriteHeader("Tasks:"); - var taskWidth = GetTaskNames().Max(name => name.Length) + 3; - foreach (var (taskName, taskDescription) in GetTasks()) - { - if (taskName.Equals("Default", StringComparison.OrdinalIgnoreCase)) - continue; + PrintOptions(helpInfo.Options.Concat(baseOptions).ToArray()); - if (taskDescription.StartsWith("OBSOLETE", StringComparison.OrdinalIgnoreCase)) - { - WriteObsolete(" " + taskName.PadRight(taskWidth)); - WriteObsolete(taskDescription); - } - else + if (helpInfo.EnvironmentVariables.Any()) + { + WriteHeader("Environment variables:"); + foreach (var variable in helpInfo.EnvironmentVariables) { - WriteTask(" " + taskName.PadRight(taskWidth)); - Write(taskDescription); + WritePrefix(); + WriteOption(variable); + WriteLine(); } - - WriteLine(); } } @@ -242,68 +237,36 @@ int GetWidth(IOption option) WriteLine(); } - private void PrintTaskHelp(string taskName) + private void PrintExamples(IEnumerable examples) { - 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 taskInstance = Activator.CreateInstance(taskType); - var helpInfo = taskInstance is IHelpProvider helpProvider ? helpProvider.GetHelp() : new HelpInfo(); - - WriteHeader("Description:"); - - WritePrefix(); - WriteLine($"Task '{taskName}'"); - if (!string.IsNullOrWhiteSpace(taskDescription)) - { - WritePrefix(); - WriteLine(taskDescription); - } - - if (string.IsNullOrWhiteSpace(helpInfo.Description)) - foreach (var line in helpInfo.Description.Split('\n', StringSplitOptions.RemoveEmptyEntries)) - { - WritePrefix(); - WriteLine(line.Trim()); - } - - WriteLine(); - - WriteHeader("Usage:"); - - WritePrefix(); - Write(CallScriptName + " "); - WriteTask(taskName + " "); - WriteOption("[OPTIONS]"); - WriteLine(); - - WriteLine(); - WriteHeader("Examples:"); - WritePrefix(); - Write(ScriptName + " "); - WriteTask(taskName); - WriteLine(); - - WriteLine(); - - PrintOptions(helpInfo.Options.Concat(baseOptions).ToArray()); - - if (helpInfo.EnvironmentVariables.Any()) + foreach (var example in examples) { - WriteHeader("Environment variables:"); - foreach (var variable in helpInfo.EnvironmentVariables) + WritePrefix(); + Write(CallScriptName + " "); + WriteTask(example.TaskName + " "); + foreach (var (name, value, isMsBuild) in example.Arguments) { - WritePrefix(); - WriteOption(variable); + if (isMsBuild) + { + WriteOption("/p:"); + WriteArg(name); + WriteOption("="); + WriteArg(value + " "); + } + else + { + WriteOption(name + " "); + if (value != null) + WriteArg(value + " "); + } } WriteLine(); } + + WriteLine(); } private static HashSet GetTaskNames() @@ -311,19 +274,27 @@ private static HashSet GetTaskNames() return GetTasks().Select(task => task.Name).ToHashSet(StringComparer.OrdinalIgnoreCase); } - private static List<(string Name, string Description)> GetTasks() + 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 ?? "" + 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)); diff --git a/build/BenchmarkDotNet.Build/Example.cs b/build/BenchmarkDotNet.Build/Example.cs new file mode 100644 index 0000000000..831def85d3 --- /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 WithArgument(string name, string? value = null) + { + arguments.Add(new Argument(name, value, false)); + return this; + } + + public Example WithMsBuildArgument(string name, string value) + { + arguments.Add(new Argument(name, value, true)); + return this; + } + + public Example WithArgument(IOption option, string? value = null) + { + 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/HelpInfo.cs b/build/BenchmarkDotNet.Build/HelpInfo.cs index 868299677b..c7718cd7f5 100644 --- a/build/BenchmarkDotNet.Build/HelpInfo.cs +++ b/build/BenchmarkDotNet.Build/HelpInfo.cs @@ -8,4 +8,5 @@ public class HelpInfo public string Description { get; init; } = ""; public IOption[] Options { get; init; } = Array.Empty(); public string[] EnvironmentVariables { get; init; } = Array.Empty(); + public Example[] Examples { get; init; } = Array.Empty(); } \ No newline at end of file diff --git a/build/BenchmarkDotNet.Build/Program.cs b/build/BenchmarkDotNet.Build/Program.cs index a0ab546188..1f431d17c7 100644 --- a/build/BenchmarkDotNet.Build/Program.cs +++ b/build/BenchmarkDotNet.Build/Program.cs @@ -16,68 +16,130 @@ public static int Main(string[] args) } } -[TaskName("restore")] +[TaskName(Name)] [TaskDescription("Restore NuGet packages")] -public class RestoreTask : FrostingTask +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("build")] +[TaskName(Name)] [TaskDescription("Build BenchmarkDotNet.sln solution")] [IsDependentOn(typeof(RestoreTask))] -public class BuildTask : FrostingTask +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("unit-tests")] +[TaskName(Name)] [TaskDescription("Run unit tests (fast)")] [IsDependentOn(typeof(BuildTask))] -public class UnitTestsTask : FrostingTask +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("in-tests-full")] +[TaskName(Name)] [TaskDescription("Run integration tests using .NET Framework 4.6.2+ (slow)")] [IsDependentOn(typeof(BuildTask))] -public class InTestsFullTask : FrostingTask +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("in-tests-core")] +[TaskName(Name)] [TaskDescription("Run integration tests using .NET 7 (slow)")] [IsDependentOn(typeof(BuildTask))] -public class InTestsCoreTask : FrostingTask +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("all-tests")] +[TaskName(Name)] [TaskDescription("Run all unit and integration tests (slow)")] [IsDependentOn(typeof(UnitTestsTask))] [IsDependentOn(typeof(InTestsFullTask))] [IsDependentOn(typeof(InTestsCoreTask))] -public class AllTestsTask : FrostingTask +public class AllTestsTask : FrostingTask, IHelpProvider { + private const string Name = "all-tests"; + public HelpInfo GetHelp() => new(); } -[TaskName("pack")] +[TaskName(Name)] [TaskDescription("Pack Nupkg packages")] [IsDependentOn(typeof(BuildTask))] -public class PackTask : FrostingTask +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") + } + }; + } } -[TaskName("docs-update")] +[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() @@ -85,47 +147,73 @@ public HelpInfo GetHelp() return new HelpInfo { Options = new IOption[] { KnownOptions.DocsPreview, KnownOptions.DocsDepth }, - EnvironmentVariables = new[] { GitHubCredentials.TokenVariableName } + EnvironmentVariables = new[] { GitHubCredentials.TokenVariableName }, + Examples = new[] + { + new Example(Name) + .WithArgument(KnownOptions.DocsDepth, "3") + .WithArgument(KnownOptions.DocsPreview) + } }; } } -[TaskName("docs-prepare")] +[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 } + Options = new IOption[] { KnownOptions.DocsPreview }, + Examples = new[] + { + new Example(Name).WithArgument(KnownOptions.DocsPreview) + } }; } } -[TaskName("docs-build")] +[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 } + Options = new IOption[] { KnownOptions.DocsPreview }, + Examples = new[] + { + new Example(Name).WithArgument(KnownOptions.DocsPreview) + } }; } -[TaskName("release")] +[TaskName(Name)] [TaskDescription("Release new version")] [IsDependentOn(typeof(BuildTask))] [IsDependentOn(typeof(PackTask))] [IsDependentOn(typeof(DocsUpdateTask))] [IsDependentOn(typeof(DocsBuildTask))] -public class ReleaseTask : FrostingTask +public class ReleaseTask : FrostingTask, IHelpProvider { + private const string Name = "release"; public override void Run(BuildContext context) => context.ReleaseRunner.Run(); + + public HelpInfo GetHelp() => new() + { + EnvironmentVariables = new[] + { + GitHubCredentials.TokenVariableName, + "NUGET_TOKEN" + } + }; } \ No newline at end of file From 398ae6545ec77aaf395a753d333299c59ab1f591 Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Wed, 12 Jul 2023 17:55:27 +0400 Subject: [PATCH 70/73] [build] Rework ReleaseTask --- build/BenchmarkDotNet.Build/BuildContext.cs | 35 ++++--- .../BenchmarkDotNet.Build/ChangeLogBuilder.cs | 2 +- .../CommandLineParser.cs | 12 ++- build/BenchmarkDotNet.Build/EnvVar.cs | 23 +++++ build/BenchmarkDotNet.Build/Example.cs | 10 +- build/BenchmarkDotNet.Build/HelpInfo.cs | 2 +- build/BenchmarkDotNet.Build/Helpers/Utils.cs | 13 +++ .../Meta/GitHubCredentials.cs | 20 ---- .../Options/BoolOption.cs | 7 ++ .../Options/KnownOptions.cs | 17 ++++ .../Options/StringOption.cs | 10 ++ build/BenchmarkDotNet.Build/Program.cs | 16 ++-- .../Runners/DocumentationRunner.cs | 7 +- .../Runners/GitRunner.cs | 6 +- .../Runners/ReleaseRunner.cs | 96 ++++++++----------- build/common.props | 2 +- 16 files changed, 160 insertions(+), 118 deletions(-) create mode 100644 build/BenchmarkDotNet.Build/EnvVar.cs delete mode 100644 build/BenchmarkDotNet.Build/Meta/GitHubCredentials.cs diff --git a/build/BenchmarkDotNet.Build/BuildContext.cs b/build/BenchmarkDotNet.Build/BuildContext.cs index d20e5891e7..b09456c6e2 100644 --- a/build/BenchmarkDotNet.Build/BuildContext.cs +++ b/build/BenchmarkDotNet.Build/BuildContext.cs @@ -5,6 +5,7 @@ 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; @@ -23,9 +24,6 @@ public class BuildContext : FrostingContext { public string BuildConfiguration { get; set; } = "Release"; public DotNetVerbosity BuildVerbosity { get; set; } = DotNetVerbosity.Minimal; - public bool VersionStable { get; } - public string NextVersion { get; } - public bool PushMode { get; } public DirectoryPath RootDirectory { get; } public DirectoryPath BuildDirectory { get; } @@ -83,9 +81,7 @@ public BuildContext(ICakeContext context) MsBuildSettingsBuild.WithProperty("UseSharedCompilation", "false"); } - VersionStable = false; - NextVersion = ""; - PushMode = false; + if (context.Arguments.HasArgument("msbuild")) { var msBuildParameters = context.Arguments.GetArguments().First(it => it.Key == "msbuild").Value; @@ -109,19 +105,19 @@ public BuildContext(ICakeContext context) if (parsedVerbosity != null) BuildVerbosity = parsedVerbosity.Value; } - - if (name.Equals("VersionStable", StringComparison.OrdinalIgnoreCase) && value != "") - VersionStable = true; - - if (name.Equals("NextVersion", StringComparison.OrdinalIgnoreCase) && value != "") - NextVersion = value; - - if (name.Equals("PushMode", StringComparison.OrdinalIgnoreCase) && value != "") - PushMode = true; } } } + 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" @@ -177,4 +173,13 @@ public void GenerateFile(FilePath filePath, string content, bool reportNoChanges } } + 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/BenchmarkDotNet.Build/ChangeLogBuilder.cs b/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs index a7537c51c6..e7769e1fbd 100644 --- a/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs +++ b/build/BenchmarkDotNet.Build/ChangeLogBuilder.cs @@ -60,7 +60,7 @@ private async Task Build() if (string.IsNullOrEmpty(lastCommit)) lastCommit = $"v{currentVersion}"; - var client = GitHubCredentials.CreateClient(); + var client = Utils.CreateGitHubClient(); if (currentVersion == "_") { diff --git a/build/BenchmarkDotNet.Build/CommandLineParser.cs b/build/BenchmarkDotNet.Build/CommandLineParser.cs index c80535a40f..fdb17328c0 100644 --- a/build/BenchmarkDotNet.Build/CommandLineParser.cs +++ b/build/BenchmarkDotNet.Build/CommandLineParser.cs @@ -86,7 +86,7 @@ public class CommandLineParser private readonly IOption[] baseOptions = { - KnownOptions.Verbosity, KnownOptions.Exclusive, KnownOptions.Help + KnownOptions.Verbosity, KnownOptions.Exclusive, KnownOptions.Help, KnownOptions.Stable }; private void PrintHelp() @@ -108,7 +108,7 @@ private void PrintHelp() WriteLine(); - PrintExamples(GetTasks().SelectMany(task => task.HelpInfo.Examples)); + PrintExamples(GetTasks().SelectMany(task => task.HelpInfo.Examples).ToList()); PrintOptions(baseOptions); @@ -169,10 +169,10 @@ private void PrintTaskHelp(string taskName) if (helpInfo.EnvironmentVariables.Any()) { WriteHeader("Environment variables:"); - foreach (var variable in helpInfo.EnvironmentVariables) + foreach (var envVar in helpInfo.EnvironmentVariables) { WritePrefix(); - WriteOption(variable); + WriteOption(envVar.Name); WriteLine(); } } @@ -237,8 +237,10 @@ int GetWidth(IOption option) WriteLine(); } - private void PrintExamples(IEnumerable examples) + private void PrintExamples(IReadOnlyList examples) { + if (!examples.Any()) + return; WriteHeader("Examples:"); foreach (var example in examples) 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 index 831def85d3..eaef9799e5 100644 --- a/build/BenchmarkDotNet.Build/Example.cs +++ b/build/BenchmarkDotNet.Build/Example.cs @@ -15,19 +15,19 @@ public Example(string taskName) TaskName = taskName; } - public Example WithArgument(string name, string? value = null) + public Example WithMsBuildArgument(string name, string value) { - arguments.Add(new Argument(name, value, false)); + arguments.Add(new Argument(name, value, true)); return this; } - public Example WithMsBuildArgument(string name, string value) + public Example WithArgument(BoolOption option) { - arguments.Add(new Argument(name, value, true)); + arguments.Add(new Argument(option.CommandLineName, null, false)); return this; } - public Example WithArgument(IOption option, string? value = null) + public Example WithArgument(StringOption option, string value) { arguments.Add(new Argument(option.CommandLineName, value, false)); return this; diff --git a/build/BenchmarkDotNet.Build/HelpInfo.cs b/build/BenchmarkDotNet.Build/HelpInfo.cs index c7718cd7f5..5de8c27931 100644 --- a/build/BenchmarkDotNet.Build/HelpInfo.cs +++ b/build/BenchmarkDotNet.Build/HelpInfo.cs @@ -7,6 +7,6 @@ public class HelpInfo { public string Description { get; init; } = ""; public IOption[] Options { get; init; } = Array.Empty(); - public string[] EnvironmentVariables { 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/Utils.cs b/build/BenchmarkDotNet.Build/Helpers/Utils.cs index 017e092419..6e97e34618 100644 --- a/build/BenchmarkDotNet.Build/Helpers/Utils.cs +++ b/build/BenchmarkDotNet.Build/Helpers/Utils.cs @@ -1,7 +1,10 @@ using System; using System.Collections.Generic; using System.Runtime.InteropServices; +using BenchmarkDotNet.Build.Options; +using Cake.Common.Diagnostics; using Cake.Common.Tools.DotNet; +using Octokit; namespace BenchmarkDotNet.Build.Helpers; @@ -35,4 +38,14 @@ public static string GetOs() }; 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; + } } \ No newline at end of file diff --git a/build/BenchmarkDotNet.Build/Meta/GitHubCredentials.cs b/build/BenchmarkDotNet.Build/Meta/GitHubCredentials.cs deleted file mode 100644 index c174784417..0000000000 --- a/build/BenchmarkDotNet.Build/Meta/GitHubCredentials.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using Octokit; - -namespace BenchmarkDotNet.Build.Meta; - -public static class GitHubCredentials -{ - public const string TokenVariableName = "GITHUB_TOKEN"; - - public const string ProductHeader = "BenchmarkDotNet"; - public static string? Token => Environment.GetEnvironmentVariable(TokenVariableName); - - public static GitHubClient CreateClient() - { - var client = new GitHubClient(new ProductHeaderValue(ProductHeader)); - var tokenAuth = new Credentials(Token); - client.Credentials = tokenAuth; - return client; - } -} \ No newline at end of file diff --git a/build/BenchmarkDotNet.Build/Options/BoolOption.cs b/build/BenchmarkDotNet.Build/Options/BoolOption.cs index 5a437d8095..3213ee8d54 100644 --- a/build/BenchmarkDotNet.Build/Options/BoolOption.cs +++ b/build/BenchmarkDotNet.Build/Options/BoolOption.cs @@ -17,4 +17,11 @@ public override bool Resolve(BuildContext context) 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/KnownOptions.cs b/build/BenchmarkDotNet.Build/Options/KnownOptions.cs index 19467c09c3..c5101e1d52 100644 --- a/build/BenchmarkDotNet.Build/Options/KnownOptions.cs +++ b/build/BenchmarkDotNet.Build/Options/KnownOptions.cs @@ -34,4 +34,21 @@ public static class KnownOptions 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/StringOption.cs b/build/BenchmarkDotNet.Build/Options/StringOption.cs index 66a3bc375b..657017dbe2 100644 --- a/build/BenchmarkDotNet.Build/Options/StringOption.cs +++ b/build/BenchmarkDotNet.Build/Options/StringOption.cs @@ -1,3 +1,5 @@ +using System; + namespace BenchmarkDotNet.Build.Options; public class StringOption : Option @@ -16,4 +18,12 @@ public override string Resolve(BuildContext context) 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 index 1f431d17c7..58d72f4cf8 100644 --- a/build/BenchmarkDotNet.Build/Program.cs +++ b/build/BenchmarkDotNet.Build/Program.cs @@ -1,4 +1,3 @@ -using BenchmarkDotNet.Build.Meta; using BenchmarkDotNet.Build.Options; using Cake.Common; using Cake.Frosting; @@ -129,7 +128,8 @@ public HelpInfo GetHelp() { new Example(Name) .WithMsBuildArgument("VersionPrefix", "0.1.1729") - .WithMsBuildArgument("VersionSuffix", "preview") + .WithMsBuildArgument("VersionSuffix", "preview"), + new Example(Name).WithArgument(KnownOptions.Stable) } }; } @@ -147,7 +147,7 @@ public HelpInfo GetHelp() return new HelpInfo { Options = new IOption[] { KnownOptions.DocsPreview, KnownOptions.DocsDepth }, - EnvironmentVariables = new[] { GitHubCredentials.TokenVariableName }, + EnvironmentVariables = new[] { EnvVar.GitHubToken }, Examples = new[] { new Example(Name) @@ -210,10 +210,14 @@ public class ReleaseTask : FrostingTask, IHelpProvider public HelpInfo GetHelp() => new() { - EnvironmentVariables = new[] + Options = new IOption[] { KnownOptions.NextVersion, KnownOptions.Push }, + EnvironmentVariables = new[] { EnvVar.GitHubToken, EnvVar.NuGetToken }, + Examples = new[] { - GitHubCredentials.TokenVariableName, - "NUGET_TOKEN" + 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/DocumentationRunner.cs b/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs index 7b59d223fc..82edd849c5 100644 --- a/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs +++ b/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs @@ -57,14 +57,13 @@ public DocumentationRunner(BuildContext context) public void Update() { + EnvVar.GitHubToken.AssertHasValue(); + ReadmeUpdater.Run(context); UpdateLastFooter(); EnsureChangelogDetailsExist(); - if (string.IsNullOrEmpty(GitHubCredentials.Token)) - throw new Exception($"Environment variable '{GitHubCredentials.TokenVariableName}' is not specified!"); - var history = context.VersionHistory; var stableVersionCount = history.StableVersions.Length; @@ -294,7 +293,7 @@ private void UpdateLastFooter() { var version = context.VersionHistory.CurrentVersion; var previousVersion = context.VersionHistory.StableVersions.Last(); - var date = context.VersionStable + var date = KnownOptions.Stable.Resolve(context) ? DateTime.Now.ToString("MMMM dd, yyyy", CultureInfo.InvariantCulture) : "TBA"; diff --git a/build/BenchmarkDotNet.Build/Runners/GitRunner.cs b/build/BenchmarkDotNet.Build/Runners/GitRunner.cs index 0fd1ae5640..37ab8d5c0b 100644 --- a/build/BenchmarkDotNet.Build/Runners/GitRunner.cs +++ b/build/BenchmarkDotNet.Build/Runners/GitRunner.cs @@ -63,13 +63,11 @@ public void Push(string target, bool force = false) context.Information("[GitPush]"); context.Information($" Target: {target}"); context.Information($" Force: {force}"); - if (context.PushMode) + context.RunOnlyInPushMode(() => { var forceFlag = force ? " --force" : ""; RunCommand($"push origin {target}{forceFlag}"); - } - else - context.Information(" Skip because PushMode is disabled"); + }); } private void RunCommand(string commandLineArgs) => RunCommand(null, commandLineArgs); diff --git a/build/BenchmarkDotNet.Build/Runners/ReleaseRunner.cs b/build/BenchmarkDotNet.Build/Runners/ReleaseRunner.cs index 10873340ef..053d2f4a05 100644 --- a/build/BenchmarkDotNet.Build/Runners/ReleaseRunner.cs +++ b/build/BenchmarkDotNet.Build/Runners/ReleaseRunner.cs @@ -3,7 +3,9 @@ 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; @@ -24,48 +26,46 @@ public ReleaseRunner(BuildContext context) public void Run() { - var nextVersion = context.NextVersion; + 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 isStable = context.VersionStable; var tag = "v" + currentVersion; - if (string.IsNullOrEmpty(nextVersion)) - throw new Exception("NextVersion is not specified"); - if (!isStable) - throw new Exception("VersionStable is not specified"); - if (string.IsNullOrEmpty(GitHubCredentials.Token)) - throw new Exception($"Environment variable '{GitHubCredentials.TokenVariableName}' is not specified!"); - if (string.IsNullOrEmpty(Environment.GetEnvironmentVariable("NUGET_TOKEN"))) - throw new Exception($"Environment variable 'NUGET_TOKEN' is not specified!"); - context.GitRunner.Tag(tag); - context.GitRunner.BranchMove(Repo.DocsStableBranch, "HEAD"); - + // Upgrade current version and commit changes - UpdateVersionsTxt(); - UpdateCommonProps(); + UpdateVersionsTxt(nextVersion); + UpdateCommonProps(nextVersion); context.Information($"Building {context.TemplatesTestsProjectFile}"); context.BuildRunner.BuildProjectSilent(context.TemplatesTestsProjectFile); context.GitRunner.Commit($"Set next BenchmarkDotNet version: {nextVersion}"); - - UpdateMilestones().Wait(); - + + 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().Wait(); + PublishGitHubRelease(); } - private void UpdateVersionsTxt() + private void UpdateVersionsTxt(string versionToAppend) { var content = context.FileReadText(context.VersionsFile).Trim(); - context.GenerateFile(context.VersionsFile, $"{content}\n{context.NextVersion}"); + context.GenerateFile(context.VersionsFile, $"{content}\n{versionToAppend}"); } - private void UpdateCommonProps() + private void UpdateCommonProps(string newCurrentVersion) { var regex = new Regex(@"([\d\.]+)"); @@ -75,43 +75,34 @@ private void UpdateCommonProps() throw new Exception($"Failed to find VersionPrefix definition in {context.CommonPropsFile}"); var oldVersion = match.Groups[1].Value; - context.GenerateFile(context.CommonPropsFile, content.Replace(oldVersion, context.NextVersion)); + context.GenerateFile(context.CommonPropsFile, content.Replace(oldVersion, newCurrentVersion)); } - private async Task UpdateMilestones() + private async Task UpdateMilestones(string nextVersion) { var currentVersion = context.VersionHistory.CurrentVersion; - var nextVersion = context.NextVersion; - var client = GitHubCredentials.CreateClient(); + 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}"); - if (context.PushMode) + context.RunOnlyInPushMode(() => { - await client.Issue.Milestone.Update(Repo.Owner, Repo.Name, currentMilestone.Number, - new MilestoneUpdate { State = ItemState.Closed, DueOn = DateTimeOffset.Now }); - } - else - { - context.Information(" Skip because PushMode is disabled"); - } + 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}"); - if (context.PushMode) - { - await client.Issue.Milestone.Create(Repo.Owner, Repo.Name, new NewMilestone($"v{nextVersion}")); - } - else + context.RunOnlyInPushMode(() => { - context.Information(" Skip because PushMode is disabled"); - } + client.Issue.Milestone.Create(Repo.Owner, Repo.Name, new NewMilestone($"v{nextVersion}")).Wait(); + }); } private void PushNupkg() { - var nuGetToken = Environment.GetEnvironmentVariable("NUGET_TOKEN"); + var nuGetToken = EnvVar.NuGetToken.GetValue(); var files = context .GetFiles(context.ArtifactsDirectory.CombineWithFilePath("*").FullPath) @@ -126,14 +117,11 @@ private void PushNupkg() foreach (var file in files) { context.Information($"Push: {file}"); - if (context.PushMode) - context.DotNetNuGetPush(file, settings); - else - context.Information(" Skip because PushMode is disabled"); + context.RunOnlyInPushMode(() => context.DotNetNuGetPush(file, settings)); } } - private async Task PublishGitHubRelease() + private void PublishGitHubRelease() { var version = context.VersionHistory.CurrentVersion; var tag = $"v{version}"; @@ -145,23 +133,19 @@ private async Task PublishGitHubRelease() PreprocessMarkdown(context.FileReadText(notesFile)); context.Information($"[GitHub] Creating release '{version}'"); - var client = GitHubCredentials.CreateClient(); - if (context.PushMode) + var client = Utils.CreateGitHubClient(); + context.RunOnlyInPushMode(() => { - await client.Repository.Release.Create(Repo.Owner, Repo.Name, new NewRelease(tag) + 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"); - } - else - { - context.Information(" Skip because PushMode is disabled"); - } + }); } private static string PreprocessMarkdown(string content) diff --git a/build/common.props b/build/common.props index 7037f3bed9..8254859142 100644 --- a/build/common.props +++ b/build/common.props @@ -40,7 +40,7 @@ 0.13.7 - + develop ci From 8a7caa7acd6a2b2f5e49b57f225ccbabd268029b Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Wed, 12 Jul 2023 18:25:47 +0400 Subject: [PATCH 71/73] [build] Rework ReadmeUpdater --- README.md | 44 ++-------- build/BenchmarkDotNet.Build/BuildContext.cs | 2 + .../CommandLineParser.cs | 4 +- build/BenchmarkDotNet.Build/Helpers/Utils.cs | 14 +++- build/BenchmarkDotNet.Build/Meta/Repo.cs | 18 ++++ build/BenchmarkDotNet.Build/Program.cs | 6 ++ .../Runners/DocumentationRunner.cs | 14 +++- .../Runners/ReadmeUpdater.cs | 82 ------------------- .../Runners/ReleaseRunner.cs | 14 ++-- 9 files changed, 63 insertions(+), 135 deletions(-) delete mode 100644 build/BenchmarkDotNet.Build/Runners/ReadmeUpdater.cs diff --git a/README.md b/README.md index fa0f673bac..4d3518d5bf 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,11 @@ 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 [16600+ GitHub projects](#who-uses-benchmarkdotnet) including .NET Runtime. +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 the following example (copy-pastable version is [here](https://benchmarkdotnet.org/articles/guides/getting-started.html)): @@ -229,44 +233,6 @@ 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 [16600+](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). - ## Learn more about benchmarking BenchmarkDotNet is not a silver bullet that magically makes all of your benchmarks correct and analyzes the measurements for you. diff --git a/build/BenchmarkDotNet.Build/BuildContext.cs b/build/BenchmarkDotNet.Build/BuildContext.cs index b09456c6e2..a13c77c5ed 100644 --- a/build/BenchmarkDotNet.Build/BuildContext.cs +++ b/build/BenchmarkDotNet.Build/BuildContext.cs @@ -34,6 +34,7 @@ public class BuildContext : FrostingContext public FilePathCollection AllPackableSrcProjects { get; } public FilePath VersionsFile { get; } public FilePath CommonPropsFile { get; } + public FilePath ReadmeFile { get; } public DotNetMSBuildSettings MsBuildSettingsRestore { get; } public DotNetMSBuildSettings MsBuildSettingsBuild { get; } @@ -68,6 +69,7 @@ public BuildContext(ICakeContext context) VersionsFile = BuildDirectory.CombineWithFilePath("versions.txt"); CommonPropsFile = BuildDirectory.CombineWithFilePath("common.props"); + ReadmeFile = RootDirectory.CombineWithFilePath("README.md"); MsBuildSettingsRestore = new DotNetMSBuildSettings(); MsBuildSettingsBuild = new DotNetMSBuildSettings(); diff --git a/build/BenchmarkDotNet.Build/CommandLineParser.cs b/build/BenchmarkDotNet.Build/CommandLineParser.cs index fdb17328c0..e97676ca68 100644 --- a/build/BenchmarkDotNet.Build/CommandLineParser.cs +++ b/build/BenchmarkDotNet.Build/CommandLineParser.cs @@ -143,11 +143,11 @@ private void PrintTaskHelp(string taskName) ? $"Task '{taskName}': {taskDescription}" : $"Task '{taskName}'"); - if (string.IsNullOrWhiteSpace(helpInfo.Description)) + if (!string.IsNullOrWhiteSpace(helpInfo.Description)) foreach (var line in helpInfo.Description.Split('\n', StringSplitOptions.RemoveEmptyEntries)) { WritePrefix(); - WriteLine(line.Trim()); + WriteLine(line.TrimEnd()); } WriteLine(); diff --git a/build/BenchmarkDotNet.Build/Helpers/Utils.cs b/build/BenchmarkDotNet.Build/Helpers/Utils.cs index 6e97e34618..2d6bbfc520 100644 --- a/build/BenchmarkDotNet.Build/Helpers/Utils.cs +++ b/build/BenchmarkDotNet.Build/Helpers/Utils.cs @@ -1,8 +1,7 @@ using System; using System.Collections.Generic; using System.Runtime.InteropServices; -using BenchmarkDotNet.Build.Options; -using Cake.Common.Diagnostics; +using System.Text.RegularExpressions; using Cake.Common.Tools.DotNet; using Octokit; @@ -48,4 +47,15 @@ public static GitHubClient CreateGitHubClient() 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/Meta/Repo.cs b/build/BenchmarkDotNet.Build/Meta/Repo.cs index ec1231a9d0..38215fcce8 100644 --- a/build/BenchmarkDotNet.Build/Meta/Repo.cs +++ b/build/BenchmarkDotNet.Build/Meta/Repo.cs @@ -1,3 +1,8 @@ +using System; +using System.Net.Http; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + namespace BenchmarkDotNet.Build.Meta; public static class Repo @@ -10,4 +15,17 @@ public static class Repo 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/Program.cs b/build/BenchmarkDotNet.Build/Program.cs index 58d72f4cf8..1ff1a26a7b 100644 --- a/build/BenchmarkDotNet.Build/Program.cs +++ b/build/BenchmarkDotNet.Build/Program.cs @@ -1,3 +1,4 @@ +using BenchmarkDotNet.Build.Meta; using BenchmarkDotNet.Build.Options; using Cake.Common; using Cake.Frosting; @@ -146,6 +147,11 @@ 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[] diff --git a/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs b/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs index 82edd849c5..6883abe79a 100644 --- a/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs +++ b/build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs @@ -3,6 +3,7 @@ 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; @@ -59,7 +60,7 @@ public void Update() { EnvVar.GitHubToken.AssertHasValue(); - ReadmeUpdater.Run(context); + UpdateReadme(); UpdateLastFooter(); EnsureChangelogDetailsExist(); @@ -96,6 +97,17 @@ public void Update() "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) diff --git a/build/BenchmarkDotNet.Build/Runners/ReadmeUpdater.cs b/build/BenchmarkDotNet.Build/Runners/ReadmeUpdater.cs deleted file mode 100644 index c040beada3..0000000000 --- a/build/BenchmarkDotNet.Build/Runners/ReadmeUpdater.cs +++ /dev/null @@ -1,82 +0,0 @@ -using System; -using System.Net.Http; -using System.Text.RegularExpressions; -using System.Threading.Tasks; -using BenchmarkDotNet.Build.Meta; -using Cake.FileHelpers; - -namespace BenchmarkDotNet.Build.Runners; - -public class ReadmeUpdater -{ - public static void Run(BuildContext context) => new ReadmeUpdater().RunInternal(context); - - private void RunInternal(BuildContext context) - { - var dependentProjectsNumber = GetDependentProjectsNumber().Result; - var updaters = new LineUpdater[] - { - new( - "The library is adopted by", - @"\[(\d+)\+ GitHub projects\]", - dependentProjectsNumber - ), - new( - "BenchmarkDotNet is already adopted by more than ", - @"\[(\d+)\+\]", - dependentProjectsNumber - ), - }; - - var file = context.RootDirectory.CombineWithFilePath("README.md"); - var lines = context.FileReadLines(file); - for (var i = 0; i < lines.Length; i++) - { - foreach (var updater in updaters) - lines[i] = updater.Apply(lines[i]); - } - - context.FileWriteLines(file, lines); - } - - private static async Task GetDependentProjectsNumber() - { - using var httpClient = new HttpClient(); - const string url = $"{Repo.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; - } - - private class LineUpdater - { - public string Prefix { get; } - public Regex Regex { get; } - public int Value { get; } - - public LineUpdater(string prefix, string regex, int value) - { - Prefix = prefix; - Regex = new Regex(regex); - Value = value; - } - - public string Apply(string line) - { - if (!line.StartsWith(Prefix)) - return line; - - var match = Regex.Match(line); - if (!match.Success) - return line; - - // Groups[1] refers to the first group (\d+) - var numberString = match.Groups[1].Value; - var number = int.Parse(numberString); - return line.Replace(number.ToString(), Value.ToString()); - } - } -} \ No newline at end of file diff --git a/build/BenchmarkDotNet.Build/Runners/ReleaseRunner.cs b/build/BenchmarkDotNet.Build/Runners/ReleaseRunner.cs index 053d2f4a05..b1d2e191e4 100644 --- a/build/BenchmarkDotNet.Build/Runners/ReleaseRunner.cs +++ b/build/BenchmarkDotNet.Build/Runners/ReleaseRunner.cs @@ -67,15 +67,11 @@ private void UpdateVersionsTxt(string versionToAppend) private void UpdateCommonProps(string newCurrentVersion) { - var regex = new Regex(@"([\d\.]+)"); - - var content = context.FileReadText(context.CommonPropsFile); - var match = regex.Match(content); - if (!match.Success) - throw new Exception($"Failed to find VersionPrefix definition in {context.CommonPropsFile}"); - - var oldVersion = match.Groups[1].Value; - context.GenerateFile(context.CommonPropsFile, content.Replace(oldVersion, newCurrentVersion)); + var content = Utils.ApplyRegex( + context.FileReadText(context.CommonPropsFile), + @"([\d\.]+)", + newCurrentVersion); + context.GenerateFile(context.CommonPropsFile, content); } private async Task UpdateMilestones(string nextVersion) From 7a8135baac605861635a0b379048c59f1683ca28 Mon Sep 17 00:00:00 2001 From: Mohammad Rahhal Date: Thu, 13 Jul 2023 13:02:19 +0300 Subject: [PATCH 72/73] IComparable fallback for Tuple/ValueTuple (#2368) * Catch CompareTo argument exceptions and fallback to string comparison * Catch when message contains expected IComparable error --- .../Parameters/ParameterComparer.cs | 11 ++- .../ParameterComparerTests.cs | 68 +++++++++++++++++++ 2 files changed, 78 insertions(+), 1 deletion(-) diff --git a/src/BenchmarkDotNet/Parameters/ParameterComparer.cs b/src/BenchmarkDotNet/Parameters/ParameterComparer.cs index a1363de073..6cadf6a946 100644 --- a/src/BenchmarkDotNet/Parameters/ParameterComparer.cs +++ b/src/BenchmarkDotNet/Parameters/ParameterComparer.cs @@ -28,7 +28,16 @@ private int CompareValues(object x, object y) if (x != null && y != null && x.GetType() == y.GetType() && x is IComparable xComparable) { - return xComparable.CompareTo(y); + try + { + return xComparable.CompareTo(y); + } + // Some types, such as Tuple and ValueTuple, have a fallible CompareTo implementation which can throw if the inner items don't implement IComparable. + // See: https://github.com/dotnet/BenchmarkDotNet/issues/2346 + // For now, catch and ignore the exception, and fallback to string comparison below. + catch (ArgumentException ex) when (ex.Message.Contains("At least one object must implement IComparable.")) + { + } } // Anything else. 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 From fd2639ff7b9e8353bb48c0eb6668c8bf32d19792 Mon Sep 17 00:00:00 2001 From: Tim Cassell <35501420+timcassell@users.noreply.github.com> Date: Mon, 17 Jul 2023 04:14:13 -0400 Subject: [PATCH 73/73] Removed `PackageReference` from copied settings. (#2365) --- .../Toolchains/CsProj/CsProjGenerator.cs | 3 +- .../CsProjGeneratorTests.cs | 58 ------------------- 2 files changed, 1 insertion(+), 60 deletions(-) diff --git a/src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs b/src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs index 2934a28ed2..d732275d95 100644 --- a/src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs +++ b/src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs @@ -34,8 +34,7 @@ public class CsProjGenerator : DotNetCliGenerator, IEquatable "CopyLocalLockFileAssemblies", "PreserveCompilationContext", "UserSecretsId", - "EnablePreviewFeatures", - "PackageReference" + "EnablePreviewFeatures" }.ToImmutableArray(); public string RuntimeFrameworkVersion { get; } diff --git a/tests/BenchmarkDotNet.Tests/CsProjGeneratorTests.cs b/tests/BenchmarkDotNet.Tests/CsProjGeneratorTests.cs index 1888e05227..715d7dad64 100644 --- a/tests/BenchmarkDotNet.Tests/CsProjGeneratorTests.cs +++ b/tests/BenchmarkDotNet.Tests/CsProjGeneratorTests.cs @@ -94,64 +94,6 @@ public void UseWpfSettingGetsCopied() Assert.Equal("Microsoft.NET.Sdk", sdkName); } - [Fact] - public void PackageReferenceSingleLineGetsCopied() - { - const string WithPackageReference = @" - - - AnyCPU - - - - - - -"; - var sut = new CsProjGenerator("netcoreapp3.0", null, null, null, true); - - var xmlDoc = new XmlDocument(); - xmlDoc.LoadXml(WithPackageReference); - var (customProperties, sdkName) = sut.GetSettingsThatNeedToBeCopied(xmlDoc, TestAssemblyFileInfo); - - AssertCustomProperties(@" - -", customProperties); - Assert.Equal("Microsoft.NET.Sdk", sdkName); - } - - [Fact] - public void PackageReferenceMultiLineGetsCopied() - { - const string WithPackageReference = @" - - - AnyCPU - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - -"; - var sut = new CsProjGenerator("netcoreapp3.0", null, null, null, true); - - var xmlDoc = new XmlDocument(); - xmlDoc.LoadXml(WithPackageReference); - var (customProperties, sdkName) = sut.GetSettingsThatNeedToBeCopied(xmlDoc, TestAssemblyFileInfo); - - AssertCustomProperties(@" - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - -", customProperties); - Assert.Equal("Microsoft.NET.Sdk", sdkName); - } - [Fact] public void SettingsFromPropsFileImportedUsingAbsolutePathGetCopies() {