Skip to content

Conversation

@gimlichael
Copy link
Member

@gimlichael gimlichael commented Dec 12, 2025

This pull request updates the release notes for multiple NuGet packages across the solution to document the upgrade of dependencies to their latest compatible versions for all supported target frameworks. No code changes are included—only documentation updates for the new version (10.1.1) of each package.

Summary by CodeRabbit

  • New Features

    • Added Version 10.1.1 release with support for .NET 10 and .NET 9.
    • Introduced new benchmark runner tooling for performance analysis.
  • Dependencies

    • Upgraded all package dependencies to latest compatible versions.
    • Added Codebelt.Extensions.BenchmarkDotNet.Console package.
  • Build & Infrastructure

    • Modernized solution file structure.
    • Updated test environment configurations.
  • Documentation

    • Updated package release notes across all packages.
    • Refreshed changelog and README references.

✏️ Tip: You can customize this high-level summary in your review settings.

@gimlichael gimlichael self-assigned this Dec 12, 2025
Copilot AI review requested due to automatic review settings December 12, 2025 01:27
@coderabbitai
Copy link

coderabbitai bot commented Dec 12, 2025

Walkthrough

Version 10.1.1 release update adding release notes across all NuGet packages, upgrading package dependencies to latest compatible versions, migrating from .sln to .slnx solution format, and adjusting build configuration properties.

Changes

Cohort / File(s) Summary
Package Release Notes
.nuget/Cuemon*/PackageReleaseNotes.txt, .nuget/Cuemon.*/PackageReleaseNotes.txt
Added Version 10.1.1 release entries (34 files) with availability details and ALM notes indicating dependencies upgraded to latest compatible versions for all supported target frameworks
Build Configuration
Directory.Build.props, Directory.Build.targets
Moved PackageReleaseNotesFile property from targets to props; property now points to ..\..\.nuget\$(MSBuildProjectName)\PackageReleaseNotes.txt
Dependency Management
Directory.Packages.props
Added Codebelt.Extensions.BenchmarkDotNet.Console v1.0.0; upgraded Microsoft.Data.Sqlite, Microsoft.Bcl.AsyncInterfaces, Microsoft.Extensions.Configuration-related packages to 10.0.1 (netstandard2); bumped Microsoft.Extensions.\* packages to 9.0.11 (net9) and 10.0.1 (net10/netstandard2)
Solution Files
Cuemon.sln, Cuemon.slnx
Removed legacy Cuemon.sln; added new Cuemon.slnx with hierarchical project structure organizing src, test, tooling, and tuning folders
Documentation
README.md, CHANGELOG.md
Updated License and Build Status badge URLs in README; added [10.1.1] release section in CHANGELOG dated 2025-12-12
Benchmark Reports
reports/tuning/Cuemon.*Benchmark-report-github.md (9 files)
Updated BenchmarkDotNet environment metadata, simplified table column layouts, and reformatted results across all benchmarks reflecting new SDK/runtime versions
Test Environment
testenvironments.json
Updated Docker image tag from net8.0.416-9.0.307-10.0.100 to net8.0.416-9.0.307-10.0.101
Tooling
tooling/bdn-runner/Program.cs, tooling/bdn-runner/bdn-runner.csproj
Added new benchmark runner project with Program entry point delegating to BenchmarkProgram.Run, targeting net10.0 with project references to tuning projects

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Package Release Notes files: 34+ files with highly repetitive changes (same pattern applied uniformly) significantly reduces per-file review effort
  • Build property migration: Verify PackageReleaseNotesFile property correctly moved from targets to props and that path resolution works as expected
  • Dependency updates: Confirm version bumps across multiple target frameworks (net4, net9, net10, netstandard2) are intentional and consistent
  • Solution file migration: Validate Cuemon.slnx properly references all projects and maintains correct folder hierarchy
  • Benchmark reports: Multiple reformatted tables with updated environment metadata—verify data integrity and version alignment
  • New tooling project: Review bdn-runner configuration, job registration, and integration with BenchmarkProgram

Possibly related PRs

  • V9.0.10/service pack #127: Performs identical repo-wide release/packaging updates (adding new top-version release notes and bumping package versions)
  • V9.0.2/package maintenance #112: Adds new top release-note entries across many PackageReleaseNotes.txt files and updates package versions in Directory.Packages.props
  • ⬆️ bump dependencies #122: Modifies Directory.Packages.props to update dependency versions across target frameworks

Poem

🐰 A hop and a skip, version ten-point-one-one takes flight,
Dependencies gleaming, all upgraded to their best height,
From .sln we bid goodbye, .slnx shows the way,
Benchmark rabbits dash swiftly through tuning's grand display! ✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'V10.1.1/service update' is clear and directly related to the main objective of the pull request: releasing version 10.1.1 as a service update focused on dependency upgrades.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch v10.1.1/service-update

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 14

🧹 Nitpick comments (14)
.nuget/Cuemon.Extensions.Data.Integrity/PackageReleaseNotes.txt (1)

1-6: Good additive 10.1.1 entry; consider trimming duplication + normalize whitespace-only lines.

The 10.1.1 block matches the established format and keeps 10.1.0 intact (nice). Two small nits:

  • The ALM bullet is identical to 10.1.0; if possible, call out what changed (or reference the central dependency update location) to make 10.1.1 meaningful.
  • Lines 3 and 6 look like non-standard whitespace-only lines (NBSP). Consider normalizing to plain blank lines to avoid future diff churn.
.nuget/Cuemon.Extensions.Threading/PackageReleaseNotes.txt (1)

3-6: Replace NBSP-only “blank” lines with truly empty lines. The   lines tend to create noisy diffs and inconsistent rendering in editors/pack tooling.

.nuget/Cuemon.Extensions.AspNetCore.Authentication/PackageReleaseNotes.txt (1)

1-6: New 10.1.1 entry looks consistent with existing format.

Only nit: the “blank” lines (Line 3 and Line 6) appear to be non-breaking spaces; consider normalizing to plain empty lines to avoid tooling/diff churn.

.nuget/Cuemon.Resilience/PackageReleaseNotes.txt (1)

1-6: 10.1.1 entry addition is straightforward and matches the established pattern.

Same optional whitespace note: if those are NBSP “blank” lines, normalize to empty lines.

.nuget/Cuemon.Diagnostics/PackageReleaseNotes.txt (1)

1-6: Release note addition is consistent and non-invasive.

Optional: normalize “blank” lines (possible NBSP) for cleaner diffs/packaging file parsing.

.nuget/Cuemon.IO/PackageReleaseNotes.txt (1)

1-6: 10.1.1 entry is consistent with the file’s existing TFM conventions.

Optional: same NBSP/whitespace normalization suggestion for the “blank” lines.

.nuget/Cuemon.Data.SqlClient/PackageReleaseNotes.txt (1)

1-6: Release notes entry looks consistent with prior versions.
Minor: consider replacing any NBSP-only “blank” lines (Line 3/6) with normal empty lines to reduce diff churn across editors.

.nuget/Cuemon.AspNetCore/PackageReleaseNotes.txt (1)

1-6: Release notes entry looks good and matches the established format.
Same minor note: avoid NBSP-only blank lines (Line 3/6) if possible.

tooling/bdn-runner/bdn-runner.csproj (1)

4-5: Use TargetFramework (singular) if this project will never be multi-targeted.
Not required, but it avoids implying multi-target intent.

-    <TargetFrameworks>net10.0</TargetFrameworks>
+    <TargetFramework>net10.0</TargetFramework>
.nuget/Cuemon.Core/PackageReleaseNotes.txt (1)

1-6: Release notes entry looks good and consistent.
Optional: normalize NBSP-only blank lines (Line 3/6) to true empty lines.

.nuget/Cuemon.AspNetCore.Mvc/PackageReleaseNotes.txt (1)

1-6: Release notes entry looks good and consistent.
Optional: normalize NBSP-only blank lines (Line 3/6) to true empty lines.

.nuget/Cuemon.Extensions.Runtime.Caching/PackageReleaseNotes.txt (1)

1-6: Consider adding a short “notable dependency upgrades” list (current entry is identical to 10.1.0).
If this release is primarily dependency bumps, listing 2–5 key packages (or linking to a central dependency diff) would make the 10.1.1 block more informative than repeating the 10.1.0 wording.

CHANGELOG.md (1)

9-12: Consider adding “### Changed” bullets for 10.1.1 for consistency with the rest of the changelog.
E.g., one bullet for “Dependencies upgraded across supported TFMs” and one for “BenchmarkDotNet tooling integration”, so the entry is easier to scan.

tooling/bdn-runner/Program.cs (1)

1-22: Add XML docs + verify Codebelt/BenchmarkDotNet API compatibility for the selected versions.

  • Repo guideline: Program / Main are public → add XML doc comments.
  • Please double-check BenchmarkWorkspaceOptions.Slim, CoreRuntime.Core90, and CoreRuntime.Core10_0 are the intended/available runtime identifiers for the versions referenced by the solution.
 public class Program
 {
+    /// <summary>
+    /// Entry point for running BenchmarkDotNet benchmarks using Codebelt's console runner.
+    /// </summary>
+    /// <param name="args">Command-line arguments forwarded to the benchmark runner.</param>
     public static void Main(string[] args)
     {
         BenchmarkProgram.Run(args, o =>
         {
             o.AllowDebugBuild = BenchmarkProgram.IsDebugBuild;
             o.ConfigureBenchmarkDotNet(c =>
             {
                 var slimJob = BenchmarkWorkspaceOptions.Slim;
                 return c.AddJob(slimJob.WithRuntime(CoreRuntime.Core90))
                     .AddJob(slimJob.WithRuntime(CoreRuntime.Core10_0));
             });
         });
     }
 }
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 61b5ed7 and 3bf5212.

📒 Files selected for processing (60)
  • .nuget/Cuemon.AspNetCore.App/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.AspNetCore.Authentication/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.AspNetCore.Mvc/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.AspNetCore.Razor.TagHelpers/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.AspNetCore/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Core.App/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Core/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Data.Integrity/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Data.SqlClient/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Data/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Diagnostics/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.AspNetCore.Authentication/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Text.Json/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Xml/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.AspNetCore.Mvc.RazorPages/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.AspNetCore.Mvc/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.AspNetCore.Text.Json/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.AspNetCore.Xml/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.AspNetCore/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Collections.Generic/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Collections.Specialized/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Core/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Data.Integrity/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Data/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.DependencyInjection/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Diagnostics/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Hosting/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.IO/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Net/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Reflection/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Runtime.Caching/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Text.Json/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Text/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Threading/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Extensions.Xml/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.IO/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Net/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Resilience/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Runtime.Caching/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Security.Cryptography/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Threading/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Cuemon.Xml/PackageReleaseNotes.txt (1 hunks)
  • CHANGELOG.md (1 hunks)
  • Cuemon.sln (0 hunks)
  • Cuemon.slnx (1 hunks)
  • Directory.Build.props (1 hunks)
  • Directory.Build.targets (0 hunks)
  • Directory.Packages.props (2 hunks)
  • README.md (1 hunks)
  • reports/tuning/Cuemon.DateSpanBenchmark-report-github.md (1 hunks)
  • reports/tuning/Cuemon.DelimitedStringBenchmark-report-github.md (1 hunks)
  • reports/tuning/Cuemon.GenerateBenchmark-report-github.md (1 hunks)
  • reports/tuning/Cuemon.Security.Cryptography.AesCryptorBenchmarks-report-github.md (1 hunks)
  • reports/tuning/Cuemon.Security.Cryptography.Sha512256Benchmark-report-github.md (1 hunks)
  • reports/tuning/Cuemon.Security.CyclicRedundancyCheckBenchmark-report-github.md (1 hunks)
  • reports/tuning/Cuemon.Security.FowlerNollVoHashBenchmark-report-github.md (1 hunks)
  • reports/tuning/Cuemon.Security.HashResultBenchmark-report-github.md (1 hunks)
  • testenvironments.json (1 hunks)
  • tooling/bdn-runner/Program.cs (1 hunks)
  • tooling/bdn-runner/bdn-runner.csproj (1 hunks)
💤 Files with no reviewable changes (2)
  • Cuemon.sln
  • Directory.Build.targets
🧰 Additional context used
📓 Path-based instructions (1)
**/*.cs

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Add XML doc comments to public and protected classes and methods where appropriate in C# files

Files:

  • tooling/bdn-runner/Program.cs
🧠 Learnings (18)
📚 Learning: 2025-12-06T22:17:47.167Z
Learnt from: CR
Repo: codebeltnet/cuemon PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-06T22:17:47.167Z
Learning: Applies to **/*Benchmark.cs : Use `[Benchmark]` on methods representing measured operations; consider `Baseline = true` and `Description` to improve report clarity

Applied to files:

  • tooling/bdn-runner/Program.cs
  • tooling/bdn-runner/bdn-runner.csproj
  • reports/tuning/Cuemon.GenerateBenchmark-report-github.md
  • reports/tuning/Cuemon.Security.HashResultBenchmark-report-github.md
  • reports/tuning/Cuemon.Security.Cryptography.AesCryptorBenchmarks-report-github.md
  • Directory.Build.props
  • reports/tuning/Cuemon.DateSpanBenchmark-report-github.md
  • reports/tuning/Cuemon.DelimitedStringBenchmark-report-github.md
  • reports/tuning/Cuemon.Security.CyclicRedundancyCheckBenchmark-report-github.md
📚 Learning: 2025-12-06T22:17:47.167Z
Learnt from: CR
Repo: codebeltnet/cuemon PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-06T22:17:47.167Z
Learning: Applies to **/*Benchmark.cs : Use `[GlobalSetup]` for one-time initialization in benchmarks that is not part of measured work

Applied to files:

  • tooling/bdn-runner/Program.cs
📚 Learning: 2025-12-06T22:17:47.167Z
Learnt from: CR
Repo: codebeltnet/cuemon PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-06T22:17:47.167Z
Learning: Applies to **/*.Benchmarks/**/*.csproj : Modify the associated .csproj file to override the root namespace for benchmarks (e.g., `<RootNamespace>Cuemon.Bar</RootNamespace>`) to match the production assembly

Applied to files:

  • tooling/bdn-runner/Program.cs
  • Cuemon.slnx
  • tooling/bdn-runner/bdn-runner.csproj
  • Directory.Build.props
  • Directory.Packages.props
📚 Learning: 2025-12-06T22:17:47.167Z
Learnt from: CR
Repo: codebeltnet/cuemon PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-06T22:17:47.167Z
Learning: Applies to **/*Benchmark.cs : Use namespaces that mirror the source code structure for benchmarks. DO NOT append `.Benchmarks` to the namespace; benchmarks must live in the same namespace as the production assembly

Applied to files:

  • tooling/bdn-runner/Program.cs
  • tooling/bdn-runner/bdn-runner.csproj
  • Directory.Build.props
  • Directory.Packages.props
📚 Learning: 2025-12-06T22:17:47.167Z
Learnt from: CR
Repo: codebeltnet/cuemon PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-06T22:17:47.167Z
Learning: Benchmarks are primarily for local and tuning runs; be cautious about running heavy BenchmarkDotNet workloads in CI

Applied to files:

  • tooling/bdn-runner/Program.cs
  • tooling/bdn-runner/bdn-runner.csproj
  • reports/tuning/Cuemon.GenerateBenchmark-report-github.md
  • Directory.Build.props
  • reports/tuning/Cuemon.DateSpanBenchmark-report-github.md
📚 Learning: 2025-12-06T22:17:47.167Z
Learnt from: CR
Repo: codebeltnet/cuemon PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-06T22:17:47.167Z
Learning: Applies to **/*Benchmark.cs : Use `[Params]` for input sizes or variations to exercise multiple scenarios in benchmarks

Applied to files:

  • tooling/bdn-runner/Program.cs
📚 Learning: 2025-12-06T22:17:47.167Z
Learnt from: CR
Repo: codebeltnet/cuemon PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-06T22:17:47.167Z
Learning: Applies to **/*Benchmark.cs : Use `[MemoryDiagnoser]` to capture memory allocations in benchmarks

Applied to files:

  • tooling/bdn-runner/Program.cs
  • reports/tuning/Cuemon.GenerateBenchmark-report-github.md
  • reports/tuning/Cuemon.DateSpanBenchmark-report-github.md
📚 Learning: 2025-12-06T22:17:47.167Z
Learnt from: CR
Repo: codebeltnet/cuemon PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-06T22:17:47.167Z
Learning: Applies to **/*Benchmark.cs : Use `[GroupBenchmarksBy(BenchmarkLogicalGroupRule.ByCategory)]` to group related benchmarks

Applied to files:

  • tooling/bdn-runner/Program.cs
  • Directory.Build.props
