Skip to content

Commit b442b75

Browse files
leecampbell-codeagentLeeCampbell
authored andcommitted
feat(#132): implement tasks
1 parent a92f494 commit b442b75

4 files changed

Lines changed: 19 additions & 19 deletions

File tree

HdrHistogram.Benchmarking/HdrHistogram.Benchmarking.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
</PropertyGroup>
77

88
<ItemGroup>
9-
<PackageReference Include="BenchmarkDotNet" Version="0.13.12" />
9+
<PackageReference Include="BenchmarkDotNet" Version="0.15.8" />
1010
<PackageReference Include="BenchmarkDotNet.Diagnostics.Windows">
11-
<Version>0.13.12</Version>
11+
<Version>0.15.8</Version>
1212
</PackageReference>
1313
</ItemGroup>
1414

File renamed without changes.
Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ Verification is build-based — no unit test changes are required.
1212

1313
### 1. Update package references in the project file
1414

15-
- [ ] **Task 1** — In `HdrHistogram.Benchmarking/HdrHistogram.Benchmarking.csproj` line 9, change `Version="0.13.12"` to `Version="0.15.8"` for the `BenchmarkDotNet` `<PackageReference>`.
15+
- [x] **Task 1** — In `HdrHistogram.Benchmarking/HdrHistogram.Benchmarking.csproj` line 9, change `Version="0.13.12"` to `Version="0.15.8"` for the `BenchmarkDotNet` `<PackageReference>`.
1616
- File: `HdrHistogram.Benchmarking/HdrHistogram.Benchmarking.csproj`
1717
- Why: This is the primary package that provides the benchmarking framework.
1818
- Verify: The element reads `<PackageReference Include="BenchmarkDotNet" Version="0.15.8" />`.
1919

20-
- [ ] **Task 2** — In `HdrHistogram.Benchmarking/HdrHistogram.Benchmarking.csproj` lines 10–12, change `<Version>0.13.12</Version>` to `<Version>0.15.8</Version>` for the `BenchmarkDotNet.Diagnostics.Windows` `<PackageReference>`.
20+
- [x] **Task 2** — In `HdrHistogram.Benchmarking/HdrHistogram.Benchmarking.csproj` lines 10–12, change `<Version>0.13.12</Version>` to `<Version>0.15.8</Version>` for the `BenchmarkDotNet.Diagnostics.Windows` `<PackageReference>`.
2121
- File: `HdrHistogram.Benchmarking/HdrHistogram.Benchmarking.csproj`
2222
- Why: Companion package; must always match the main `BenchmarkDotNet` version exactly.
2323
- Verify: The element reads `<PackageReference Include="BenchmarkDotNet.Diagnostics.Windows"><Version>0.15.8</Version></PackageReference>`.
@@ -26,7 +26,7 @@ Verification is build-based — no unit test changes are required.
2626

2727
### 2. Restore packages
2828

29-
- [ ] **Task 3** — Run `dotnet restore HdrHistogram.Benchmarking/HdrHistogram.Benchmarking.csproj` and confirm it exits with code 0.
29+
- [x] **Task 3** — Run `dotnet restore HdrHistogram.Benchmarking/HdrHistogram.Benchmarking.csproj` and confirm it exits with code 0.
3030
- File: `HdrHistogram.Benchmarking/HdrHistogram.Benchmarking.csproj`
3131
- Why: Pulls the `0.15.8` NuGet packages from the feed before attempting compilation.
3232
- Verify: Command output shows no errors; `BenchmarkDotNet 0.15.8` appears in restored packages.
@@ -35,7 +35,7 @@ Verification is build-based — no unit test changes are required.
3535

3636
### 3. Attempt first build and capture diagnostics
3737

38-
- [ ] **Task 4** — Run `dotnet build HdrHistogram.Benchmarking/HdrHistogram.Benchmarking.csproj -c Release` and capture the full compiler output.
38+
- [x] **Task 4** — Run `dotnet build HdrHistogram.Benchmarking/HdrHistogram.Benchmarking.csproj -c Release` and capture the full compiler output.
3939
- File: `HdrHistogram.Benchmarking/HdrHistogram.Benchmarking.csproj` (and referenced source files)
4040
- Why: Surfaces any compilation errors or new analyser warnings-as-errors introduced by the version bump before attempting fixes.
4141
- Verify: Output is captured and reviewed for error codes and messages.
@@ -46,22 +46,22 @@ Verification is build-based — no unit test changes are required.
4646

4747
`Program.cs` configures jobs targeting several runtimes that may have been removed or renamed in BenchmarkDotNet 0.14/0.15.
4848

49-
- [ ] **Task 5** — Check whether `ClrRuntime.Net481` still exists in `BenchmarkDotNet.Environments` in 0.15.8; if it has been removed or renamed, update `Program.cs` accordingly.
49+
- [x] **Task 5** — Check whether `ClrRuntime.Net481` still exists in `BenchmarkDotNet.Environments` in 0.15.8; if it has been removed or renamed, update `Program.cs` accordingly.
5050
- File: `HdrHistogram.Benchmarking/Program.cs` line 19–20
5151
- Why: `ClrRuntime.Net481` and `Jit.LegacyJit` were historically only supported on Windows; BenchmarkDotNet 0.15.x may have removed or deprecated support for these.
5252
- Verify: No `CS0117` / `CS0103` compiler error referencing `ClrRuntime` or `Jit.LegacyJit`.
5353

54-
- [ ] **Task 6** — Check whether `CoreRuntime.Core21`, `CoreRuntime.Core31`, `CoreRuntime.Core50` still exist in 0.15.8; if any have been removed as EOL runtimes, remove or replace those `.AddJob(...)` calls in `Program.cs`.
54+
- [x] **Task 6** — Check whether `CoreRuntime.Core21`, `CoreRuntime.Core31`, `CoreRuntime.Core50` still exist in 0.15.8; if any have been removed as EOL runtimes, remove or replace those `.AddJob(...)` calls in `Program.cs`.
5555
- File: `HdrHistogram.Benchmarking/Program.cs` lines 21–23
5656
- Why: BenchmarkDotNet may drop constants for end-of-life .NET versions; compilation will fail if the symbols no longer exist.
5757
- Verify: No `CS0117` compiler error referencing `CoreRuntime.Core21`, `CoreRuntime.Core31`, or `CoreRuntime.Core50`.
5858

59-
- [ ] **Task 7** — Check whether `StatisticColumn.P0`, `StatisticColumn.Q1`, `StatisticColumn.P67`, `StatisticColumn.Q3`, `StatisticColumn.P80`, `StatisticColumn.P90`, `StatisticColumn.P95`, `StatisticColumn.P100` still exist in `BenchmarkDotNet.Columns` in 0.15.8; if any have been renamed or removed, update `Program.cs`.
59+
- [x] **Task 7** — Check whether `StatisticColumn.P0`, `StatisticColumn.Q1`, `StatisticColumn.P67`, `StatisticColumn.Q3`, `StatisticColumn.P80`, `StatisticColumn.P90`, `StatisticColumn.P95`, `StatisticColumn.P100` still exist in `BenchmarkDotNet.Columns` in 0.15.8; if any have been renamed or removed, update `Program.cs`.
6060
- File: `HdrHistogram.Benchmarking/Program.cs` line 18
6161
- Why: Column name constants occasionally change between minor versions.
6262
- Verify: No `CS0117` compiler error referencing any `StatisticColumn.*` member.
6363

64-
- [ ] **Task 8** — Check whether `ManualConfig.Create`, `DefaultConfig.Instance`, `BenchmarkSwitcher`, and `switcher.Run` APIs remain present and have the same signatures in 0.15.8; fix any signature mismatches if they do not.
64+
- [x] **Task 8** — Check whether `ManualConfig.Create`, `DefaultConfig.Instance`, `BenchmarkSwitcher`, and `switcher.Run` APIs remain present and have the same signatures in 0.15.8; fix any signature mismatches if they do not.
6565
- File: `HdrHistogram.Benchmarking/Program.cs` lines 13, 29, 34
6666
- Why: Core configuration and runner APIs are historically stable but could have changed in two minor versions.
6767
- Verify: No `CS1061`, `CS0246`, or overload-resolution errors on these call sites.
@@ -70,12 +70,12 @@ Verification is build-based — no unit test changes are required.
7070

7171
### 5. Investigate and fix breaking changes in benchmark source files
7272

73-
- [ ] **Task 9** — Check whether `[BenchmarkDotNet.Attributes.GlobalSetup]` and `[Benchmark]` attributes remain unchanged in the BenchmarkDotNet 0.15.8 `Attributes` namespace; fix any namespace or attribute-name changes if present.
73+
- [x] **Task 9** — Check whether `[BenchmarkDotNet.Attributes.GlobalSetup]` and `[Benchmark]` attributes remain unchanged in the BenchmarkDotNet 0.15.8 `Attributes` namespace; fix any namespace or attribute-name changes if present.
7474
- File: `HdrHistogram.Benchmarking/LeadingZeroCount/LeadingZeroCountBenchmarkBase.cs` line 49 and benchmark methods
7575
- Why: Attributes are the primary extension point used in this file; a rename would cause compilation failure.
7676
- Verify: No `CS0246` errors referencing `GlobalSetup` or `Benchmark` attributes.
7777

78-
- [ ] **Task 10** — Confirm `[Benchmark(Baseline = true, OperationsPerInvoke = ...)]` constructor parameters are still valid in 0.15.8; fix any parameter changes if present.
78+
- [x] **Task 10** — Confirm `[Benchmark(Baseline = true, OperationsPerInvoke = ...)]` constructor parameters are still valid in 0.15.8; fix any parameter changes if present.
7979
- File: `HdrHistogram.Benchmarking/Recording/Recording32BitBenchmark.cs` (all `[Benchmark]` attribute usages)
8080
- Why: Named constructor parameters can be removed or renamed across minor versions.
8181
- Verify: No `CS0246`, `CS1739`, or `CS1503` errors on `[Benchmark(...)]` usages.
@@ -84,7 +84,7 @@ Verification is build-based — no unit test changes are required.
8484

8585
### 6. Fix new Roslyn analyser diagnostics
8686

87-
- [ ] **Task 11** — After the first successful compilation pass, review all warnings and determine whether any are promoted to errors under `<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>` and `<AnalysisLevel>latest-recommended</AnalysisLevel>` (set in `Directory.Build.props`); fix any new violations in the benchmarking source files.
87+
- [x] **Task 11** — After the first successful compilation pass, review all warnings and determine whether any are promoted to errors under `<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>` and `<AnalysisLevel>latest-recommended</AnalysisLevel>` (set in `Directory.Build.props`); fix any new violations in the benchmarking source files.
8888
- Files: `HdrHistogram.Benchmarking/Program.cs`, `HdrHistogram.Benchmarking/LeadingZeroCount/LeadingZeroCountBenchmarkBase.cs`, `HdrHistogram.Benchmarking/Recording/Recording32BitBenchmark.cs`
8989
- Why: BenchmarkDotNet 0.15.x ships new Roslyn analysers; existing code may trigger rules that are elevated to errors by the project's global settings.
9090
- Verify: Build output contains zero `error` lines.
@@ -93,7 +93,7 @@ Verification is build-based — no unit test changes are required.
9393

9494
### 7. Verify benchmarking project build succeeds
9595

96-
- [ ] **Task 12** — Run `dotnet build HdrHistogram.Benchmarking/HdrHistogram.Benchmarking.csproj -c Release` and confirm exit code 0 with no errors and no warnings treated as errors.
96+
- [x] **Task 12** — Run `dotnet build HdrHistogram.Benchmarking/HdrHistogram.Benchmarking.csproj -c Release` and confirm exit code 0 with no errors and no warnings treated as errors.
9797
- File: `HdrHistogram.Benchmarking/HdrHistogram.Benchmarking.csproj`
9898
- Why: Directly satisfies acceptance criterion 3.
9999
- Verify: Terminal output ends with `Build succeeded` and `0 Error(s)`.
@@ -102,7 +102,7 @@ Verification is build-based — no unit test changes are required.
102102

103103
### 8. Verify full solution build succeeds
104104

105-
- [ ] **Task 13** — Run `dotnet build HdrHistogram.sln -c Release` and confirm exit code 0 with no errors across all four projects (`HdrHistogram`, `HdrHistogram.Examples`, `HdrHistogram.UnitTests`, `HdrHistogram.Benchmarking`).
105+
- [x] **Task 13** — Run `dotnet build HdrHistogram.sln -c Release` and confirm exit code 0 with no errors across all four projects (`HdrHistogram`, `HdrHistogram.Examples`, `HdrHistogram.UnitTests`, `HdrHistogram.Benchmarking`).
106106
- File: `HdrHistogram.sln`
107107
- Why: Directly satisfies acceptance criterion 4; catches regressions in sibling projects caused by shared `Directory.Build.props` changes, if any.
108108
- Verify: Terminal output ends with `Build succeeded` and `0 Error(s)`.
@@ -111,7 +111,7 @@ Verification is build-based — no unit test changes are required.
111111

112112
### 9. Dry-run benchmark discovery
113113

114-
- [ ] **Task 14** — Run `dotnet run --project HdrHistogram.Benchmarking/HdrHistogram.Benchmarking.csproj -c Release -- --list flat` and confirm BenchmarkDotNet enumerates all benchmarks without crashing.
114+
- [x] **Task 14** — Run `dotnet run --project HdrHistogram.Benchmarking/HdrHistogram.Benchmarking.csproj -c Release -- --list flat` and confirm BenchmarkDotNet enumerates all benchmarks without crashing.
115115
- File: `HdrHistogram.Benchmarking/Program.cs`
116116
- Why: Validates runtime initialisation — a build success does not guarantee that BenchmarkDotNet can discover and enumerate benchmarks at start-up.
117117
- Verify: Output lists at least the `LeadingZeroCount` and `Recording` benchmark classes; process exits with code 0.
@@ -120,7 +120,7 @@ Verification is build-based — no unit test changes are required.
120120

121121
### 10. Update documentation
122122

123-
- [ ] **Task 15** — In `spec/tech-standards/build-system.md`, replace both occurrences of `0.13.12` in the BenchmarkDotNet `<PackageReference>` XML block with `0.15.8`.
123+
- [x] **Task 15** — In `spec/tech-standards/build-system.md`, replace both occurrences of `0.13.12` in the BenchmarkDotNet `<PackageReference>` XML block with `0.15.8`.
124124
- File: `spec/tech-standards/build-system.md` lines 66–67
125125
- Why: Directly satisfies acceptance criterion 5; prevents stale documentation drift.
126126
- Verify: `grep "0.13.12" spec/tech-standards/build-system.md` returns no matches; `grep "0.15.8" spec/tech-standards/build-system.md` returns the updated lines.

spec/tech-standards/build-system.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ Targets the current LTS runtime only (developer tool, not a shipped library):
6363
### Benchmarking Project
6464

6565
```xml
66-
<PackageReference Include="BenchmarkDotNet" Version="0.13.12" />
67-
<PackageReference Include="BenchmarkDotNet.Diagnostics.Windows" Version="0.13.12" />
66+
<PackageReference Include="BenchmarkDotNet" Version="0.15.8" />
67+
<PackageReference Include="BenchmarkDotNet.Diagnostics.Windows" Version="0.15.8" />
6868
```
6969

7070
## Package Metadata

0 commit comments

Comments
 (0)