📚 Learning: 2025-12-06T22:17:47.167Z
Learnt from: CR
Repo: codebeltnet/cuemon PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-06T22:17:47.167Z
Learning: Applies to **/*Benchmark.cs : When comparing implementations, mark one benchmark method with `Baseline = true` and use similar names so reports are easy to read

Applied to files:

  • tooling/bdn-runner/Program.cs
  • reports/tuning/Cuemon.GenerateBenchmark-report-github.md
  • reports/tuning/Cuemon.DateSpanBenchmark-report-github.md
  • reports/tuning/Cuemon.Security.CyclicRedundancyCheckBenchmark-report-github.md
📚 Learning: 2025-12-06T22:17:47.167Z
Learnt from: CR
Repo: codebeltnet/cuemon PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-06T22:17:47.167Z
Learning: Keep benchmark projects isolated (e.g., `tuning/*.csproj`) so they do not affect package builds or production artifacts

Applied to files:

  • tooling/bdn-runner/Program.cs
  • Cuemon.slnx
  • tooling/bdn-runner/bdn-runner.csproj
  • Directory.Build.props
  • Directory.Packages.props
📚 Learning: 2025-12-06T22:17:47.167Z
Learnt from: CR
Repo: codebeltnet/cuemon PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-06T22:17:47.167Z
Learning: Use the same XML documentation style as found throughout the Cuemon codebase

Applied to files:

  • .nuget/Cuemon.Xml/PackageReleaseNotes.txt
  • Cuemon.slnx
  • .nuget/Cuemon.Core.App/PackageReleaseNotes.txt
  • .nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Xml/PackageReleaseNotes.txt
  • .nuget/Cuemon.Extensions.Xml/PackageReleaseNotes.txt
📚 Learning: 2025-12-06T22:17:47.167Z
Learnt from: CR
Repo: codebeltnet/cuemon PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-06T22:17:47.167Z
Learning: Applies to **/*.Tests/**/*.csproj : Modify the associated .csproj file to override the root namespace to match the production code namespace (e.g., `<RootNamespace>Cuemon.Foo</RootNamespace>`) so compiled namespace matches the SUT

Applied to files:

  • Cuemon.slnx
  • tooling/bdn-runner/bdn-runner.csproj
📚 Learning: 2025-12-06T22:17:47.167Z
Learnt from: CR
Repo: codebeltnet/cuemon PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-06T22:17:47.167Z
Learning: Place micro- and component-benchmarks under the `tuning/` folder or in projects named `*.Benchmarks`

Applied to files:

  • tooling/bdn-runner/bdn-runner.csproj
📚 Learning: 2025-12-06T22:17:47.167Z
Learnt from: CR
Repo: codebeltnet/cuemon PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-06T22:17:47.167Z
Learning: For any shared helpers for benchmarking, prefer small utility classes inside the `tuning` projects rather than cross-cutting changes to production code

Applied to files:

  • tooling/bdn-runner/bdn-runner.csproj
📚 Learning: 2025-12-06T22:17:47.167Z
Learnt from: CR
Repo: codebeltnet/cuemon PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-06T22:17:47.167Z
Learning: If a benchmark exposes regressions or optimizations, add a short note in the benchmark file referencing the relevant issue or PR

Applied to files:

  • reports/tuning/Cuemon.GenerateBenchmark-report-github.md
📚 Learning: 2025-12-06T22:17:47.167Z
Learnt from: CR
Repo: codebeltnet/cuemon PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-06T22:17:47.167Z
Learning: Do not rely on external systems except for xUnit itself and `Codebelt.Extensions.Xunit` (and derived from this)

Applied to files:

  • Directory.Packages.props
📚 Learning: 2025-12-06T22:17:47.167Z
Learnt from: CR
Repo: codebeltnet/cuemon PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-06T22:17:47.167Z
Learning: Applies to **/*.Tests/**/*Test.cs : Do NOT add `using Xunit.Abstractions`. Use `using Xunit;` and rely on the `Codebelt.Extensions.Xunit` Test base class for test output access

Applied to files:

  • Directory.Packages.props
📚 Learning: 2025-12-06T22:17:47.167Z
Learnt from: CR
Repo: codebeltnet/cuemon PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-06T22:17:47.167Z
Learning: Benchmarks for the `Cuemon.Bar` assembly live in the `Cuemon.Bar.Benchmarks` assembly

Applied to files:

  • Directory.Packages.props
🧬 Code graph analysis (1)
tooling/bdn-runner/Program.cs (1)
src/Cuemon.Core/Extensions/Reflection/AssemblyDecoratorExtensions.cs (1)
  • IsDebugBuild (26-35)
🪛 LanguageTool
reports/tuning/Cuemon.Security.HashResultBenchmark-report-github.md

[grammar] ~15-~15:
Context: ... | |------------------------------------ |---------- |----- |---------------:|---...

(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_CONTRACTION)


[grammar] ~15-~15:
Context: ...---------------------------- |---------- |----- |---------------:|------------:|-...

(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_CONTRACTION)


[grammar] ~15-~15:
Context: ...--------------------- |---------- |----- |---------------:|------------:|--------...

(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_CONTRACTION)


[grammar] ~15-~15:
Context: ...------ |---------- |----- |---------------:|------------:|------------:|----------...

(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_CONTRACTION)


[grammar] ~15-~15:
Context: ...---- |----- |---------------:|------------:|------------:|---------------:|-------...

(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_CONTRACTION)


[grammar] ~15-~15:
Context: ...--------------:|------------:|------------:|---------------:|---------------:|----...

(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_CONTRACTION)


[grammar] ~15-~15:
Context: ...-----------:|------------:|---------------:|---------------:|---------------:|----...

(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_CONTRACTION)


[grammar] ~15-~15:
Context: ...--------:|---------------:|---------------:|---------------:|-------:|-------:|---...

(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_CONTRACTION)


[grammar] ~15-~15:
Context: ...--------:|---------------:|---------------:|-------:|-------:|----------:| | **&#3...

(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_CONTRACTION)


[grammar] ~15-~15:
Context: ...|---------------:|---------------:|-------:|-------:|----------:| | **'HashRes...

(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_CONTRACTION)


[grammar] ~15-~15:
Context: ...-------:|---------------:|-------:|-------:|----------:| | **'HashResult.GetBy...

(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_CONTRACTION)


[grammar] ~15-~15:
Context: ...----------:|-------:|-------:|----------:| | **'HashResult.GetBytes - copy byt...

(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_CONTRACTION)


[grammar] ~16-~16: Zin met fouten
Context: ...-:| | 'HashResult.GetBytes - copy bytes' | .NET 10.0 | 0 | **...

(QB_NEW_NL_OTHER_ERROR_IDS_REPLACEMENT_MULTITOKEN)


[grammar] ~22-~22: Interpunctie toevoegen
Context: ... ns | - | - | - | | 'HashResult.GetBytes - copy bytes' | .NET 9.0 ...

(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)


[grammar] ~22-~22: Zin met fouten
Context: ... - | | 'HashResult.GetBytes - copy bytes' | .NET 9.0 | 0 | 1.1013 ns | ...

(QB_NEW_NL_OTHER_ERROR_IDS_REPLACEMENT_MULTITOKEN)


[grammar] ~27-~27: Interpunctie toevoegen
Context: ... ns | - | - | - | | 'HashResult.To<string> (converter)' | .NET...

(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)


[grammar] ~28-~28: Zin met fouten
Context: ...- | | 'HashResult.GetBytes - copy bytes' | .NET 10.0 | 8 | **...

(QB_NEW_NL_OTHER_ERROR_IDS_REPLACEMENT_MULTITOKEN)


[grammar] ~33-~33: Interpunctie toevoegen
Context: ... ns | 0.0421 | - | 664 B | | 'HashResult.To<string> (converter)' | .NET...

(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)


[grammar] ~34-~34: Zin met fouten
Context: ...8 B | | 'HashResult.GetBytes - copy bytes' | .NET 9.0 | 8 | 4.9752 ns | ...

(QB_NEW_NL_OTHER_ERROR_IDS_REPLACEMENT_MULTITOKEN)


[grammar] ~39-~39: Interpunctie toevoegen
Context: ... ns | 0.0423 | - | 664 B | | 'HashResult.To<string> (converter)' | .NET...

(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)


[grammar] ~40-~40: Interpunctie toevoegen
Context: ...s | 0.0031 | - | 48 B | | 'HashResult.GetBytes - copy bytes' | **.NET 1...

(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)


[grammar] ~40-~40: Zin met fouten
Context: ...B | | 'HashResult.GetBytes - copy bytes' | .NET 10.0 | 32 | **...

(QB_NEW_NL_OTHER_ERROR_IDS_REPLACEMENT_MULTITOKEN)


[grammar] ~46-~46: Zin met fouten
Context: ...2 B | | 'HashResult.GetBytes - copy bytes' | .NET 9.0 | 32 | 5.6659 ns | ...

(QB_NEW_NL_OTHER_ERROR_IDS_REPLACEMENT_MULTITOKEN)


[grammar] ~52-~52: Zin met fouten
Context: ...B | | 'HashResult.GetBytes - copy bytes' | .NET 10.0 | 256 | **1...

(QB_NEW_NL_OTHER_ERROR_IDS_REPLACEMENT_MULTITOKEN)


[grammar] ~58-~58: Zin met fouten
Context: ...2 B | | 'HashResult.GetBytes - copy bytes' | .NET 9.0 | 256 | 13.3596 ns | ...

(QB_NEW_NL_OTHER_ERROR_IDS_REPLACEMENT_MULTITOKEN)


[grammar] ~64-~64: Interpunctie toevoegen
Context: ...s | 0.0453 | - | 712 B | | 'HashResult.GetBytes - copy bytes' | **.NET 1...

(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)


[grammar] ~64-~64: Zin met fouten
Context: ...B | | 'HashResult.GetBytes - copy bytes' | .NET 10.0 | 1024 | **3...

(QB_NEW_NL_OTHER_ERROR_IDS_REPLACEMENT_MULTITOKEN)


[grammar] ~69-~69: Interpunctie toevoegen
Context: ... ns | 4.8359 | - | 76504 B | | 'HashResult.To<string> (converter)' | .NET...

(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)


[grammar] ~70-~70: Interpunctie toevoegen
Context: ... ns | 0.1755 | - | 2760 B | | 'HashResult.GetBytes - copy bytes' | .NET 9.0 ...

(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)


[grammar] ~70-~70: Zin met fouten
Context: ...0 B | | 'HashResult.GetBytes - copy bytes' | .NET 9.0 | 1024 | 80.2916 ns | ...

(QB_NEW_NL_OTHER_ERROR_IDS_REPLACEMENT_MULTITOKEN)


[grammar] ~75-~75: Interpunctie toevoegen
Context: ... ns | 4.8257 | - | 76504 B | | 'HashResult.To<string> (converter)' | .NET...

(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)

reports/tuning/Cuemon.Security.Cryptography.AesCryptorBenchmarks-report-github.md

[grammar] ~20-~20: Interpunctie toevoegen
Context: ... 768.6 ns | 0.0511 | 840 B | | AesCryptor.Encrypt | .NET 10.0 | 1024 | ...

(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)


[grammar] ~24-~24: Interpunctie toevoegen
Context: ... 1,392.8 ns | 0.1075 | 1736 B | | AesCryptor.Encrypt | .NET 10.0 | 65536 | ...

(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)

README.md

[uncategorized] ~32-~32: The official name of this software platform is spelled with a capital “H”.
Context: ...ps://sonarcloud.io/dashboard?id=Cuemon) Contributor Covenant [![OpenSSF Scorecar...

(GITHUB)

🪛 markdownlint-cli2 (0.18.1)
reports/tuning/Cuemon.GenerateBenchmark-report-github.md

14-14: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)

reports/tuning/Cuemon.Security.HashResultBenchmark-report-github.md

14-14: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)

reports/tuning/Cuemon.Security.FowlerNollVoHashBenchmark-report-github.md

14-14: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)

reports/tuning/Cuemon.Security.Cryptography.AesCryptorBenchmarks-report-github.md

14-14: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)

reports/tuning/Cuemon.DateSpanBenchmark-report-github.md

14-14: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)

reports/tuning/Cuemon.DelimitedStringBenchmark-report-github.md

14-14: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)

reports/tuning/Cuemon.Security.Cryptography.Sha512256Benchmark-report-github.md

14-14: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: CodeQL analysis (csharp)
  • GitHub Check: Agent
  • GitHub Check: call-build (Release) / 🛠️ Build
  • GitHub Check: call-build (Debug) / 🛠️ Build
  • GitHub Check: Analyze (csharp)
🔇 Additional comments (39)
.nuget/Cuemon.Extensions.Collections.Generic/PackageReleaseNotes.txt (1)

1-6: Confirm the 10.1.1 entry isn’t an accidental duplicate of 10.1.0 (and consider whitespace normalization).

Line 5 is identical to the 10.1.0 ALM bullet (Line 11). If 10.1.1 truly only rolls dependency bumps, this is fine; otherwise consider adding the missing specifics (or at least key upgraded packages). Also, Lines 3/6 appear to be NBSP separators ( ); if not intentional, replacing them with normal blank lines will reduce diff-noise across editors.

.nuget/Cuemon.Extensions.Text/PackageReleaseNotes.txt (1)

1-6: Verify that Version 10.1.1 release notes are complete.

Lines 5 and 11 contain identical dependency upgrade messages for versions 10.1.1 and 10.1.0 respectively. In a typical release cycle, patch versions (10.1.0 → 10.1.1) or minor versions should document distinct changes. Having identical release notes suggests either:

  1. These two versions genuinely have the same dependency upgrades (possible for maintenance releases), or
  2. Release notes for 10.1.1 are incomplete and missing documentation of additional changes

Please verify that the 10.1.1 release notes accurately reflect all changes in that version. If other package release notes in this PR exhibit the same pattern, consider whether this is intentional across the release or a documentation gap.

[minor_issue]

.nuget/Cuemon.AspNetCore.Razor.TagHelpers/PackageReleaseNotes.txt (1)

1-5: Clarify the differences between Version 10.1.1 and 10.1.0 in the release notes.

Versions 10.1.1 and 10.1.0 have identical release notes content (same Availability and ALM section). For a patch version bump, the release notes should typically document what changed compared to the previous minor version. Either the content for 10.1.1 needs to be more specific about its changes, or this duplication should be verified to ensure it's not a copy-paste error.

Please verify whether Version 10.1.1 contains only the same dependency upgrades as 10.1.0, or if there are additional fixes/changes that should be documented separately.

.nuget/Cuemon.Extensions.Reflection/PackageReleaseNotes.txt (1)

1-6: Release notes for Version 10.1.1 are correctly formatted and documented.

The new version entry follows the established pattern, with consistent formatting, target frameworks, and ALM changelog. The dependency upgrade note aligns with the PR objective of documenting the latest compatible dependency versions for all supported TFMs.

.nuget/Cuemon.Core.App/PackageReleaseNotes.txt (1)

1-5: Release notes for v10.1.1 follow established format and conventions.

The new section maintains consistency with existing entries: proper version header, correct availability statement matching the current support matrix (.NET 10, .NET 9, .NET Standard 2.0), and appropriate ALM categorization language aligned with recent versions.

One minor observation: Version 10.1.1 and 10.1.0 share identical ALM notes (both documenting dependency upgrades). This is likely intentional for consecutive patch releases, but please verify that the v10.1.1 changelog accurately reflects what changed in that specific release and isn't a copy-paste from 10.1.0.

.nuget/Cuemon.Extensions.Text.Json/PackageReleaseNotes.txt (1)

1-6: Verify that Version 10.1.1 release notes are not duplicated from Version 10.1.0.

The new Version 10.1.1 entry (lines 1–6) has identical content to the Version 10.1.0 entry (lines 10–11), both stating the same dependency upgrade note. For consecutive patch releases, this could be confusing for users consuming the package.

Confirm whether:

  • Version 10.1.1 includes only the same dependency upgrades as 10.1.0 (in which case the duplication may be intentional as a convention)
  • Version 10.1.1 has additional changes that should be documented beyond dependency upgrades
  • This pattern is consistent across all other Cuemon.* packages in this PR
.nuget/Cuemon.Extensions.Diagnostics/PackageReleaseNotes.txt (1)

1-6: TFM availability is accurate.

The release notes correctly state ".NET 10, .NET 9 and .NET Standard 2.0" — this matches the TargetFrameworks declared in Directory.Build.props for source projects. The dependency upgrade claim is consistent with the Central Package Management setup shown in Directory.Packages.props, which specifies versioned dependencies for each TFM (e.g., 10.0.1 packages for net10 and netstandard2, 9.0.11 for net9). No issues found.

.nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Xml/PackageReleaseNotes.txt (1)

1-6: 10.1.1 release note entry matches the existing format and intent.

.nuget/Cuemon.Xml/PackageReleaseNotes.txt (1)

1-6: Release-notes entry is correct; no changes needed.

The .NET 10 listing is appropriate. .NET 10 achieved general availability on November 11, 2025 (as an LTS release), well before this PR's date. The repository convention across all release notes is to list supported target frameworks without GA/preview designation, which is clear and consistent.

.nuget/Cuemon.Extensions.AspNetCore.Mvc.RazorPages/PackageReleaseNotes.txt (2)

1-6: Release-notes entry is consistent and clear.

Top-entry for 10.1.1 matches the existing structure and keeps the “dependencies upgraded” message consistent with prior releases.


1-6: No changes required.

The "Availability" field using marketing names (".NET 10 and .NET 9") is consistent with all other package release notes in this repo (Version 10.1.0, 10.0.0, etc.) and follows standard practice for user-facing documentation. The apparent blank lines on lines 3 & 6 contain regular spaces and present no formatting issue. The duplicate ALM entry is acceptable for release notes when versions share identical changes.

.nuget/Cuemon.Extensions.DependencyInjection/PackageReleaseNotes.txt (1)

1-6: 10.1.1 release-note block looks consistent; please double-check the “Availability” TFMs match the package’s actual multi-targeting.
Since the ALM entry is identical to 10.1.0, just ensure 10.1.1 didn’t also change TFMs (or note it here if it did).

.nuget/Cuemon.Extensions.AspNetCore.Xml/PackageReleaseNotes.txt (1)

1-6: Good addition of the 10.1.1 entry; verify this package is intentionally not shipping .NET Standard for 10.1.1.

.nuget/Cuemon.Extensions.IO/PackageReleaseNotes.txt (1)

1-6: 10.1.1 entry is fine; please confirm the “Availability” list (including both .NET Standard 2.1 and 2.0) matches the actual target frameworks produced.

.nuget/Cuemon.Extensions.Data/PackageReleaseNotes.txt (1)

1-6: Looks good; quick verification that Cuemon.Extensions.Data still targets .NET Standard 2.0 in 10.1.1 (since “Availability” claims it).

.nuget/Cuemon.Extensions.Xml/PackageReleaseNotes.txt (1)

1-6: 10.1.1 block is consistent; please ensure whitespace/newlines are consistent (avoid NBSP surprises) so packaging/release-note tooling doesn’t diff or parse oddly.

.nuget/Cuemon.Security.Cryptography/PackageReleaseNotes.txt (1)

1-6: Good 10.1.1 release-note entry; please confirm the stated TFMs (incl. .NET Standard 2.0) match the actual package targets for 10.1.1.

.nuget/Cuemon.AspNetCore.Authentication/PackageReleaseNotes.txt (1)

1-6: LGTM; just verify Cuemon.AspNetCore.Authentication 10.1.1 is indeed only .NET 10/.NET 9 (no netstandard targets) as stated.

.nuget/Cuemon.Runtime.Caching/PackageReleaseNotes.txt (1)

1-6: Looks consistent with the rest of the release-note updates; please confirm the package still targets .NET Standard 2.0 in 10.1.1 as listed.

.nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Text.Json/PackageReleaseNotes.txt (1)

1-6: Looks good; the "Availability: .NET 10 and .NET 9" correctly matches the package's TargetFrameworks (net10.0;net9.0). However, the blank separator lines contain non-breaking spaces (U+00A0) that should be replaced with regular spaces to avoid noisy diffs. Update lines 3 and 6 to use standard whitespace.

.nuget/Cuemon.Data.Integrity/PackageReleaseNotes.txt (1)

1-6: TFMs verified and correct. The stated availability ".NET 10, .NET 9 and .NET Standard 2.0" matches the actual target frameworks declared in Directory.Build.props (net10.0;net9.0;netstandard2.0).

.nuget/Cuemon.Threading/PackageReleaseNotes.txt (1)

1-6: LGTM. The TFMs declared in Directory.Build.props (line 21: net10.0;net9.0;netstandard2.0) match the release note availability statement exactly.

.nuget/Cuemon.Extensions.AspNetCore.Mvc/PackageReleaseNotes.txt (1)

1-6: Verify that version 10.1.1 exists and confirm the target frameworks match the stated availability. The NuGet package version 10.1.1 could not be located in public sources; nearby versions (10.1.0) show support for .NET 10 and .NET 9, but confirm this specific release version and its actual TFMs before publishing.

.nuget/Cuemon.Extensions.Hosting/PackageReleaseNotes.txt (1)

1-6: Version 10.1.1 does not exist on NuGet for Cuemon.Extensions.Hosting. The latest stable release is v9.0.8, which targets .NETStandard 2.0, net8.0, and net9.0. Verify the correct version number for this release note entry.

Likely an incorrect or invalid review comment.

testenvironments.json (1)

10-13: Verify the Docker image tag gimlichael/ubuntu-testrunner:net8.0.416-9.0.307-10.0.101 is published and accessible. Public information about this custom image tag is not available; confirm the tag exists in your Docker registry and that CI can pull it successfully. If using Docker Hub, also verify network access and authentication are properly configured.

.nuget/Cuemon.Extensions.AspNetCore.Text.Json/PackageReleaseNotes.txt (1)

1-6: TFMs are accurate. The project configuration specifies net10.0;net9.0, which correctly matches the stated "Availability: .NET 10 and .NET 9".

.nuget/Cuemon.Extensions.Core/PackageReleaseNotes.txt (1)

1-6: LGTM; 10.1.1 TFMs align correctly with the "Availability" line.

Verified that source projects in this repository target net10.0;net9.0;netstandard2.0 (per Directory.Build.props), which matches the release notes' availability statement exactly.

.nuget/Cuemon.Data/PackageReleaseNotes.txt (1)

1-6: 10.1.1 release block is clear and consistent.

Optional: ensure the “Availability” list is intentionally different from packages that don’t include .NET Standard 2.0 (this one does).

.nuget/Cuemon.Extensions.Collections.Specialized/PackageReleaseNotes.txt (1)

1-6: 10.1.1 block matches the rest of the changelog structure.

Optional: double-check that .NET Standard 2.0 support is still correct for this package, since some others list only .NET 10/.NET 9.

.nuget/Cuemon.Extensions.AspNetCore/PackageReleaseNotes.txt (1)

1-6: 10.1.1 entry looks good; preserves prior sections cleanly.

Optional: confirm the Availability omission of .NET Standard 2.0 is intentional for this package.

.nuget/Cuemon.Extensions.Net/PackageReleaseNotes.txt (1)

1-6: 10.1.1 release note addition is consistent and readable.

Optional: verify the Availability line is correct for this package (includes .NET Standard 2.0).

.nuget/Cuemon.AspNetCore.App/PackageReleaseNotes.txt (1)

1-5: Verify the duplication of dependency-upgrade messaging between v10.1.1 and v10.1.0.

Lines 5 and 11 contain identical wording about upgrading dependencies to latest compatible versions. If both v10.1.0 and v10.1.1 performed dependency upgrades in the same PR, clarify why separate release blocks are needed. If v10.1.0 was a prior release, consider updating its notes to reflect what was actually changed in that version (not a retroactive upgrade).

reports/tuning/Cuemon.Security.Cryptography.Sha512256Benchmark-report-github.md (1)

1-64: Inconsistent benchmark report table schema across reports.

This report uses a different column set (including Ratio, RatioSD, Alloc Ratio) than Cuemon.Security.FowlerNollVoHashBenchmark-report-github.md. Verify whether this inconsistency is intentional or whether all benchmark reports should be standardized to the same schema.

Cuemon.slnx (1)

1-95: All project file references in Cuemon.slnx are present and valid. No action required.

Directory.Packages.props (2)

9-9: Good addition, but please verify package availability/TFM support for Codebelt.Extensions.BenchmarkDotNet.Console 1.0.0.
Since this is a new dependency in central management, confirm it supports your tooling/runtime matrix (net10.0, and whatever the runner uses) and restores cleanly.


24-50: Double-check conditional versioning doesn’t produce surprising restores.
With Microsoft.Data.Sqlite defined under net4 (Line 25), net9 (Line 38), and net10 OR netstandard2 (Line 45), plus separate Microsoft.Extensions.* versions for net9 vs net10, please verify the intended version is selected per TFM and there are no conflicts/warnings during restore.

tooling/bdn-runner/bdn-runner.csproj (2)

14-15: PackageReference relies on central versions—verify the resolved version is the intended one.
Since Line 14 omits Version, ensure Directory.Packages.props is always imported for this project and restore resolves Codebelt.Extensions.BenchmarkDotNet.Console to the expected version.


8-10: The globbed ProjectReference is correctly isolated and poses no risk to package builds. Lines 8-10 use ReferenceOutputAssembly="false" and Private="false", which prevent benchmark assemblies from being copied to output or packaged. The glob pattern is appropriate for this use case (a BenchmarkDotNet runner that discovers all tuning projects) and bdn-runner is not built in CI, so no unintended restoration or build overhead occurs. No changes required.

Directory.Build.props (1)

2-13: No action required — PackageReleaseNotesFile is properly consumed.

The property is read by the PreparePackageReleaseNotesFromFile target in Directory.Build.targets (line 2), which runs before GenerateNuspec and populates the PackageReleaseNotes metadata used by the NuGet pack pipeline. The design is documented and intentional.

Comment on lines +1 to +6
Version 10.1.1
Availability: .NET 10 and .NET 9

# ALM
- CHANGED Dependencies have been upgraded to the latest compatible versions for all supported target frameworks (TFMs)

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Replace non-breaking-space blank lines with plain empty lines to avoid diff/tooling noise.

Line 3 and Line 6 appear to be NBSP-only lines; recommend converting them to truly empty lines.

 Version 10.1.1
 Availability: .NET 10 and .NET 9
- 
+
 # ALM
 - CHANGED Dependencies have been upgraded to the latest compatible versions for all supported target frameworks (TFMs)
- 
+
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Version 10.1.1
Availability: .NET 10 and .NET 9
 
# ALM
- CHANGED Dependencies have been upgraded to the latest compatible versions for all supported target frameworks (TFMs)
 
Version 10.1.1
Availability: .NET 10 and .NET 9
# ALM
- CHANGED Dependencies have been upgraded to the latest compatible versions for all supported target frameworks (TFMs)
🤖 Prompt for AI Agents
.nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Xml/PackageReleaseNotes.txt
lines 1-6 contain lines that are only non-breaking spaces (NBSP) causing
diff/tooling noise; replace those NBSP-only lines with truly empty lines. Open
the file, locate line 3 and line 6, remove any U+00A0 characters on those lines
(or delete the entire line content) so the lines contain no characters, save the
file with UTF-8 encoding, and re-run git diff to confirm the blank lines are
plain empty lines.

Comment on lines +1 to +6
Version 10.1.1
Availability: .NET 10, .NET 9 and .NET Standard 2.0

# ALM
- CHANGED Dependencies have been upgraded to the latest compatible versions for all supported target frameworks (TFMs)

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

cat -n .nuget/Cuemon.Extensions.Threading/PackageReleaseNotes.txt | head -30

Repository: codebeltnet/cuemon

Length of output: 1263


The Version 10.1.1 entry duplicates the exact ALM text from Version 10.1.0: both state "Dependencies have been upgraded to the latest compatible versions for all supported target frameworks (TFMs)". If both versions legitimately upgraded dependencies, differentiate the entries (e.g., note specific dependency changes or versions bumped in each) so readers can distinguish what changed between consecutive releases. If 10.1.1 entry is unintentional duplication from 10.1.0, remove or correct it.

🤖 Prompt for AI Agents
.nuget/Cuemon.Extensions.Threading/PackageReleaseNotes.txt lines 1-6: The
Version 10.1.1 entry duplicates the ALM note from 10.1.0; either clarify what
exactly changed in 10.1.1 (list specific dependencies and versions updated or
mention other changes) or remove/correct the unintended duplicate. Edit the
10.1.1 section to describe unique changes (e.g., "CHANGED Dependency X ->
vA.B.C, Dependency Y -> vD.E.F" or "NO CODE CHANGES; packaging fix") or delete
the entry if it was added accidentally.

Comment on lines +1 to +6
Version 10.1.1
Availability: .NET 10, .NET 9 and .NET Standard 2.0

# ALM
- CHANGED Dependencies have been upgraded to the latest compatible versions for all supported target frameworks (TFMs)

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

10.1.1 release-note block is consistent; consider tightening whitespace + making “dependencies upgraded” more actionable.

  • The new 10.1.1 entry matches the established structure and availability formatting used below.
  • Lines 3 and 6 look like they contain NBSP/nonstandard whitespace; consider normalizing to plain empty lines to avoid churn in future diffs/changelog tooling.
  • Optional: “Dependencies have been upgraded…” is very generic—if feasible, add a short pointer to where the exact dependency bumps are listed (e.g., central package management file / changelog section) so consumers can audit quickly.
🤖 Prompt for AI Agents
In .nuget/Cuemon.Net/PackageReleaseNotes.txt around lines 1 to 6, the 10.1.1
release-note block contains nonstandard whitespace on lines 3 and 6 and a
generic dependency message; normalize those NBSPs to plain empty lines to avoid
diff churn and tighten surrounding whitespace, and replace or augment the
“Dependencies have been upgraded…” line with a short actionable pointer (for
example “See Directory.Build.props / central package management or CHANGELOG.md
for exact package version bumps” or a brief list of the bumped packages) so
consumers can quickly audit the changes.

All code quality analysis are done by [SonarCloud](https://sonarcloud.io/) and [CodeCov.io](https://codecov.io/).

![License](https://img.shields.io/github/license/codebeltnet/cuemon) ![Build Status](https://github.com/codebeltnet/cuemon/actions/workflows/pipelines.yml/badge.svg?branch=main) [![codecov](https://codecov.io/gh/codebeltnet/cuemon/branch/development/graph/badge.svg)](https://codecov.io/gh/codebeltnet/cuemon) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=Cuemon&metric=coverage)](https://sonarcloud.io/dashboard?id=Cuemon) [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](.github/CODE_OF_CONDUCT.md) [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/codebeltnet/cuemon/badge)](https://scorecard.dev/viewer/?uri=github.com/codebeltnet/cuemon)
![License](https://img.shields.io/github/license/codebeltnet/cuemon) ![Build Status](https://github.com/codebeltnet/cuemon/actions/workflows/ci-pipeline.yml/badge.svg?branch=main) [![codecov](https://codecov.io/gh/codebeltnet/cuemon/branch/development/graph/badge.svg)](https://codecov.io/gh/codebeltnet/cuemon) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=Cuemon&metric=coverage)](https://sonarcloud.io/dashboard?id=Cuemon) [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](.github/CODE_OF_CONDUCT.md) [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/codebeltnet/cuemon/badge)](https://scorecard.dev/viewer/?uri=github.com/codebeltnet/cuemon)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Update Codecov badge to track main (currently points at development).
Given the README text that only main is maintained, the Codecov badge likely should align to main as well.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~32-~32: The official name of this software platform is spelled with a capital “H”.
Context: ...ps://sonarcloud.io/dashboard?id=Cuemon) Contributor Covenant [![OpenSSF Scorecar...

(GITHUB)

🤖 Prompt for AI Agents
In README.md around line 32 the Codecov badge URL references the 'development'
branch; update the badge to reference the 'main' branch so it tracks main
instead of development by changing the badge link path to use branch=main
(ensure the surrounding markdown remains valid and the other badges are
unchanged).

Comment on lines 13 to +14
```
| Method | Job | Runtime | Mean | Error | StdDev | Median | Min | Max | Ratio | RatioSD | Gen0 | Allocated | Alloc Ratio |
|------------------------------- |---------- |---------- |--------------:|------------:|------------:|--------------:|--------------:|--------------:|-------:|--------:|-------:|----------:|------------:|
| &#39;Ctor (short span)&#39; | .NET 10.0 | .NET 10.0 | 45.8507 ns | 5.8035 ns | 6.6833 ns | 47.2065 ns | 36.6149 ns | 61.9278 ns | 0.870 | 0.13 | 0.0049 | 80 B | 0.56 |
| &#39;Ctor (medium span)&#39; | .NET 10.0 | .NET 10.0 | 211.8744 ns | 5.9982 ns | 6.1597 ns | 209.9891 ns | 205.2014 ns | 226.1942 ns | 4.021 | 0.14 | 0.0045 | 80 B | 0.56 |
| &#39;Ctor (long span)&#39; | .NET 10.0 | .NET 10.0 | 1,800.3386 ns | 101.5296 ns | 112.8499 ns | 1,757.1949 ns | 1,695.9095 ns | 2,069.9047 ns | 34.165 | 2.20 | - | 80 B | 0.56 |
| &#39;Ctor (single-date)&#39; | .NET 10.0 | .NET 10.0 | 85.2482 ns | 1.0630 ns | 0.8877 ns | 84.9364 ns | 84.1945 ns | 87.5016 ns | 1.618 | 0.04 | 0.0049 | 80 B | 0.56 |
| &#39;Parse (short)&#39; | .NET 10.0 | .NET 10.0 | 155.4206 ns | 2.1092 ns | 1.8698 ns | 155.2286 ns | 152.9120 ns | 159.4585 ns | 2.949 | 0.07 | 0.0050 | 80 B | 0.56 |
| &#39;Parse (long)&#39; | .NET 10.0 | .NET 10.0 | 1,370.1648 ns | 19.9091 ns | 17.6489 ns | 1,360.0428 ns | 1,351.5894 ns | 1,405.5931 ns | 26.002 | 0.62 | - | 80 B | 0.56 |
| &#39;ToString (short)&#39; | .NET 10.0 | .NET 10.0 | 131.4024 ns | 3.1530 ns | 3.6310 ns | 129.5049 ns | 128.0854 ns | 138.6695 ns | 2.494 | 0.08 | 0.0143 | 232 B | 1.61 |
| &#39;ToString (long)&#39; | .NET 10.0 | .NET 10.0 | 130.1290 ns | 1.7457 ns | 1.6330 ns | 130.0559 ns | 127.8197 ns | 132.8534 ns | 2.469 | 0.06 | 0.0150 | 240 B | 1.67 |
| &#39;GetWeeks (short)&#39; | .NET 10.0 | .NET 10.0 | 1.6572 ns | 0.0395 ns | 0.0350 ns | 1.6515 ns | 1.6086 ns | 1.7354 ns | 0.031 | 0.00 | - | - | 0.00 |
| &#39;GetWeeks (long)&#39; | .NET 10.0 | .NET 10.0 | 0.6293 ns | 0.0671 ns | 0.0746 ns | 0.5999 ns | 0.5525 ns | 0.8068 ns | 0.012 | 0.00 | - | - | 0.00 |
| GetHashCode | .NET 10.0 | .NET 10.0 | 0.4267 ns | 0.0095 ns | 0.0074 ns | 0.4279 ns | 0.4132 ns | 0.4374 ns | 0.008 | 0.00 | - | - | 0.00 |
| &#39;Equals (value vs same value)&#39; | .NET 10.0 | .NET 10.0 | 1,716.4099 ns | 18.8782 ns | 16.7351 ns | 1,713.9468 ns | 1,695.7291 ns | 1,743.1789 ns | 32.572 | 0.73 | - | 80 B | 0.56 |
| &#39;Operator == (same value)&#39; | .NET 10.0 | .NET 10.0 | 1,726.2320 ns | 36.5756 ns | 39.1354 ns | 1,712.3598 ns | 1,691.1513 ns | 1,835.6900 ns | 32.759 | 0.99 | - | 80 B | 0.56 |
| &#39;Ctor (short span)&#39; | .NET 9.0 | .NET 9.0 | 52.7174 ns | 1.0899 ns | 1.1192 ns | 52.3923 ns | 50.8562 ns | 54.8449 ns | 1.000 | 0.03 | 0.0091 | 144 B | 1.00 |
| &#39;Ctor (medium span)&#39; | .NET 9.0 | .NET 9.0 | 224.6956 ns | 5.2695 ns | 5.6383 ns | 221.8543 ns | 219.5452 ns | 237.8165 ns | 4.264 | 0.14 | 0.0090 | 144 B | 1.00 |
| &#39;Ctor (long span)&#39; | .NET 9.0 | .NET 9.0 | 1,790.5534 ns | 33.6635 ns | 28.1106 ns | 1,779.6856 ns | 1,762.9207 ns | 1,862.1473 ns | 33.979 | 0.86 | 0.0071 | 144 B | 1.00 |
| &#39;Ctor (single-date)&#39; | .NET 9.0 | .NET 9.0 | 107.9379 ns | 1.9648 ns | 1.6407 ns | 107.3828 ns | 106.3406 ns | 112.2844 ns | 2.048 | 0.05 | 0.0090 | 144 B | 1.00 |
| &#39;Parse (short)&#39; | .NET 9.0 | .NET 9.0 | 198.0320 ns | 3.8471 ns | 3.2125 ns | 196.1874 ns | 195.2844 ns | 206.0204 ns | 3.758 | 0.10 | 0.0087 | 144 B | 1.00 |
| &#39;Parse (long)&#39; | .NET 9.0 | .NET 9.0 | 1,555.6981 ns | 46.4246 ns | 51.6008 ns | 1,541.6413 ns | 1,495.6555 ns | 1,667.2954 ns | 29.523 | 1.13 | 0.0060 | 144 B | 1.00 |
| &#39;ToString (short)&#39; | .NET 9.0 | .NET 9.0 | 123.5641 ns | 4.4744 ns | 5.1527 ns | 121.5069 ns | 118.7768 ns | 132.8566 ns | 2.345 | 0.11 | 0.0144 | 232 B | 1.61 |
| &#39;ToString (long)&#39; | .NET 9.0 | .NET 9.0 | 120.8127 ns | 1.8377 ns | 1.7190 ns | 120.7993 ns | 117.4110 ns | 123.1928 ns | 2.293 | 0.06 | 0.0153 | 240 B | 1.67 |
| &#39;GetWeeks (short)&#39; | .NET 9.0 | .NET 9.0 | 1.7451 ns | 0.0621 ns | 0.0690 ns | 1.7347 ns | 1.6693 ns | 1.9067 ns | 0.033 | 0.00 | - | - | 0.00 |
| &#39;GetWeeks (long)&#39; | .NET 9.0 | .NET 9.0 | 1.0743 ns | 0.0576 ns | 0.0640 ns | 1.0417 ns | 1.0130 ns | 1.2203 ns | 0.020 | 0.00 | - | - | 0.00 |
| GetHashCode | .NET 9.0 | .NET 9.0 | 0.6214 ns | 0.0232 ns | 0.0194 ns | 0.6166 ns | 0.5944 ns | 0.6616 ns | 0.012 | 0.00 | - | - | 0.00 |
| &#39;Equals (value vs same value)&#39; | .NET 9.0 | .NET 9.0 | 1,764.3783 ns | 38.5226 ns | 42.8178 ns | 1,741.5046 ns | 1,720.5733 ns | 1,848.1940 ns | 33.483 | 1.05 | 0.0069 | 144 B | 1.00 |
| &#39;Operator == (same value)&#39; | .NET 9.0 | .NET 9.0 | 1,744.8519 ns | 26.0303 ns | 21.7365 ns | 1,744.7386 ns | 1,714.5742 ns | 1,776.5430 ns | 33.112 | 0.79 | 0.0070 | 144 B | 1.00 |
| Method | Runtime | Mean | Error | StdDev | Median | Min | Max | Ratio | RatioSD | Gen0 | Allocated | Alloc Ratio |
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add blank line before benchmark results table (MD058).

Line 13 (code fence closing) should be followed by a blank line before the table header on line 14.

Apply this fix:

 PowerPlanMode=00000000-0000-0000-0000-000000000000  IterationTime=250ms  MaxIterationCount=20  
 MinIterationCount=15  WarmupCount=1  
 

| Method | Runtime | Mean | Error | StdDev | Median | Min | Max | Ratio | RatioSD | Gen0 | Allocated | Alloc Ratio |


<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.18.1)</summary>

14-14: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)

</details>

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

In reports/tuning/Cuemon.DateSpanBenchmark-report-github.md around lines 13 to
14, the markdown table header is not separated from the preceding code fence by
a blank line (MD058); insert a single blank line after the closing code fence on
line 13 so the table header on line 14 is preceded by an empty line, preserving
existing indentation and no other changes.


</details>

<!-- fingerprinting:phantom:triton:mongoose -->

<!-- This is an auto-generated comment by CodeRabbit -->

Comment on lines 13 to +14
```
| Method | Job | Runtime | Variant | Mean | Error | StdDev | Median | Min | Max | Ratio | RatioSD | Gen0 | Allocated | Alloc Ratio |
|------------------------------------------------------------------- |---------- |---------- |----------------- |---------------:|-------------:|-------------:|---------------:|---------------:|---------------:|---------:|---------:|-------:|----------:|------------:|
| **&#39;Custom SHA-512/256 — small (64 bytes)&#39;** | **.NET 10.0** | **.NET 10.0** | **CustomSHA512_256** | **396.9 ns** | **8.53 ns** | **9.82 ns** | **393.4 ns** | **383.9 ns** | **417.4 ns** | **0.88** | **0.20** | **0.0704** | **1104 B** | **1.00** |
| &#39;Custom SHA-512/256 — large (1 MB)&#39; | .NET 10.0 | .NET 10.0 | CustomSHA512_256 | 2,215,370.3 ns | 30,618.15 ns | 27,142.19 ns | 2,200,658.2 ns | 2,187,930.5 ns | 2,263,451.6 ns | 4,910.01 | 1,093.90 | - | 1104 B | 1.00 |
| &#39;Built-in SHA-512 truncated -&gt; 256 — small (64 bytes)&#39; | .NET 10.0 | .NET 10.0 | CustomSHA512_256 | 441.2 ns | 8.58 ns | 8.42 ns | 438.1 ns | 432.7 ns | 454.7 ns | 0.98 | 0.22 | 0.0233 | 368 B | 0.33 |
| &#39;Built-in SHA-512 truncated -&gt; 256 — large (1 MB)&#39; | .NET 10.0 | .NET 10.0 | CustomSHA512_256 | 1,346,672.3 ns | 12,525.60 ns | 11,103.62 ns | 1,344,033.3 ns | 1,335,707.8 ns | 1,371,581.2 ns | 2,984.68 | 664.42 | - | 369 B | 0.33 |
| &#39;Param-based: ComputeHash (selects algorithm by [Params] Variant)&#39; | .NET 10.0 | .NET 10.0 | CustomSHA512_256 | 552.2 ns | 111.87 ns | 128.83 ns | 634.6 ns | 380.5 ns | 687.4 ns | 1.22 | 0.39 | 0.0696 | 1104 B | 1.00 |
| &#39;Custom SHA-512/256 — small (64 bytes)&#39; | .NET 9.0 | .NET 9.0 | CustomSHA512_256 | 479.0 ns | 112.17 ns | 129.18 ns | 400.1 ns | 373.3 ns | 691.4 ns | 1.06 | 0.37 | 0.0695 | 1104 B | 1.00 |
| &#39;Custom SHA-512/256 — large (1 MB)&#39; | .NET 9.0 | .NET 9.0 | CustomSHA512_256 | 2,236,045.5 ns | 10,136.27 ns | 9,481.47 ns | 2,232,607.1 ns | 2,224,303.6 ns | 2,255,956.2 ns | 4,955.83 | 1,102.54 | - | 1104 B | 1.00 |
| &#39;Built-in SHA-512 truncated -&gt; 256 — small (64 bytes)&#39; | .NET 9.0 | .NET 9.0 | CustomSHA512_256 | 441.4 ns | 9.21 ns | 10.23 ns | 440.7 ns | 422.6 ns | 460.3 ns | 0.98 | 0.22 | 0.0229 | 368 B | 0.33 |
| &#39;Built-in SHA-512 truncated -&gt; 256 — large (1 MB)&#39; | .NET 9.0 | .NET 9.0 | CustomSHA512_256 | 1,342,722.2 ns | 16,476.57 ns | 15,412.19 ns | 1,341,708.3 ns | 1,321,103.1 ns | 1,367,723.4 ns | 2,975.92 | 662.81 | - | 369 B | 0.33 |
| &#39;Param-based: ComputeHash (selects algorithm by [Params] Variant)&#39; | .NET 9.0 | .NET 9.0 | CustomSHA512_256 | 400.3 ns | 5.96 ns | 5.58 ns | 400.3 ns | 391.5 ns | 412.5 ns | 0.89 | 0.20 | 0.0702 | 1104 B | 1.00 |
| | | | | | | | | | | | | | | |
| **&#39;Custom SHA-512/256 — small (64 bytes)&#39;** | **.NET 10.0** | **.NET 10.0** | **SHA512_Truncated** | **371.4 ns** | **23.52 ns** | **27.08 ns** | **359.7 ns** | **345.1 ns** | **425.9 ns** | **1.02** | **0.07** | **0.0701** | **1104 B** | **1.00** |
| &#39;Custom SHA-512/256 — large (1 MB)&#39; | .NET 10.0 | .NET 10.0 | SHA512_Truncated | 2,208,794.2 ns | 30,979.07 ns | 28,977.85 ns | 2,208,998.2 ns | 2,148,959.8 ns | 2,249,233.9 ns | 6,051.29 | 120.02 | - | 1104 B | 1.00 |
| &#39;Built-in SHA-512 truncated -&gt; 256 — small (64 bytes)&#39; | .NET 10.0 | .NET 10.0 | SHA512_Truncated | 427.5 ns | 8.48 ns | 9.08 ns | 424.4 ns | 418.1 ns | 449.6 ns | 1.17 | 0.03 | 0.0224 | 368 B | 0.33 |
| &#39;Built-in SHA-512 truncated -&gt; 256 — large (1 MB)&#39; | .NET 10.0 | .NET 10.0 | SHA512_Truncated | 1,343,433.9 ns | 18,287.12 ns | 17,105.78 ns | 1,342,228.6 ns | 1,315,239.6 ns | 1,371,437.5 ns | 3,680.52 | 72.13 | - | 369 B | 0.33 |
| &#39;Param-based: ComputeHash (selects algorithm by [Params] Variant)&#39; | .NET 10.0 | .NET 10.0 | SHA512_Truncated | 418.4 ns | 7.87 ns | 6.97 ns | 417.8 ns | 407.8 ns | 434.0 ns | 1.15 | 0.03 | 0.0231 | 368 B | 0.33 |
| &#39;Custom SHA-512/256 — small (64 bytes)&#39; | .NET 9.0 | .NET 9.0 | SHA512_Truncated | 365.1 ns | 5.89 ns | 5.78 ns | 364.6 ns | 358.5 ns | 374.9 ns | 1.00 | 0.02 | 0.0693 | 1104 B | 1.00 |
| &#39;Custom SHA-512/256 — large (1 MB)&#39; | .NET 9.0 | .NET 9.0 | SHA512_Truncated | 2,159,919.2 ns | 27,489.49 ns | 24,368.72 ns | 2,152,612.9 ns | 2,132,135.2 ns | 2,197,020.3 ns | 5,917.39 | 110.84 | - | 1104 B | 1.00 |
| &#39;Built-in SHA-512 truncated -&gt; 256 — small (64 bytes)&#39; | .NET 9.0 | .NET 9.0 | SHA512_Truncated | 443.3 ns | 8.29 ns | 7.75 ns | 442.5 ns | 432.7 ns | 461.5 ns | 1.21 | 0.03 | 0.0233 | 368 B | 0.33 |
| &#39;Built-in SHA-512 truncated -&gt; 256 — large (1 MB)&#39; | .NET 9.0 | .NET 9.0 | SHA512_Truncated | 1,352,995.6 ns | 26,185.39 ns | 25,717.56 ns | 1,353,562.5 ns | 1,312,020.6 ns | 1,403,619.0 ns | 3,706.71 | 88.66 | - | 369 B | 0.33 |
| &#39;Param-based: ComputeHash (selects algorithm by [Params] Variant)&#39; | .NET 9.0 | .NET 9.0 | SHA512_Truncated | 447.2 ns | 8.90 ns | 8.33 ns | 445.7 ns | 436.6 ns | 466.0 ns | 1.23 | 0.03 | 0.0231 | 368 B | 0.33 |
| Method | Runtime | Variant | Mean | Error | StdDev | Median | Min | Max | Ratio | RatioSD | Gen0 | Allocated | Alloc Ratio |
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add blank line before benchmark results table (MD058).

Line 13 (code fence closing) should be followed by a blank line before the table header on line 14.

Apply this fix:

 PowerPlanMode=00000000-0000-0000-0000-000000000000  IterationTime=250ms  MaxIterationCount=20  
 MinIterationCount=15  WarmupCount=1  
 

| Method | Runtime | Variant | Mean | Error | StdDev | Median | Min | Max | Ratio | RatioSD | Gen0 | Allocated | Alloc Ratio |


<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

```suggestion

🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

14-14: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)

🤖 Prompt for AI Agents
In
reports/tuning/Cuemon.Security.Cryptography.Sha512256Benchmark-report-github.md
around lines 13 to 14, the closing code fence on line 13 is not followed by a
blank line before the Markdown table header on line 14 (MD058); insert a single
blank line between the code fence and the table header so the table is properly
separated from the preceding fenced code block.

Comment on lines 1 to +44
```
BenchmarkDotNet v0.15.6, Windows 11 (10.0.26200.7309)
BenchmarkDotNet v0.15.6, Windows 11 (10.0.26200.7462)
12th Gen Intel Core i9-12900KF 3.20GHz, 1 CPU, 24 logical and 16 physical cores
.NET SDK 10.0.100
[Host] : .NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v3
.NET 10.0 : .NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v3
.NET 9.0 : .NET 9.0.11 (9.0.11, 9.0.1125.51716), X64 RyuJIT x86-64-v3
.NET SDK 10.0.101
[Host] : .NET 10.0.1 (10.0.1, 10.0.125.57005), X64 RyuJIT x86-64-v3
Job-LDLMHG : .NET 10.0.1 (10.0.1, 10.0.125.57005), X64 RyuJIT x86-64-v3
Job-IOAYXE : .NET 9.0.11 (9.0.11, 9.0.1125.51716), X64 RyuJIT x86-64-v3
PowerPlanMode=00000000-0000-0000-0000-000000000000 IterationTime=250ms MaxIterationCount=20
MinIterationCount=15 WarmupCount=1
```
| Method | Job | Runtime | Size | Mean | Error | StdDev | Median | Min | Max | Ratio | RatioSD | Gen0 | Gen1 | Gen2 | Allocated | Alloc Ratio |
|--------------------------------- |---------- |---------- |-------- |---------------:|--------------:|--------------:|---------------:|---------------:|---------------:|------:|--------:|---------:|---------:|---------:|----------:|------------:|
| **&#39;CRC32 - byte[]&#39;** | **.NET 10.0** | **.NET 10.0** | **64** | **139.4 ns** | **3.97 ns** | **3.90 ns** | **140.8 ns** | **129.2 ns** | **141.6 ns** | **1.04** | **0.09** | **0.0049** | **-** | **-** | **80 B** | **0.56** |
| &#39;CRC64 - byte[]&#39; | .NET 10.0 | .NET 10.0 | 64 | 157.7 ns | 2.53 ns | 2.24 ns | 158.3 ns | 150.0 ns | 158.8 ns | 1.17 | 0.10 | 0.0046 | - | - | 80 B | 0.56 |
| &#39;CRC32 - Stream (includes copy)&#39; | .NET 10.0 | .NET 10.0 | 64 | 554.0 ns | 45.22 ns | 52.07 ns | 574.8 ns | 370.3 ns | 599.3 ns | 4.12 | 0.52 | 0.0734 | - | - | 1160 B | 8.06 |
| &#39;CRC64 - Stream (includes copy)&#39; | .NET 10.0 | .NET 10.0 | 64 | 539.3 ns | 65.19 ns | 72.46 ns | 568.3 ns | 354.1 ns | 599.7 ns | 4.01 | 0.63 | 0.0726 | - | - | 1160 B | 8.06 |
| &#39;CRC32 - byte[]&#39; | .NET 9.0 | .NET 9.0 | 64 | 135.3 ns | 9.02 ns | 10.39 ns | 139.9 ns | 111.4 ns | 142.7 ns | 1.01 | 0.12 | 0.0092 | - | - | 144 B | 1.00 |
| &#39;CRC64 - byte[]&#39; | .NET 9.0 | .NET 9.0 | 64 | 152.5 ns | 10.65 ns | 11.84 ns | 157.7 ns | 125.7 ns | 159.6 ns | 1.13 | 0.13 | 0.0091 | - | - | 144 B | 1.00 |
| &#39;CRC32 - Stream (includes copy)&#39; | .NET 9.0 | .NET 9.0 | 64 | 532.0 ns | 48.05 ns | 55.33 ns | 551.2 ns | 361.5 ns | 568.8 ns | 3.96 | 0.53 | 0.0775 | - | - | 1224 B | 8.50 |
| &#39;CRC64 - Stream (includes copy)&#39; | .NET 9.0 | .NET 9.0 | 64 | 529.2 ns | 64.64 ns | 74.44 ns | 565.1 ns | 372.9 ns | 581.3 ns | 3.94 | 0.64 | 0.0778 | - | - | 1224 B | 8.50 |
| | | | | | | | | | | | | | | | | |
| **&#39;CRC32 - byte[]&#39;** | **.NET 10.0** | **.NET 10.0** | **4096** | **7,721.2 ns** | **250.04 ns** | **277.92 ns** | **7,768.4 ns** | **6,967.3 ns** | **7,986.1 ns** | **1.01** | **0.05** | **-** | **-** | **-** | **144 B** | **1.00** |
| &#39;CRC64 - byte[]&#39; | .NET 10.0 | .NET 10.0 | 4096 | 8,842.1 ns | 441.50 ns | 508.43 ns | 8,979.8 ns | 7,659.8 ns | 9,423.5 ns | 1.15 | 0.07 | - | - | - | 144 B | 1.00 |
| &#39;CRC32 - Stream (includes copy)&#39; | .NET 10.0 | .NET 10.0 | 4096 | 8,938.0 ns | 485.17 ns | 558.72 ns | 9,141.2 ns | 7,730.1 ns | 9,570.1 ns | 1.16 | 0.08 | 0.5614 | - | - | 9097 B | 63.17 |
| &#39;CRC64 - Stream (includes copy)&#39; | .NET 10.0 | .NET 10.0 | 4096 | 10,274.8 ns | 494.99 ns | 570.04 ns | 10,440.1 ns | 8,600.8 ns | 10,645.7 ns | 1.34 | 0.08 | 0.5759 | - | - | 9097 B | 63.17 |
| &#39;CRC32 - byte[]&#39; | .NET 9.0 | .NET 9.0 | 4096 | 7,690.3 ns | 226.06 ns | 241.88 ns | 7,752.2 ns | 6,976.9 ns | 7,897.0 ns | 1.00 | 0.05 | - | - | - | 144 B | 1.00 |
| &#39;CRC64 - byte[]&#39; | .NET 9.0 | .NET 9.0 | 4096 | 8,811.7 ns | 302.74 ns | 348.64 ns | 8,864.9 ns | 7,821.1 ns | 9,119.8 ns | 1.15 | 0.06 | - | - | - | 144 B | 1.00 |
| &#39;CRC32 - Stream (includes copy)&#39; | .NET 9.0 | .NET 9.0 | 4096 | 8,635.2 ns | 452.94 ns | 521.60 ns | 8,836.1 ns | 7,652.1 ns | 9,293.9 ns | 1.12 | 0.08 | 0.5690 | - | - | 9097 B | 63.17 |
| &#39;CRC64 - Stream (includes copy)&#39; | .NET 9.0 | .NET 9.0 | 4096 | 9,868.1 ns | 570.02 ns | 656.43 ns | 10,164.5 ns | 8,495.0 ns | 10,538.8 ns | 1.28 | 0.09 | 0.5473 | - | - | 9097 B | 63.17 |
| | | | | | | | | | | | | | | | | |
| **&#39;CRC32 - byte[]&#39;** | **.NET 10.0** | **.NET 10.0** | **1048576** | **1,922,070.0 ns** | **90,218.05 ns** | **103,895.24 ns** | **1,957,771.9 ns** | **1,783,972.9 ns** | **2,105,766.7 ns** | **1.02** | **0.07** | **-** | **-** | **-** | **146 B** | **1.00** |
| &#39;CRC64 - byte[]&#39; | .NET 10.0 | .NET 10.0 | 1048576 | 2,146,272.3 ns | 146,697.64 ns | 168,937.23 ns | 2,228,165.6 ns | 1,940,368.0 ns | 2,367,431.2 ns | 1.13 | 0.10 | - | - | - | 146 B | 1.00 |
| &#39;CRC32 - Stream (includes copy)&#39; | .NET 10.0 | .NET 10.0 | 1048576 | 2,285,845.9 ns | 154,426.14 ns | 177,837.38 ns | 2,358,128.5 ns | 2,053,800.0 ns | 2,562,028.1 ns | 1.21 | 0.11 | 484.3750 | 484.3750 | 484.3750 | 2098846 B | 14,375.66 |
| &#39;CRC64 - Stream (includes copy)&#39; | .NET 10.0 | .NET 10.0 | 1048576 | 2,551,377.1 ns | 229,852.85 ns | 264,698.88 ns | 2,737,308.5 ns | 2,232,625.9 ns | 2,880,704.5 ns | 1.35 | 0.15 | 482.1429 | 482.1429 | 482.1429 | 2098788 B | 14,375.26 |
| &#39;CRC32 - byte[]&#39; | .NET 9.0 | .NET 9.0 | 1048576 | 1,896,976.5 ns | 74,945.23 ns | 86,307.04 ns | 1,957,661.1 ns | 1,754,100.0 ns | 1,982,995.1 ns | 1.00 | 0.06 | - | - | - | 146 B | 1.00 |
| &#39;CRC64 - byte[]&#39; | .NET 9.0 | .NET 9.0 | 1048576 | 2,151,235.2 ns | 137,428.43 ns | 158,262.78 ns | 2,240,808.2 ns | 1,965,300.0 ns | 2,401,797.7 ns | 1.14 | 0.10 | - | - | - | 146 B | 1.00 |
| &#39;CRC32 - Stream (includes copy)&#39; | .NET 9.0 | .NET 9.0 | 1048576 | 2,273,448.7 ns | 156,886.61 ns | 180,670.86 ns | 2,382,739.5 ns | 2,029,253.9 ns | 2,501,768.8 ns | 1.20 | 0.11 | 492.1875 | 492.1875 | 492.1875 | 2098739 B | 14,374.92 |
| &#39;CRC64 - Stream (includes copy)&#39; | .NET 9.0 | .NET 9.0 | 1048576 | 2,515,326.5 ns | 200,435.05 ns | 230,821.30 ns | 2,654,724.1 ns | 2,209,127.7 ns | 2,794,425.9 ns | 1.33 | 0.13 | 482.1429 | 482.1429 | 482.1429 | 2098829 B | 14,375.54 |
| Method | Runtime | Size | Mean | Error | StdDev | Median | Min | Max | Ratio | RatioSD | Gen0 | Gen1 | Gen2 | Allocated | Alloc Ratio |
|--------------------------------- |---------- |-------- |---------------:|--------------:|--------------:|---------------:|---------------:|---------------:|------:|--------:|---------:|---------:|---------:|----------:|------------:|
| **&#39;CRC32 - byte[]&#39;** | **.NET 10.0** | **64** | **130.3 ns** | **2.62 ns** | **2.32 ns** | **130.9 ns** | **125.1 ns** | **133.5 ns** | **1.00** | **0.02** | **0.0047** | **-** | **-** | **80 B** | **1.00** |
| &#39;CRC64 - byte[]&#39; | .NET 10.0 | 64 | 145.6 ns | 9.36 ns | 10.02 ns | 149.2 ns | 118.7 ns | 153.6 ns | 1.12 | 0.08 | 0.0048 | - | - | 80 B | 1.00 |
| &#39;CRC32 - Stream (includes copy)&#39; | .NET 10.0 | 64 | 477.0 ns | 60.01 ns | 66.70 ns | 510.8 ns | 344.4 ns | 532.4 ns | 3.66 | 0.50 | 0.0734 | - | - | 1160 B | 14.50 |
| &#39;CRC64 - Stream (includes copy)&#39; | .NET 10.0 | 64 | 528.0 ns | 39.71 ns | 44.14 ns | 538.1 ns | 355.2 ns | 556.0 ns | 4.05 | 0.34 | 0.0730 | - | - | 1160 B | 14.50 |
| | | | | | | | | | | | | | | | |
| &#39;CRC32 - byte[]&#39; | .NET 9.0 | 64 | 133.8 ns | 8.41 ns | 9.35 ns | 137.9 ns | 115.1 ns | 141.9 ns | 1.01 | 0.10 | 0.0088 | - | - | 144 B | 1.00 |
| &#39;CRC64 - byte[]&#39; | .NET 9.0 | 64 | 151.9 ns | 11.29 ns | 12.55 ns | 156.6 ns | 123.3 ns | 163.7 ns | 1.14 | 0.13 | 0.0091 | - | - | 144 B | 1.00 |
| &#39;CRC32 - Stream (includes copy)&#39; | .NET 9.0 | 64 | 551.7 ns | 55.11 ns | 61.25 ns | 572.2 ns | 374.8 ns | 582.8 ns | 4.15 | 0.55 | 0.0780 | - | - | 1224 B | 8.50 |
| &#39;CRC64 - Stream (includes copy)&#39; | .NET 9.0 | 64 | 562.0 ns | 46.37 ns | 51.54 ns | 578.7 ns | 381.5 ns | 592.8 ns | 4.22 | 0.49 | 0.0776 | - | - | 1224 B | 8.50 |
| | | | | | | | | | | | | | | | |
| **&#39;CRC32 - byte[]&#39;** | **.NET 10.0** | **4096** | **7,674.5 ns** | **303.22 ns** | **349.19 ns** | **7,805.6 ns** | **6,911.8 ns** | **8,017.3 ns** | **1.00** | **0.06** | **-** | **-** | **-** | **144 B** | **1.00** |
| &#39;CRC64 - byte[]&#39; | .NET 10.0 | 4096 | 8,732.0 ns | 405.92 ns | 467.45 ns | 8,913.0 ns | 7,756.2 ns | 9,127.0 ns | 1.14 | 0.08 | - | - | - | 144 B | 1.00 |
| &#39;CRC32 - Stream (includes copy)&#39; | .NET 10.0 | 4096 | 8,820.2 ns | 437.27 ns | 467.87 ns | 8,994.3 ns | 7,895.2 ns | 9,275.9 ns | 1.15 | 0.08 | 0.5731 | - | - | 9097 B | 63.17 |
| &#39;CRC64 - Stream (includes copy)&#39; | .NET 10.0 | 4096 | 10,256.9 ns | 310.20 ns | 331.91 ns | 10,332.4 ns | 8,960.0 ns | 10,481.1 ns | 1.34 | 0.08 | 0.5507 | - | - | 9097 B | 63.17 |
| | | | | | | | | | | | | | | | |
| &#39;CRC32 - byte[]&#39; | .NET 9.0 | 4096 | 7,591.4 ns | 210.98 ns | 234.51 ns | 7,679.4 ns | 7,082.8 ns | 7,833.1 ns | 1.00 | 0.04 | - | - | - | 144 B | 1.00 |
| &#39;CRC64 - byte[]&#39; | .NET 9.0 | 4096 | 8,608.6 ns | 356.87 ns | 410.97 ns | 8,776.9 ns | 7,672.4 ns | 8,953.5 ns | 1.14 | 0.06 | - | - | - | 144 B | 1.00 |
| &#39;CRC32 - Stream (includes copy)&#39; | .NET 9.0 | 4096 | 8,729.4 ns | 376.59 ns | 433.68 ns | 8,902.3 ns | 7,780.1 ns | 9,131.7 ns | 1.15 | 0.07 | 0.5679 | - | - | 9097 B | 63.17 |
| &#39;CRC64 - Stream (includes copy)&#39; | .NET 9.0 | 4096 | 9,961.3 ns | 576.34 ns | 663.72 ns | 10,226.3 ns | 8,594.9 ns | 10,468.9 ns | 1.31 | 0.09 | 0.5596 | - | - | 9097 B | 63.17 |
| | | | | | | | | | | | | | | | |
| **&#39;CRC32 - byte[]&#39;** | **.NET 10.0** | **1048576** | **1,894,279.7 ns** | **73,259.49 ns** | **84,365.74 ns** | **1,949,685.4 ns** | **1,791,184.7 ns** | **2,011,222.2 ns** | **1.00** | **0.06** | **-** | **-** | **-** | **146 B** | **1.00** |
| &#39;CRC64 - byte[]&#39; | .NET 10.0 | 1048576 | 2,153,042.5 ns | 143,482.20 ns | 165,234.31 ns | 2,273,582.8 ns | 1,949,604.7 ns | 2,356,104.7 ns | 1.14 | 0.10 | - | - | - | 146 B | 1.00 |
| &#39;CRC32 - Stream (includes copy)&#39; | .NET 10.0 | 1048576 | 2,291,520.1 ns | 131,277.22 ns | 151,179.04 ns | 2,338,500.4 ns | 2,088,157.8 ns | 2,498,143.8 ns | 1.21 | 0.09 | 492.1875 | 492.1875 | 492.1875 | 2098726 B | 14,374.84 |
| &#39;CRC64 - Stream (includes copy)&#39; | .NET 10.0 | 1048576 | 2,597,815.7 ns | 224,464.89 ns | 258,494.10 ns | 2,731,051.8 ns | 2,269,867.0 ns | 2,997,155.4 ns | 1.37 | 0.15 | 491.0714 | 491.0714 | 491.0714 | 2098727 B | 14,374.84 |
| | | | | | | | | | | | | | | | |
| &#39;CRC32 - byte[]&#39; | .NET 9.0 | 1048576 | 1,896,952.9 ns | 87,432.83 ns | 100,687.77 ns | 1,955,672.2 ns | 1,776,170.1 ns | 2,043,593.8 ns | 1.00 | 0.07 | - | - | - | 146 B | 1.00 |
| &#39;CRC64 - byte[]&#39; | .NET 9.0 | 1048576 | 2,125,733.9 ns | 118,668.41 ns | 136,658.71 ns | 2,232,564.5 ns | 1,957,495.3 ns | 2,273,230.5 ns | 1.12 | 0.09 | - | - | - | 146 B | 1.00 |
| &#39;CRC32 - Stream (includes copy)&#39; | .NET 9.0 | 1048576 | 2,295,005.1 ns | 121,755.84 ns | 140,214.21 ns | 2,376,793.8 ns | 2,108,349.6 ns | 2,462,720.7 ns | 1.21 | 0.10 | 492.1875 | 492.1875 | 492.1875 | 2098683 B | 14,374.54 |
| &#39;CRC64 - Stream (includes copy)&#39; | .NET 9.0 | 1048576 | 2,537,927.8 ns | 167,381.32 ns | 192,756.58 ns | 2,674,733.9 ns | 2,288,633.0 ns | 2,759,531.2 ns | 1.34 | 0.12 | 491.0714 | 491.0714 | 491.0714 | 2098692 B | 14,374.60 |
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Find all benchmark report files in reports/tuning directory
find reports/tuning -type f -name "*.md" | sort | while read file; do
  echo "File: $(basename "$file")"
  # Extract the table header row (line starting with |)
  table_header=$(grep "^|" "$file" | head -1)
  if [ -n "$table_header" ]; then
    # Count columns by counting pipe separators
    col_count=$(echo "$table_header" | awk -F'|' '{print NF-2}')
    echo "Column count: $col_count"
    echo "Header: $table_header"
  else
    echo "No table header found"
  fi
  echo ""
done

Repository: codebeltnet/cuemon

Length of output: 2290


Benchmark report table schemas are inconsistent across the PR.

This report includes 16 columns (the most comprehensive), while other reports use 11–14 columns with varying metrics. Standardize the benchmark report format across all reports for consistency and maintainability.

🤖 Prompt for AI Agents
reports/tuning/Cuemon.Security.CyclicRedundancyCheckBenchmark-report-github.md
lines 1 to 44: The reported benchmark table uses 16 columns while other reports
use 11–14 columns, causing inconsistent schemas; update this file to match the
project's standard table schema by removing or consolidating columns so the
column count and headers align with the agreed canonical benchmark report format
(e.g., pick the agreed set of metrics such as Method, Runtime, Size, Mean,
Error, StdDev, Median, Allocated and Ratio or the project-approved header list),
ensure column ordering and header names match other reports, and regenerate or
reformat the table rows to conform to that schema.

Comment on lines 13 to +14
```
| Method | Job | Runtime | Size | Mean | Error | StdDev | Median | Min | Max | Ratio | RatioSD | Gen0 | Gen1 | Gen2 | Allocated | Alloc Ratio |
|--------------------------------- |---------- |---------- |-------- |---------------:|--------------:|--------------:|---------------:|---------------:|---------------:|------:|--------:|---------:|---------:|---------:|----------:|------------:|
| **&#39;CRC32 - byte[]&#39;** | **.NET 10.0** | **.NET 10.0** | **64** | **139.4 ns** | **3.97 ns** | **3.90 ns** | **140.8 ns** | **129.2 ns** | **141.6 ns** | **1.04** | **0.09** | **0.0049** | **-** | **-** | **80 B** | **0.56** |
| &#39;CRC64 - byte[]&#39; | .NET 10.0 | .NET 10.0 | 64 | 157.7 ns | 2.53 ns | 2.24 ns | 158.3 ns | 150.0 ns | 158.8 ns | 1.17 | 0.10 | 0.0046 | - | - | 80 B | 0.56 |
| &#39;CRC32 - Stream (includes copy)&#39; | .NET 10.0 | .NET 10.0 | 64 | 554.0 ns | 45.22 ns | 52.07 ns | 574.8 ns | 370.3 ns | 599.3 ns | 4.12 | 0.52 | 0.0734 | - | - | 1160 B | 8.06 |
| &#39;CRC64 - Stream (includes copy)&#39; | .NET 10.0 | .NET 10.0 | 64 | 539.3 ns | 65.19 ns | 72.46 ns | 568.3 ns | 354.1 ns | 599.7 ns | 4.01 | 0.63 | 0.0726 | - | - | 1160 B | 8.06 |
| &#39;CRC32 - byte[]&#39; | .NET 9.0 | .NET 9.0 | 64 | 135.3 ns | 9.02 ns | 10.39 ns | 139.9 ns | 111.4 ns | 142.7 ns | 1.01 | 0.12 | 0.0092 | - | - | 144 B | 1.00 |
| &#39;CRC64 - byte[]&#39; | .NET 9.0 | .NET 9.0 | 64 | 152.5 ns | 10.65 ns | 11.84 ns | 157.7 ns | 125.7 ns | 159.6 ns | 1.13 | 0.13 | 0.0091 | - | - | 144 B | 1.00 |
| &#39;CRC32 - Stream (includes copy)&#39; | .NET 9.0 | .NET 9.0 | 64 | 532.0 ns | 48.05 ns | 55.33 ns | 551.2 ns | 361.5 ns | 568.8 ns | 3.96 | 0.53 | 0.0775 | - | - | 1224 B | 8.50 |
| &#39;CRC64 - Stream (includes copy)&#39; | .NET 9.0 | .NET 9.0 | 64 | 529.2 ns | 64.64 ns | 74.44 ns | 565.1 ns | 372.9 ns | 581.3 ns | 3.94 | 0.64 | 0.0778 | - | - | 1224 B | 8.50 |
| | | | | | | | | | | | | | | | | |
| **&#39;CRC32 - byte[]&#39;** | **.NET 10.0** | **.NET 10.0** | **4096** | **7,721.2 ns** | **250.04 ns** | **277.92 ns** | **7,768.4 ns** | **6,967.3 ns** | **7,986.1 ns** | **1.01** | **0.05** | **-** | **-** | **-** | **144 B** | **1.00** |
| &#39;CRC64 - byte[]&#39; | .NET 10.0 | .NET 10.0 | 4096 | 8,842.1 ns | 441.50 ns | 508.43 ns | 8,979.8 ns | 7,659.8 ns | 9,423.5 ns | 1.15 | 0.07 | - | - | - | 144 B | 1.00 |
| &#39;CRC32 - Stream (includes copy)&#39; | .NET 10.0 | .NET 10.0 | 4096 | 8,938.0 ns | 485.17 ns | 558.72 ns | 9,141.2 ns | 7,730.1 ns | 9,570.1 ns | 1.16 | 0.08 | 0.5614 | - | - | 9097 B | 63.17 |
| &#39;CRC64 - Stream (includes copy)&#39; | .NET 10.0 | .NET 10.0 | 4096 | 10,274.8 ns | 494.99 ns | 570.04 ns | 10,440.1 ns | 8,600.8 ns | 10,645.7 ns | 1.34 | 0.08 | 0.5759 | - | - | 9097 B | 63.17 |
| &#39;CRC32 - byte[]&#39; | .NET 9.0 | .NET 9.0 | 4096 | 7,690.3 ns | 226.06 ns | 241.88 ns | 7,752.2 ns | 6,976.9 ns | 7,897.0 ns | 1.00 | 0.05 | - | - | - | 144 B | 1.00 |
| &#39;CRC64 - byte[]&#39; | .NET 9.0 | .NET 9.0 | 4096 | 8,811.7 ns | 302.74 ns | 348.64 ns | 8,864.9 ns | 7,821.1 ns | 9,119.8 ns | 1.15 | 0.06 | - | - | - | 144 B | 1.00 |
| &#39;CRC32 - Stream (includes copy)&#39; | .NET 9.0 | .NET 9.0 | 4096 | 8,635.2 ns | 452.94 ns | 521.60 ns | 8,836.1 ns | 7,652.1 ns | 9,293.9 ns | 1.12 | 0.08 | 0.5690 | - | - | 9097 B | 63.17 |
| &#39;CRC64 - Stream (includes copy)&#39; | .NET 9.0 | .NET 9.0 | 4096 | 9,868.1 ns | 570.02 ns | 656.43 ns | 10,164.5 ns | 8,495.0 ns | 10,538.8 ns | 1.28 | 0.09 | 0.5473 | - | - | 9097 B | 63.17 |
| | | | | | | | | | | | | | | | | |
| **&#39;CRC32 - byte[]&#39;** | **.NET 10.0** | **.NET 10.0** | **1048576** | **1,922,070.0 ns** | **90,218.05 ns** | **103,895.24 ns** | **1,957,771.9 ns** | **1,783,972.9 ns** | **2,105,766.7 ns** | **1.02** | **0.07** | **-** | **-** | **-** | **146 B** | **1.00** |
| &#39;CRC64 - byte[]&#39; | .NET 10.0 | .NET 10.0 | 1048576 | 2,146,272.3 ns | 146,697.64 ns | 168,937.23 ns | 2,228,165.6 ns | 1,940,368.0 ns | 2,367,431.2 ns | 1.13 | 0.10 | - | - | - | 146 B | 1.00 |
| &#39;CRC32 - Stream (includes copy)&#39; | .NET 10.0 | .NET 10.0 | 1048576 | 2,285,845.9 ns | 154,426.14 ns | 177,837.38 ns | 2,358,128.5 ns | 2,053,800.0 ns | 2,562,028.1 ns | 1.21 | 0.11 | 484.3750 | 484.3750 | 484.3750 | 2098846 B | 14,375.66 |
| &#39;CRC64 - Stream (includes copy)&#39; | .NET 10.0 | .NET 10.0 | 1048576 | 2,551,377.1 ns | 229,852.85 ns | 264,698.88 ns | 2,737,308.5 ns | 2,232,625.9 ns | 2,880,704.5 ns | 1.35 | 0.15 | 482.1429 | 482.1429 | 482.1429 | 2098788 B | 14,375.26 |
| &#39;CRC32 - byte[]&#39; | .NET 9.0 | .NET 9.0 | 1048576 | 1,896,976.5 ns | 74,945.23 ns | 86,307.04 ns | 1,957,661.1 ns | 1,754,100.0 ns | 1,982,995.1 ns | 1.00 | 0.06 | - | - | - | 146 B | 1.00 |
| &#39;CRC64 - byte[]&#39; | .NET 9.0 | .NET 9.0 | 1048576 | 2,151,235.2 ns | 137,428.43 ns | 158,262.78 ns | 2,240,808.2 ns | 1,965,300.0 ns | 2,401,797.7 ns | 1.14 | 0.10 | - | - | - | 146 B | 1.00 |
| &#39;CRC32 - Stream (includes copy)&#39; | .NET 9.0 | .NET 9.0 | 1048576 | 2,273,448.7 ns | 156,886.61 ns | 180,670.86 ns | 2,382,739.5 ns | 2,029,253.9 ns | 2,501,768.8 ns | 1.20 | 0.11 | 492.1875 | 492.1875 | 492.1875 | 2098739 B | 14,374.92 |
| &#39;CRC64 - Stream (includes copy)&#39; | .NET 9.0 | .NET 9.0 | 1048576 | 2,515,326.5 ns | 200,435.05 ns | 230,821.30 ns | 2,654,724.1 ns | 2,209,127.7 ns | 2,794,425.9 ns | 1.33 | 0.13 | 482.1429 | 482.1429 | 482.1429 | 2098829 B | 14,375.54 |
| Method | Runtime | Size | Mean | Error | StdDev | Median | Min | Max | Ratio | RatioSD | Gen0 | Gen1 | Gen2 | Allocated | Alloc Ratio |
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add blank line before benchmark results table (MD058).

Line 13 (code fence closing) should be followed by a blank line before the table header on line 14.

Apply this fix:

 PowerPlanMode=00000000-0000-0000-0000-000000000000  IterationTime=250ms  MaxIterationCount=20  
 MinIterationCount=15  WarmupCount=1  
 

| Method | Runtime | Size | Mean | Error | StdDev | Median | Min | Max | Ratio | RatioSD | Gen0 | Gen1 | Gen2 | Allocated | Alloc Ratio |


<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

```suggestion

🤖 Prompt for AI Agents
In
reports/tuning/Cuemon.Security.CyclicRedundancyCheckBenchmark-report-github.md
around lines 13 to 14, the closing code fence on line 13 must be followed by a
blank line before the Markdown table header on line 14 to satisfy MD058; insert
a single empty line between the code fence and the table header so the table is
recognized correctly.

Comment on lines 13 to +14
```
| Method | Job | Runtime | Algorithm | Mean | Error | StdDev | Median | Min | Max | Ratio | RatioSD | Gen0 | Allocated | Alloc Ratio |
|-------------------------- |---------- |---------- |---------- |------------------:|------------------:|------------------:|------------------:|------------------:|------------------:|------:|--------:|-------:|----------:|------------:|
| **&#39;ComputeHash32 (small)&#39;** | **.NET 10.0** | **.NET 10.0** | **Fnv1** | **44.49 ns** | **0.960 ns** | **1.028 ns** | **44.50 ns** | **41.78 ns** | **46.69 ns** | **0.98** | **0.03** | **0.0035** | **56 B** | **1.00** |
| &#39;ComputeHash32 (small)&#39; | .NET 9.0 | .NET 9.0 | Fnv1 | 45.27 ns | 0.657 ns | 0.583 ns | 45.11 ns | 44.32 ns | 46.26 ns | 1.00 | 0.02 | 0.0035 | 56 B | 1.00 |
| | | | | | | | | | | | | | | |
| &#39;ComputeHash32 (large)&#39; | .NET 10.0 | .NET 10.0 | Fnv1 | 475,761.25 ns | 12,785.402 ns | 13,680.237 ns | 479,767.99 ns | 434,213.64 ns | 488,995.83 ns | 0.98 | 0.03 | - | 56 B | 1.00 |
| &#39;ComputeHash32 (large)&#39; | .NET 9.0 | .NET 9.0 | Fnv1 | 487,741.70 ns | 6,913.366 ns | 6,466.767 ns | 485,802.84 ns | 479,649.24 ns | 503,178.60 ns | 1.00 | 0.02 | - | 56 B | 1.00 |
| | | | | | | | | | | | | | | |
| &#39;ComputeHash64 (small)&#39; | .NET 10.0 | .NET 10.0 | Fnv1 | 61.62 ns | 1.259 ns | 1.178 ns | 61.33 ns | 59.84 ns | 63.93 ns | 1.11 | 0.33 | 0.0034 | 56 B | 1.00 |
| &#39;ComputeHash64 (small)&#39; | .NET 9.0 | .NET 9.0 | Fnv1 | 57.90 ns | 8.583 ns | 9.183 ns | 60.78 ns | 25.57 ns | 63.32 ns | 1.05 | 0.35 | 0.0034 | 56 B | 1.00 |
| | | | | | | | | | | | | | | |
| &#39;ComputeHash64 (large)&#39; | .NET 10.0 | .NET 10.0 | Fnv1 | 700,133.50 ns | 6,687.106 ns | 5,927.945 ns | 698,258.56 ns | 693,839.81 ns | 712,956.93 ns | 1.00 | 0.02 | - | 56 B | 1.00 |
| &#39;ComputeHash64 (large)&#39; | .NET 9.0 | .NET 9.0 | Fnv1 | 702,394.36 ns | 11,875.872 ns | 11,108.698 ns | 702,286.08 ns | 674,915.34 ns | 718,671.31 ns | 1.00 | 0.02 | - | 56 B | 1.00 |
| | | | | | | | | | | | | | | |
| &#39;ComputeHash128 (small)&#39; | .NET 10.0 | .NET 10.0 | Fnv1 | 1,014.18 ns | 16.251 ns | 14.406 ns | 1,017.40 ns | 976.62 ns | 1,030.23 ns | 0.92 | 0.02 | 0.0120 | 192 B | 0.75 |
| &#39;ComputeHash128 (small)&#39; | .NET 9.0 | .NET 9.0 | Fnv1 | 1,096.77 ns | 11.682 ns | 10.356 ns | 1,093.03 ns | 1,085.03 ns | 1,121.10 ns | 1.00 | 0.01 | 0.0132 | 256 B | 1.00 |
| | | | | | | | | | | | | | | |
| &#39;ComputeHash128 (large)&#39; | .NET 10.0 | .NET 10.0 | Fnv1 | 9,491,544.42 ns | 410,672.854 ns | 456,461.789 ns | 9,629,732.00 ns | 7,879,044.00 ns | 9,805,012.00 ns | 0.93 | 0.08 | - | 201 B | 0.76 |
| &#39;ComputeHash128 (large)&#39; | .NET 9.0 | .NET 9.0 | Fnv1 | 10,297,469.17 ns | 543,543.911 ns | 625,945.977 ns | 10,479,429.17 ns | 8,199,195.83 ns | 10,764,233.33 ns | 1.00 | 0.09 | - | 265 B | 1.00 |
| | | | | | | | | | | | | | | |
| &#39;ComputeHash256 (small)&#39; | .NET 10.0 | .NET 10.0 | Fnv1 | 2,408.15 ns | 98.561 ns | 113.503 ns | 2,404.36 ns | 1,968.61 ns | 2,539.86 ns | 1.00 | 0.05 | 0.0086 | 240 B | 0.79 |
| &#39;ComputeHash256 (small)&#39; | .NET 9.0 | .NET 9.0 | Fnv1 | 2,407.95 ns | 39.906 ns | 33.323 ns | 2,401.07 ns | 2,357.00 ns | 2,493.70 ns | 1.00 | 0.02 | 0.0187 | 304 B | 1.00 |
| | | | | | | | | | | | | | | |
| &#39;ComputeHash256 (large)&#39; | .NET 10.0 | .NET 10.0 | Fnv1 | 23,361,921.67 ns | 343,325.153 ns | 321,146.561 ns | 23,236,800.00 ns | 23,022,750.00 ns | 24,182,875.00 ns | 1.09 | 0.25 | - | 296 B | 0.83 |
| &#39;ComputeHash256 (large)&#39; | .NET 9.0 | .NET 9.0 | Fnv1 | 22,088,434.21 ns | 2,983,730.504 ns | 3,316,408.550 ns | 23,243,050.00 ns | 11,580,200.00 ns | 25,254,625.00 ns | 1.03 | 0.28 | - | 358 B | 1.00 |
| | | | | | | | | | | | | | | |
| &#39;ComputeHash512 (small)&#39; | .NET 10.0 | .NET 10.0 | Fnv1 | 7,310.60 ns | 288.216 ns | 320.351 ns | 7,380.94 ns | 6,126.43 ns | 7,567.07 ns | 1.01 | 0.07 | - | 336 B | 0.84 |
| &#39;ComputeHash512 (small)&#39; | .NET 9.0 | .NET 9.0 | Fnv1 | 7,284.33 ns | 371.306 ns | 381.304 ns | 7,434.16 ns | 6,262.40 ns | 7,614.62 ns | 1.00 | 0.08 | - | 400 B | 1.00 |
| | | | | | | | | | | | | | | |
| &#39;ComputeHash512 (large)&#39; | .NET 10.0 | .NET 10.0 | Fnv1 | 72,438,354.17 ns | 2,328,745.921 ns | 2,491,732.047 ns | 72,952,287.50 ns | 64,311,150.00 ns | 75,007,950.00 ns | 1.00 | 0.05 | - | 392 B | 0.86 |
| &#39;ComputeHash512 (large)&#39; | .NET 9.0 | .NET 9.0 | Fnv1 | 72,777,940.79 ns | 2,378,159.721 ns | 2,643,318.229 ns | 73,390,775.00 ns | 64,024,825.00 ns | 74,868,275.00 ns | 1.00 | 0.05 | - | 454 B | 1.00 |
| | | | | | | | | | | | | | | |
| &#39;ComputeHash1024 (small)&#39; | .NET 10.0 | .NET 10.0 | Fnv1 | 21,839.16 ns | 607.793 ns | 650.332 ns | 22,048.48 ns | 19,799.26 ns | 22,404.92 ns | 0.97 | 0.06 | - | 528 B | 0.89 |
| &#39;ComputeHash1024 (small)&#39; | .NET 9.0 | .NET 9.0 | Fnv1 | 22,499.04 ns | 839.987 ns | 967.331 ns | 22,631.62 ns | 18,620.93 ns | 23,350.81 ns | 1.00 | 0.06 | - | 592 B | 1.00 |
| | | | | | | | | | | | | | | |
| &#39;ComputeHash1024 (large)&#39; | .NET 10.0 | .NET 10.0 | Fnv1 | 293,379,305.88 ns | 5,519,217.527 ns | 5,667,830.054 ns | 294,238,400.00 ns | 278,105,900.00 ns | 299,262,000.00 ns | 1.09 | 0.02 | - | 752 B | 0.93 |
| &#39;ComputeHash1024 (large)&#39; | .NET 9.0 | .NET 9.0 | Fnv1 | 268,643,542.86 ns | 2,198,007.588 ns | 1,948,476.476 ns | 268,287,600.00 ns | 266,328,900.00 ns | 272,958,100.00 ns | 1.00 | 0.01 | - | 808 B | 1.00 |
| | | | | | | | | | | | | | | |
| **&#39;ComputeHash32 (small)&#39;** | **.NET 10.0** | **.NET 10.0** | **Fnv1a** | **44.13 ns** | **1.764 ns** | **1.888 ns** | **44.35 ns** | **37.26 ns** | **46.31 ns** | **1.01** | **0.05** | **0.0035** | **56 B** | **1.00** |
| &#39;ComputeHash32 (small)&#39; | .NET 9.0 | .NET 9.0 | Fnv1a | 43.83 ns | 0.904 ns | 0.929 ns | 43.80 ns | 41.79 ns | 45.41 ns | 1.00 | 0.03 | 0.0035 | 56 B | 1.00 |
| | | | | | | | | | | | | | | |
| &#39;ComputeHash32 (large)&#39; | .NET 10.0 | .NET 10.0 | Fnv1a | 484,862.53 ns | 7,613.077 ns | 6,357.264 ns | 486,333.59 ns | 464,753.71 ns | 490,745.51 ns | 1.00 | 0.01 | - | 56 B | 1.00 |
| &#39;ComputeHash32 (large)&#39; | .NET 9.0 | .NET 9.0 | Fnv1a | 486,370.96 ns | 1,899.973 ns | 1,483.374 ns | 486,302.73 ns | 484,818.36 ns | 489,958.79 ns | 1.00 | 0.00 | - | 56 B | 1.00 |
| | | | | | | | | | | | | | | |
| &#39;ComputeHash64 (small)&#39; | .NET 10.0 | .NET 10.0 | Fnv1a | 61.73 ns | 1.143 ns | 1.069 ns | 61.48 ns | 60.07 ns | 63.70 ns | 1.01 | 0.09 | 0.0035 | 56 B | 1.00 |
| &#39;ComputeHash64 (small)&#39; | .NET 9.0 | .NET 9.0 | Fnv1a | 61.44 ns | 4.144 ns | 4.772 ns | 62.61 ns | 47.59 ns | 66.51 ns | 1.01 | 0.12 | 0.0035 | 56 B | 1.00 |
| | | | | | | | | | | | | | | |
| &#39;ComputeHash64 (large)&#39; | .NET 10.0 | .NET 10.0 | Fnv1a | 691,714.33 ns | 59,489.249 ns | 63,652.830 ns | 709,552.98 ns | 513,634.38 ns | 729,552.56 ns | 0.97 | 0.09 | - | 56 B | 1.00 |
| &#39;ComputeHash64 (large)&#39; | .NET 9.0 | .NET 9.0 | Fnv1a | 713,994.81 ns | 9,296.636 ns | 8,696.079 ns | 711,014.49 ns | 702,122.73 ns | 730,892.90 ns | 1.00 | 0.02 | - | 56 B | 1.00 |
| | | | | | | | | | | | | | | |
| &#39;ComputeHash128 (small)&#39; | .NET 10.0 | .NET 10.0 | Fnv1a | 992.60 ns | 60.035 ns | 69.136 ns | 1,020.09 ns | 783.62 ns | 1,041.29 ns | 0.90 | 0.06 | 0.0082 | 192 B | 0.75 |
| &#39;ComputeHash128 (small)&#39; | .NET 9.0 | .NET 9.0 | Fnv1a | 1,099.42 ns | 13.869 ns | 12.973 ns | 1,095.27 ns | 1,086.14 ns | 1,125.26 ns | 1.00 | 0.02 | 0.0132 | 256 B | 1.00 |
| | | | | | | | | | | | | | | |
| &#39;ComputeHash128 (large)&#39; | .NET 10.0 | .NET 10.0 | Fnv1a | 9,425,976.73 ns | 705,042.362 ns | 811,927.833 ns | 9,673,563.46 ns | 6,381,980.77 ns | 9,848,542.31 ns | 0.93 | 0.09 | - | 201 B | 0.76 |
| &#39;ComputeHash128 (large)&#39; | .NET 9.0 | .NET 9.0 | Fnv1a | 10,174,929.17 ns | 458,639.419 ns | 470,988.916 ns | 10,264,316.67 ns | 8,371,045.83 ns | 10,497,000.00 ns | 1.00 | 0.07 | - | 265 B | 1.00 |
| | | | | | | | | | | | | | | |
| &#39;ComputeHash256 (small)&#39; | .NET 10.0 | .NET 10.0 | Fnv1a | 2,434.92 ns | 47.154 ns | 52.411 ns | 2,413.43 ns | 2,308.16 ns | 2,540.21 ns | 1.01 | 0.02 | 0.0096 | 240 B | 0.79 |
| &#39;ComputeHash256 (small)&#39; | .NET 9.0 | .NET 9.0 | Fnv1a | 2,410.69 ns | 24.274 ns | 20.270 ns | 2,405.62 ns | 2,389.81 ns | 2,467.03 ns | 1.00 | 0.01 | 0.0193 | 304 B | 1.00 |
| | | | | | | | | | | | | | | |
| &#39;ComputeHash256 (large)&#39; | .NET 10.0 | .NET 10.0 | Fnv1a | 23,223,505.56 ns | 953,208.733 ns | 1,019,922.665 ns | 23,494,662.50 ns | 20,199,400.00 ns | 24,015,300.00 ns | 0.92 | 0.06 | - | 296 B | 0.83 |
| &#39;ComputeHash256 (large)&#39; | .NET 9.0 | .NET 9.0 | Fnv1a | 25,412,497.50 ns | 1,005,989.704 ns | 1,158,499.239 ns | 25,560,937.50 ns | 23,667,600.00 ns | 27,531,950.00 ns | 1.00 | 0.06 | - | 358 B | 1.00 |
| | | | | | | | | | | | | | | |
| &#39;ComputeHash512 (small)&#39; | .NET 10.0 | .NET 10.0 | Fnv1a | 7,378.49 ns | 245.488 ns | 282.705 ns | 7,369.34 ns | 6,265.74 ns | 7,630.78 ns | 0.99 | 0.04 | - | 336 B | 0.84 |
| &#39;ComputeHash512 (small)&#39; | .NET 9.0 | .NET 9.0 | Fnv1a | 7,460.73 ns | 89.626 ns | 83.836 ns | 7,445.17 ns | 7,326.61 ns | 7,666.13 ns | 1.00 | 0.02 | - | 400 B | 1.00 |
| | | | | | | | | | | | | | | |
| &#39;ComputeHash512 (large)&#39; | .NET 10.0 | .NET 10.0 | Fnv1a | 74,070,804.41 ns | 1,476,981.807 ns | 1,516,751.574 ns | 74,301,275.00 ns | 71,446,950.00 ns | 76,544,125.00 ns | 1.01 | 0.04 | - | 392 B | 0.86 |
| &#39;ComputeHash512 (large)&#39; | .NET 9.0 | .NET 9.0 | Fnv1a | 73,099,323.68 ns | 2,326,454.946 ns | 2,585,848.509 ns | 73,528,900.00 ns | 62,658,075.00 ns | 75,058,700.00 ns | 1.00 | 0.05 | - | 454 B | 1.00 |
| | | | | | | | | | | | | | | |
| &#39;ComputeHash1024 (small)&#39; | .NET 10.0 | .NET 10.0 | Fnv1a | 21,997.89 ns | 679.030 ns | 781.971 ns | 22,104.69 ns | 19,033.40 ns | 22,638.99 ns | 1.01 | 0.09 | - | 528 B | 0.89 |
| &#39;ComputeHash1024 (small)&#39; | .NET 9.0 | .NET 9.0 | Fnv1a | 21,927.44 ns | 1,573.783 ns | 1,616.159 ns | 22,637.87 ns | 18,012.92 ns | 22,987.92 ns | 1.01 | 0.11 | - | 592 B | 1.00 |
| | | | | | | | | | | | | | | |
| &#39;ComputeHash1024 (large)&#39; | .NET 10.0 | .NET 10.0 | Fnv1a | 290,670,140.00 ns | 11,015,382.219 ns | 12,685,330.548 ns | 292,789,800.00 ns | 251,227,700.00 ns | 301,504,900.00 ns | 1.13 | 0.23 | - | 752 B | 0.93 |
| &#39;ComputeHash1024 (large)&#39; | .NET 9.0 | .NET 9.0 | Fnv1a | 261,996,177.78 ns | 28,627,002.702 ns | 30,630,572.191 ns | 270,939,850.00 ns | 142,795,000.00 ns | 274,029,300.00 ns | 1.02 | 0.23 | - | 808 B | 1.00 |
| Method | Runtime | Algorithm | Mean | Error | StdDev | Median | Min | Max | Gen0 | Allocated |
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add blank line before benchmark results table (MD058).

Line 13 (code fence closing) should be followed by a blank line before the table header on line 14 to comply with markdown formatting standards.

Apply this fix:

 PowerPlanMode=00000000-0000-0000-0000-000000000000  IterationTime=250ms  MaxIterationCount=20  
 MinIterationCount=15  WarmupCount=1  
 

| Method | Runtime | Algorithm | Mean | Error | StdDev | Median | Min | Max | Gen0 | Allocated |


<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

```suggestion

🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

14-14: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)

🤖 Prompt for AI Agents
In reports/tuning/Cuemon.Security.FowlerNollVoHashBenchmark-report-github.md
around lines 13 to 14, the closing code fence on line 13 must be followed by a
single blank line before the table header on line 14 to satisfy MD058; insert
one empty line between the fenced code block end and the table header so the
table is separated from the code fence.

Comment on lines 13 to +14
```
| Method | Job | Runtime | Size | Mean | Error | StdDev | Median | Min | Max | Ratio | RatioSD | Gen0 | Gen1 | Allocated | Alloc Ratio |
|------------------------------------ |---------- |---------- |----- |---------------:|--------------:|--------------:|---------------:|---------------:|---------------:|------:|--------:|-------:|-------:|----------:|------------:|
| **&#39;HashResult.GetBytes - copy bytes&#39;** | **.NET 10.0** | **.NET 10.0** | **0** | **0.1899 ns** | **0.1607 ns** | **0.1850 ns** | **0.1019 ns** | **0.0000 ns** | **0.4901 ns** | **0.32** | **0.30** | **-** | **-** | **-** | **NA** |
| &#39;HashResult.GetBytes - copy bytes&#39; | .NET 9.0 | .NET 9.0 | 0 | 0.6050 ns | 0.0575 ns | 0.0538 ns | 0.5937 ns | 0.5139 ns | 0.6962 ns | 1.01 | 0.12 | - | - | - | NA |
| | | | | | | | | | | | | | | | |
| HashResult.ToHexadecimalString | .NET 10.0 | .NET 10.0 | 0 | 4.3974 ns | 0.1999 ns | 0.2222 ns | 4.4440 ns | 4.0578 ns | 4.9124 ns | 0.78 | 0.04 | - | - | - | NA |
| HashResult.ToHexadecimalString | .NET 9.0 | .NET 9.0 | 0 | 5.6316 ns | 0.1368 ns | 0.1279 ns | 5.5889 ns | 5.5085 ns | 5.9739 ns | 1.00 | 0.03 | - | - | - | NA |
| | | | | | | | | | | | | | | | |
| HashResult.ToBase64String | .NET 10.0 | .NET 10.0 | 0 | 0.7507 ns | 0.0206 ns | 0.0182 ns | 0.7490 ns | 0.7177 ns | 0.7800 ns | 0.60 | 0.04 | - | - | - | NA |
| HashResult.ToBase64String | .NET 9.0 | .NET 9.0 | 0 | 1.2622 ns | 0.0789 ns | 0.0810 ns | 1.2306 ns | 1.1764 ns | 1.4189 ns | 1.00 | 0.09 | - | - | - | NA |
| | | | | | | | | | | | | | | | |
| HashResult.ToUrlEncodedBase64String | .NET 10.0 | .NET 10.0 | 0 | 7.9269 ns | 0.2077 ns | 0.2133 ns | 7.8810 ns | 7.5153 ns | 8.2935 ns | 0.75 | 0.03 | 0.0020 | - | 32 B | 1.00 |
| HashResult.ToUrlEncodedBase64String | .NET 9.0 | .NET 9.0 | 0 | 10.6080 ns | 0.2623 ns | 0.2694 ns | 10.6551 ns | 10.2409 ns | 11.1723 ns | 1.00 | 0.03 | 0.0020 | - | 32 B | 1.00 |
| | | | | | | | | | | | | | | | |
| HashResult.ToBinaryString | .NET 10.0 | .NET 10.0 | 0 | 2.3159 ns | 0.0532 ns | 0.0444 ns | 2.3027 ns | 2.2691 ns | 2.4234 ns | 0.28 | 0.01 | - | - | - | NA |
| HashResult.ToBinaryString | .NET 9.0 | .NET 9.0 | 0 | 8.2501 ns | 0.2058 ns | 0.1925 ns | 8.2087 ns | 8.0026 ns | 8.5642 ns | 1.00 | 0.03 | - | - | - | NA |
| | | | | | | | | | | | | | | | |
| &#39;HashResult.To&lt;string&gt; (converter)&#39; | .NET 10.0 | .NET 10.0 | 0 | 1.4854 ns | 0.0419 ns | 0.0371 ns | 1.4837 ns | 1.4305 ns | 1.5463 ns | 0.77 | 0.03 | - | - | - | NA |
| &#39;HashResult.To&lt;string&gt; (converter)&#39; | .NET 9.0 | .NET 9.0 | 0 | 1.9255 ns | 0.0500 ns | 0.0468 ns | 1.9154 ns | 1.8678 ns | 2.0306 ns | 1.00 | 0.03 | - | - | - | NA |
| | | | | | | | | | | | | | | | |
| **&#39;HashResult.GetBytes - copy bytes&#39;** | **.NET 10.0** | **.NET 10.0** | **8** | **3.6698 ns** | **0.1523 ns** | **0.1693 ns** | **3.6968 ns** | **3.3961 ns** | **3.9878 ns** | **0.70** | **0.08** | **0.0020** | **-** | **32 B** | **1.00** |
| &#39;HashResult.GetBytes - copy bytes&#39; | .NET 9.0 | .NET 9.0 | 8 | 5.3099 ns | 0.4813 ns | 0.5543 ns | 5.1356 ns | 4.6109 ns | 6.0498 ns | 1.01 | 0.15 | 0.0020 | - | 32 B | 1.00 |
| | | | | | | | | | | | | | | | |
| HashResult.ToHexadecimalString | .NET 10.0 | .NET 10.0 | 8 | 18.8266 ns | 0.4924 ns | 0.5268 ns | 18.7881 ns | 17.9686 ns | 19.7976 ns | 0.77 | 0.06 | 0.0071 | - | 112 B | 1.00 |
| HashResult.ToHexadecimalString | .NET 9.0 | .NET 9.0 | 8 | 24.4800 ns | 1.5941 ns | 1.8358 ns | 24.5886 ns | 21.8618 ns | 29.1413 ns | 1.01 | 0.10 | 0.0071 | - | 112 B | 1.00 |
| | | | | | | | | | | | | | | | |
| HashResult.ToBase64String | .NET 10.0 | .NET 10.0 | 8 | 8.9394 ns | 0.2436 ns | 0.2501 ns | 8.9677 ns | 8.5694 ns | 9.2560 ns | 0.83 | 0.04 | 0.0031 | - | 48 B | 1.00 |
| HashResult.ToBase64String | .NET 9.0 | .NET 9.0 | 8 | 10.8334 ns | 0.3936 ns | 0.4532 ns | 10.8449 ns | 10.2466 ns | 11.6212 ns | 1.00 | 0.06 | 0.0030 | - | 48 B | 1.00 |
| | | | | | | | | | | | | | | | |
| HashResult.ToUrlEncodedBase64String | .NET 10.0 | .NET 10.0 | 8 | 31.5398 ns | 1.1195 ns | 1.2892 ns | 31.3105 ns | 30.0733 ns | 34.5121 ns | 0.84 | 0.04 | 0.0086 | - | 136 B | 1.00 |
| HashResult.ToUrlEncodedBase64String | .NET 9.0 | .NET 9.0 | 8 | 37.7741 ns | 0.7402 ns | 0.7270 ns | 37.9246 ns | 36.1056 ns | 38.6473 ns | 1.00 | 0.03 | 0.0086 | - | 136 B | 1.00 |
| | | | | | | | | | | | | | | | |
| HashResult.ToBinaryString | .NET 10.0 | .NET 10.0 | 8 | 121.2123 ns | 2.7938 ns | 3.2173 ns | 120.6071 ns | 116.4115 ns | 127.9913 ns | 0.82 | 0.03 | 0.0423 | - | 664 B | 1.00 |
| HashResult.ToBinaryString | .NET 9.0 | .NET 9.0 | 8 | 147.2114 ns | 2.8870 ns | 3.0890 ns | 147.1515 ns | 141.8733 ns | 152.5684 ns | 1.00 | 0.03 | 0.0421 | - | 664 B | 1.00 |
| | | | | | | | | | | | | | | | |
| &#39;HashResult.To&lt;string&gt; (converter)&#39; | .NET 10.0 | .NET 10.0 | 8 | 9.5429 ns | 0.3250 ns | 0.3612 ns | 9.4518 ns | 9.1711 ns | 10.5143 ns | 0.66 | 0.18 | 0.0030 | - | 48 B | 1.00 |
| &#39;HashResult.To&lt;string&gt; (converter)&#39; | .NET 9.0 | .NET 9.0 | 8 | 16.0595 ns | 5.1452 ns | 5.9252 ns | 12.3539 ns | 11.5648 ns | 26.4717 ns | 1.11 | 0.52 | 0.0030 | - | 48 B | 1.00 |
| | | | | | | | | | | | | | | | |
| **&#39;HashResult.GetBytes - copy bytes&#39;** | **.NET 10.0** | **.NET 10.0** | **32** | **2.9549 ns** | **0.2125 ns** | **0.2183 ns** | **2.8789 ns** | **2.7061 ns** | **3.3933 ns** | **0.62** | **0.22** | **0.0035** | **-** | **56 B** | **1.00** |
| &#39;HashResult.GetBytes - copy bytes&#39; | .NET 9.0 | .NET 9.0 | 32 | 5.6959 ns | 2.3447 ns | 2.7001 ns | 3.9788 ns | 3.5512 ns | 10.1172 ns | 1.19 | 0.71 | 0.0035 | - | 56 B | 1.00 |
| | | | | | | | | | | | | | | | |
| HashResult.ToHexadecimalString | .NET 10.0 | .NET 10.0 | 32 | 27.1042 ns | 0.6509 ns | 0.7235 ns | 26.9399 ns | 26.3488 ns | 28.6672 ns | 0.73 | 0.04 | 0.0193 | - | 304 B | 1.00 |
| HashResult.ToHexadecimalString | .NET 9.0 | .NET 9.0 | 32 | 37.2492 ns | 1.7830 ns | 1.9078 ns | 36.7310 ns | 34.0068 ns | 41.5047 ns | 1.00 | 0.07 | 0.0193 | - | 304 B | 1.00 |
| | | | | | | | | | | | | | | | |
| HashResult.ToBase64String | .NET 10.0 | .NET 10.0 | 32 | 33.9563 ns | 0.8099 ns | 0.9327 ns | 34.0774 ns | 31.0488 ns | 35.2414 ns | 1.78 | 0.11 | 0.0071 | - | 112 B | 1.00 |
| HashResult.ToBase64String | .NET 9.0 | .NET 9.0 | 32 | 19.1324 ns | 0.9202 ns | 1.0229 ns | 19.1216 ns | 16.4070 ns | 20.6657 ns | 1.00 | 0.08 | 0.0071 | - | 112 B | 1.00 |
| | | | | | | | | | | | | | | | |
| HashResult.ToUrlEncodedBase64String | .NET 10.0 | .NET 10.0 | 32 | 105.9781 ns | 16.7741 ns | 19.3171 ns | 113.8672 ns | 57.6292 ns | 119.9665 ns | 1.54 | 0.29 | 0.0311 | - | 488 B | 1.00 |
| HashResult.ToUrlEncodedBase64String | .NET 9.0 | .NET 9.0 | 32 | 68.9203 ns | 3.2866 ns | 3.7848 ns | 67.4534 ns | 64.9570 ns | 77.4326 ns | 1.00 | 0.07 | 0.0310 | - | 488 B | 1.00 |
| | | | | | | | | | | | | | | | |
| HashResult.ToBinaryString | .NET 10.0 | .NET 10.0 | 32 | 788.0583 ns | 123.1042 ns | 141.7669 ns | 854.2335 ns | 446.7816 ns | 873.4718 ns | 0.93 | 0.32 | 0.1589 | - | 2504 B | 1.00 |
| HashResult.ToBinaryString | .NET 9.0 | .NET 9.0 | 32 | 902.7890 ns | 159.0826 ns | 183.1998 ns | 981.6323 ns | 491.7358 ns | 1,034.5140 ns | 1.06 | 0.38 | 0.1592 | - | 2504 B | 1.00 |
| | | | | | | | | | | | | | | | |
| &#39;HashResult.To&lt;string&gt; (converter)&#39; | .NET 10.0 | .NET 10.0 | 32 | 32.1923 ns | 0.8480 ns | 0.9425 ns | 32.0620 ns | 30.5834 ns | 34.1729 ns | 0.89 | 0.06 | 0.0071 | - | 112 B | 1.00 |
| &#39;HashResult.To&lt;string&gt; (converter)&#39; | .NET 9.0 | .NET 9.0 | 32 | 36.1355 ns | 1.9100 ns | 2.1995 ns | 36.5477 ns | 31.1890 ns | 39.8293 ns | 1.00 | 0.09 | 0.0071 | - | 112 B | 1.00 |
| | | | | | | | | | | | | | | | |
| **&#39;HashResult.GetBytes - copy bytes&#39;** | **.NET 10.0** | **.NET 10.0** | **256** | **29.7658 ns** | **3.6673 ns** | **4.2233 ns** | **29.8639 ns** | **22.4952 ns** | **38.0444 ns** | **0.77** | **0.13** | **0.0178** | **-** | **280 B** | **1.00** |
| &#39;HashResult.GetBytes - copy bytes&#39; | .NET 9.0 | .NET 9.0 | 256 | 38.8652 ns | 3.0793 ns | 3.4226 ns | 39.6851 ns | 31.0340 ns | 44.2388 ns | 1.01 | 0.13 | 0.0178 | - | 280 B | 1.00 |
| | | | | | | | | | | | | | | | |
| HashResult.ToHexadecimalString | .NET 10.0 | .NET 10.0 | 256 | 332.3619 ns | 35.7998 ns | 41.2272 ns | 333.7390 ns | 264.1860 ns | 389.6913 ns | 1.17 | 0.19 | 0.1330 | - | 2096 B | 1.00 |
| HashResult.ToHexadecimalString | .NET 9.0 | .NET 9.0 | 256 | 286.6217 ns | 27.1810 ns | 31.3017 ns | 291.8207 ns | 238.8120 ns | 341.9756 ns | 1.01 | 0.15 | 0.1335 | - | 2096 B | 1.00 |
| | | | | | | | | | | | | | | | |
| HashResult.ToBase64String | .NET 10.0 | .NET 10.0 | 256 | 123.0009 ns | 12.4901 ns | 14.3836 ns | 127.7483 ns | 71.2376 ns | 138.7922 ns | 1.24 | 0.21 | 0.0454 | - | 712 B | 1.00 |
| HashResult.ToBase64String | .NET 9.0 | .NET 9.0 | 256 | 100.6536 ns | 8.5627 ns | 9.8609 ns | 101.4415 ns | 66.4831 ns | 112.4094 ns | 1.01 | 0.16 | 0.0453 | - | 712 B | 1.00 |
| | | | | | | | | | | | | | | | |
| HashResult.ToUrlEncodedBase64String | .NET 10.0 | .NET 10.0 | 256 | 407.1584 ns | 40.0446 ns | 46.1154 ns | 411.8714 ns | 259.9935 ns | 470.3277 ns | 1.12 | 0.26 | 0.1844 | - | 2896 B | 1.00 |
| HashResult.ToUrlEncodedBase64String | .NET 9.0 | .NET 9.0 | 256 | 371.1954 ns | 39.6840 ns | 45.7001 ns | 382.8811 ns | 197.3467 ns | 417.4752 ns | 1.02 | 0.24 | 0.1842 | - | 2896 B | 1.00 |
| | | | | | | | | | | | | | | | |
| HashResult.ToBinaryString | .NET 10.0 | .NET 10.0 | 256 | 6,218.3123 ns | 1,481.9248 ns | 1,706.5868 ns | 7,204.6794 ns | 3,502.0993 ns | 8,131.5561 ns | 0.82 | 0.32 | 1.2212 | - | 19296 B | 1.00 |
| HashResult.ToBinaryString | .NET 9.0 | .NET 9.0 | 256 | 7,939.5740 ns | 1,185.5915 ns | 1,365.3289 ns | 8,278.9708 ns | 4,101.9731 ns | 9,248.0146 ns | 1.05 | 0.34 | 1.2303 | - | 19296 B | 1.00 |
| | | | | | | | | | | | | | | | |
| &#39;HashResult.To&lt;string&gt; (converter)&#39; | .NET 10.0 | .NET 10.0 | 256 | 110.8995 ns | 12.8471 ns | 14.7948 ns | 114.7455 ns | 78.0893 ns | 130.2795 ns | 1.12 | 0.24 | 0.0453 | - | 712 B | 1.00 |
| &#39;HashResult.To&lt;string&gt; (converter)&#39; | .NET 9.0 | .NET 9.0 | 256 | 100.6368 ns | 10.6125 ns | 11.3553 ns | 101.3606 ns | 60.0488 ns | 116.4351 ns | 1.02 | 0.20 | 0.0453 | - | 712 B | 1.00 |
| | | | | | | | | | | | | | | | |
| **&#39;HashResult.GetBytes - copy bytes&#39;** | **.NET 10.0** | **.NET 10.0** | **1024** | **106.0886 ns** | **32.3535 ns** | **37.2584 ns** | **111.2442 ns** | **40.5701 ns** | **160.8209 ns** | **0.71** | **0.25** | **0.0667** | **-** | **1048 B** | **1.00** |
| &#39;HashResult.GetBytes - copy bytes&#39; | .NET 9.0 | .NET 9.0 | 1024 | 150.7442 ns | 11.1358 ns | 12.8240 ns | 154.2401 ns | 122.7963 ns | 171.2166 ns | 1.01 | 0.12 | 0.0668 | - | 1048 B | 1.00 |
| | | | | | | | | | | | | | | | |
| HashResult.ToHexadecimalString | .NET 10.0 | .NET 10.0 | 1024 | 1,191.2612 ns | 215.2370 ns | 247.8672 ns | 1,298.6681 ns | 574.7689 ns | 1,350.1792 ns | 1.04 | 0.29 | 0.5234 | - | 8240 B | 1.00 |
| HashResult.ToHexadecimalString | .NET 9.0 | .NET 9.0 | 1024 | 1,176.2450 ns | 162.5583 ns | 187.2024 ns | 1,243.0160 ns | 825.1306 ns | 1,386.8318 ns | 1.03 | 0.25 | 0.5251 | - | 8240 B | 1.00 |
| | | | | | | | | | | | | | | | |
| HashResult.ToBase64String | .NET 10.0 | .NET 10.0 | 1024 | 300.3005 ns | 42.9724 ns | 49.4871 ns | 317.5721 ns | 137.4879 ns | 350.7828 ns | 0.88 | 0.15 | 0.1758 | - | 2760 B | 1.00 |
| HashResult.ToBase64String | .NET 9.0 | .NET 9.0 | 1024 | 341.0496 ns | 19.4105 ns | 22.3531 ns | 335.7253 ns | 304.2064 ns | 394.2699 ns | 1.00 | 0.09 | 0.1754 | - | 2760 B | 1.00 |
| | | | | | | | | | | | | | | | |
| HashResult.ToUrlEncodedBase64String | .NET 10.0 | .NET 10.0 | 1024 | 1,155.3536 ns | 224.8620 ns | 258.9515 ns | 1,206.5760 ns | 572.7688 ns | 1,607.1837 ns | 0.97 | 0.22 | 0.7055 | 0.0132 | 11088 B | 1.00 |
| HashResult.ToUrlEncodedBase64String | .NET 9.0 | .NET 9.0 | 1024 | 1,193.5769 ns | 64.3511 ns | 74.1068 ns | 1,212.5970 ns | 953.9424 ns | 1,291.8988 ns | 1.00 | 0.09 | 0.7057 | 0.0128 | 11088 B | 1.00 |
| | | | | | | | | | | | | | | | |
| HashResult.ToBinaryString | .NET 10.0 | .NET 10.0 | 1024 | 28,677.0629 ns | 6,031.6343 ns | 6,946.0390 ns | 31,176.7351 ns | 14,859.7019 ns | 35,315.9641 ns | 0.89 | 0.28 | 4.8265 | - | 76504 B | 1.00 |
| HashResult.ToBinaryString | .NET 9.0 | .NET 9.0 | 1024 | 33,046.6779 ns | 3,735.5753 ns | 3,997.0237 ns | 34,042.7982 ns | 17,311.8316 ns | 35,023.0998 ns | 1.03 | 0.25 | 4.8292 | - | 76504 B | 1.00 |
| | | | | | | | | | | | | | | | |
| &#39;HashResult.To&lt;string&gt; (converter)&#39; | .NET 10.0 | .NET 10.0 | 1024 | 299.3046 ns | 58.4910 ns | 60.0659 ns | 318.5440 ns | 144.0678 ns | 346.3153 ns | 1.11 | 0.50 | 0.1760 | - | 2760 B | 1.00 |
| &#39;HashResult.To&lt;string&gt; (converter)&#39; | .NET 9.0 | .NET 9.0 | 1024 | 296.0905 ns | 62.9758 ns | 72.5230 ns | 327.2458 ns | 136.8395 ns | 373.7436 ns | 1.10 | 0.52 | 0.1756 | - | 2760 B | 1.00 |
| Method | Runtime | Size | Mean | Error | StdDev | Median | Min | Max | Gen0 | Gen1 | Allocated |
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add blank line before benchmark results table (MD058).

Line 13 (code fence closing) should be followed by a blank line before the table header on line 14.

Apply this fix:

 PowerPlanMode=00000000-0000-0000-0000-000000000000  IterationTime=250ms  MaxIterationCount=20  
 MinIterationCount=15  WarmupCount=1  
 

| Method | Runtime | Size | Mean | Error | StdDev | Median | Min | Max | Gen0 | Gen1 | Allocated |


<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

```suggestion

🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

14-14: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)

🤖 Prompt for AI Agents
In reports/tuning/Cuemon.Security.HashResultBenchmark-report-github.md around
lines 13 to 14, the closing code fence on line 13 must be followed by a blank
line before the Markdown table header on line 14 to satisfy MD058; insert a
single empty line between the code fence and the table header so the table is
properly separated from the preceding fenced code block.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This is a service update (version 10.1.1) that focuses on upgrading package dependencies to their latest compatible versions across all supported target frameworks (.NET 10, .NET 9, and .NET Standard 2.0). The PR includes infrastructure improvements by adding a new benchmark runner tooling project and transitioning from the legacy .sln format to the modern .slnx format.

  • Updated Microsoft package dependencies from version 10.0.0 to 10.0.1 and from 9.0.10 to 9.0.11
  • Added new benchmark runner tooling using Codebelt.Extensions.BenchmarkDotNet
  • Transitioned solution file from classic .sln to modern .slnx format
  • Updated Docker test environment image to match .NET 10.0.1
  • Refreshed benchmark reports with new .NET SDK versions
  • Updated CI pipeline badge reference in README

Reviewed changes

Copilot reviewed 60 out of 60 changed files in this pull request and generated no comments.

Show a summary per file
File Description
tooling/bdn-runner/bdn-runner.csproj New benchmark runner project targeting .NET 10.0
tooling/bdn-runner/Program.cs Benchmark runner entry point configured for .NET 9.0 and 10.0 runtimes
Directory.Packages.props Updated Microsoft.* package versions from 10.0.0 to 10.0.1 and 9.0.10 to 9.0.11, added Codebelt.Extensions.BenchmarkDotNet.Console 1.0.0
Directory.Build.props Moved PackageReleaseNotesFile property definition from targets to props, removed duplicate TargetFrameworks line
Directory.Build.targets Removed PackageReleaseNotesFile property definition (moved to props)
testenvironments.json Updated Docker image from 10.0.100 to 10.0.101
Cuemon.slnx New XML-based solution file replacing legacy .sln format
Cuemon.sln Deleted legacy solution file (replaced by .slnx)
README.md Updated build status badge URL from pipelines.yml to ci-pipeline.yml
CHANGELOG.md Added version 10.1.1 entry documenting dependency updates
reports/tuning/*.md Updated benchmark reports reflecting new SDK version 10.0.101 and runtime 10.0.1
.nuget/*/PackageReleaseNotes.txt Added v10.1.1 release notes documenting dependency upgrades for all packages

@gimlichael gimlichael merged commit 6ab56d2 into main Dec 12, 2025
301 of 303 checks passed
@gimlichael gimlichael deleted the v10.1.1/service-update branch December 12, 2025 02:13
gimlichael added a commit that referenced this pull request Dec 12, 2025
@gimlichael gimlichael restored the v10.1.1/service-update branch December 12, 2025 08:00
@gimlichael gimlichael deleted the v10.1.1/service-update branch December 12, 2025 22:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants