Skip to content

Commit 2769903

Browse files
leecampbell-codeagentLeeCampbell
authored andcommitted
feat(HdrHistogram#119): implement tasks
1 parent 42b6b18 commit 2769903

8 files changed

Lines changed: 68 additions & 32 deletions

File tree

HdrHistogram.Benchmarking/HdrHistogram.Benchmarking.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFrameworks>net8.0</TargetFrameworks>
5+
<TargetFrameworks>net10.0;net9.0;net8.0</TargetFrameworks>
66
</PropertyGroup>
77

88
<ItemGroup>

HdrHistogram.Examples/HdrHistogram.Examples.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFrameworks>net8.0</TargetFrameworks>
5+
<TargetFrameworks>net10.0</TargetFrameworks>
66
</PropertyGroup>
77

88
<ItemGroup>

HdrHistogram.UnitTests/HdrHistogram.UnitTests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFrameworks>net8.0</TargetFrameworks>
4+
<TargetFrameworks>net10.0;net9.0;net8.0</TargetFrameworks>
55
</PropertyGroup>
66

77
<ItemGroup>

HdrHistogram/HdrHistogram.csproj

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFrameworks>net8.0;netstandard2.0</TargetFrameworks>
4+
<TargetFrameworks>net10.0;net9.0;net8.0;netstandard2.0</TargetFrameworks>
55
<Description>HdrHistogram supports low latency recording and analyzing of sampled data value counts across a configurable integer value range with configurable value precision within the range.</Description>
66
<Authors>Gil Tene, Lee Campbell</Authors>
77
<PackageReleaseNotes>Net 8.0 release</PackageReleaseNotes>
@@ -24,7 +24,15 @@
2424
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net8.0|AnyCPU'">
2525
<DocumentationFile>bin\Release\net8.0\HdrHistogram.xml</DocumentationFile>
2626
</PropertyGroup>
27-
27+
28+
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net9.0|AnyCPU'">
29+
<DocumentationFile>bin\Release\net9.0\HdrHistogram.xml</DocumentationFile>
30+
</PropertyGroup>
31+
32+
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net10.0|AnyCPU'">
33+
<DocumentationFile>bin\Release\net10.0\HdrHistogram.xml</DocumentationFile>
34+
</PropertyGroup>
35+
2836
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|netstandard2.0|AnyCPU'">
2937
<DocumentationFile>bin\Release\netstandard2.0\HdrHistogram.xml</DocumentationFile>
3038
<DefineConstants>RELEASE;NETSTANDARD2_0</DefineConstants>

autonomous/Dockerfile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22
# HdrHistogram.NET Agent Container
33
# .NET SDK + Claude Code + gh CLI + firewall
44
# =============================================================================
5-
FROM mcr.microsoft.com/dotnet/sdk:9.0-bookworm-slim
5+
FROM mcr.microsoft.com/dotnet/sdk:10.0-bookworm-slim
66
RUN dotnet_version=8.0 \
7+
&& curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin \
8+
--runtime dotnet --channel $dotnet_version --install-dir /usr/share/dotnet \
9+
&& dotnet_version=9.0 \
710
&& curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin \
811
--runtime dotnet --channel $dotnet_version --install-dir /usr/share/dotnet
912

File renamed without changes.
Lines changed: 40 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ Cross-referenced against every acceptance criterion in `plan/ready/brief.md`.
88

99
**File:** `HdrHistogram/HdrHistogram.csproj`
1010

11-
- [ ] **1.1** Change `<TargetFrameworks>` on line 4 from `net8.0;netstandard2.0` to
11+
- [x] **1.1** Change `<TargetFrameworks>` on line 4 from `net8.0;netstandard2.0` to
1212
`net10.0;net9.0;net8.0;netstandard2.0`.
1313
Verify: the element reads exactly `<TargetFrameworks>net10.0;net9.0;net8.0;netstandard2.0</TargetFrameworks>`.
1414

15-
- [ ] **1.2** Add two `<PropertyGroup>` conditions for the Release `DocumentationFile`,
15+
- [x] **1.2** Add two `<PropertyGroup>` conditions for the Release `DocumentationFile`,
1616
mirroring the existing block at lines 24–26.
1717
Add one block for `net9.0` (`bin\Release\net9.0\HdrHistogram.xml`) and one for
1818
`net10.0` (`bin\Release\net10.0\HdrHistogram.xml`), immediately after the
@@ -28,7 +28,7 @@ Cross-referenced against every acceptance criterion in `plan/ready/brief.md`.
2828

2929
**File:** `HdrHistogram.UnitTests/HdrHistogram.UnitTests.csproj`
3030

31-
- [ ] **2.1** Change `<TargetFrameworks>` on line 4 from `net8.0` to
31+
- [x] **2.1** Change `<TargetFrameworks>` on line 4 from `net8.0` to
3232
`net10.0;net9.0;net8.0`.
3333
Verify: the element reads exactly `<TargetFrameworks>net10.0;net9.0;net8.0</TargetFrameworks>`.
3434

@@ -41,7 +41,7 @@ Cross-referenced against every acceptance criterion in `plan/ready/brief.md`.
4141

4242
**File:** `HdrHistogram.Examples/HdrHistogram.Examples.csproj`
4343

44-
- [ ] **3.1** Change `<TargetFrameworks>` on line 5 from `net8.0` to `net10.0`.
44+
- [x] **3.1** Change `<TargetFrameworks>` on line 5 from `net8.0` to `net10.0`.
4545
Verify: the element reads exactly `<TargetFrameworks>net10.0</TargetFrameworks>`.
4646

4747
> Covers acceptance criterion: **AC-3**.
@@ -52,18 +52,18 @@ Cross-referenced against every acceptance criterion in `plan/ready/brief.md`.
5252

5353
**File:** `HdrHistogram.Benchmarking/HdrHistogram.Benchmarking.csproj`
5454

55-
- [ ] **4.1** Change `<TargetFrameworks>` on line 5 from `net8.0` to
55+
- [x] **4.1** Change `<TargetFrameworks>` on line 5 from `net8.0` to
5656
`net10.0;net9.0;net8.0`.
5757
Verify: the element reads exactly `<TargetFrameworks>net10.0;net9.0;net8.0</TargetFrameworks>`.
5858

59-
- [ ] **4.2** Attempt a Release build of the benchmarking project:
59+
- [x] **4.2** Attempt a Release build of the benchmarking project:
6060
```bash
6161
dotnet build HdrHistogram.Benchmarking/HdrHistogram.Benchmarking.csproj -c Release
6262
```
6363
If the build succeeds, this task is done — BenchmarkDotNet 0.13.12 is compatible.
6464
If the build fails due to BenchmarkDotNet incompatibility with net10.0, proceed to task 4.3.
6565

66-
- [ ] **4.3** *(Conditional — only if task 4.2 fails)* Upgrade both
66+
- [x] **4.3** *(Conditional — only if task 4.2 fails)* Upgrade both
6767
`BenchmarkDotNet` and `BenchmarkDotNet.Diagnostics.Windows` to the latest
6868
stable version.
6969
Verify: `dotnet build HdrHistogram.Benchmarking/HdrHistogram.Benchmarking.csproj -c Release`
@@ -78,7 +78,7 @@ Cross-referenced against every acceptance criterion in `plan/ready/brief.md`.
7878

7979
**File:** `.github/workflows/ci.yml`
8080

81-
- [ ] **5.1** Replace the `setup-dotnet` step (lines 15–19) with a single step using
81+
- [x] **5.1** Replace the `setup-dotnet` step (lines 15–19) with a single step using
8282
a multi-line `dotnet-version` scalar:
8383
```yaml
8484
- uses: actions/setup-dotnet@v4
@@ -102,12 +102,12 @@ Cross-referenced against every acceptance criterion in `plan/ready/brief.md`.
102102

103103
**File:** `.devcontainer/Dockerfile`
104104

105-
- [ ] **6.1** Change the `FROM` line (line 5) from
105+
- [x] **6.1** Change the `FROM` line (line 5) from
106106
`mcr.microsoft.com/dotnet/sdk:9.0-bookworm-slim` to
107107
`mcr.microsoft.com/dotnet/sdk:10.0-bookworm-slim`.
108108
Verify: the first `FROM` line references `sdk:10.0-bookworm-slim`.
109109

110-
- [ ] **6.2** Replace the single 8.0 runtime install (lines 6–8) with explicit
110+
- [x] **6.2** Replace the single 8.0 runtime install (lines 6–8) with explicit
111111
installs of both the 8.0 and 9.0 runtimes via `dotnet-install.sh`, keeping both
112112
in the same `RUN` layer to avoid creating extra image layers:
113113
```dockerfile
@@ -129,7 +129,7 @@ Cross-referenced against every acceptance criterion in `plan/ready/brief.md`.
129129

130130
**File:** `spec/tech-standards/build-system.md`, approx. lines 24–26
131131

132-
- [ ] **7.1** In the "Main Library (HdrHistogram.csproj)" section, update the XML
132+
- [x] **7.1** In the "Main Library (HdrHistogram.csproj)" section, update the XML
133133
code block from:
134134
```xml
135135
<TargetFrameworks>net8.0;netstandard2.0</TargetFrameworks>
@@ -148,7 +148,7 @@ Cross-referenced against every acceptance criterion in `plan/ready/brief.md`.
148148

149149
**File:** `spec/tech-standards/build-system.md`, approx. lines 35–37
150150

151-
- [ ] **8.1** In the "Test Project" section, update the XML code block from:
151+
- [x] **8.1** In the "Test Project" section, update the XML code block from:
152152
```xml
153153
<TargetFramework>net8.0</TargetFramework>
154154
```
@@ -168,7 +168,7 @@ Cross-referenced against every acceptance criterion in `plan/ready/brief.md`.
168168

169169
**File:** `spec/tech-standards/build-system.md`, approx. lines 42–45
170170

171-
- [ ] **9.1** In the "Benchmarking Project" section, update the description text
171+
- [x] **9.1** In the "Benchmarking Project" section, update the description text
172172
"Targets the current LTS runtime only (developer tool, not a shipped library):" to
173173
reflect multi-targeting, and update the XML code block from:
174174
```xml
@@ -188,7 +188,7 @@ Cross-referenced against every acceptance criterion in `plan/ready/brief.md`.
188188

189189
**File:** `spec/tech-standards/build-system.md`, approx. lines 226–228
190190

191-
- [ ] **10.1** In the "Benchmark Configuration" section, replace the single target entry:
191+
- [x] **10.1** In the "Benchmark Configuration" section, replace the single target entry:
192192
```
193193
- `net8.0` (current LTS runtime)
194194
```
@@ -200,7 +200,7 @@ Cross-referenced against every acceptance criterion in `plan/ready/brief.md`.
200200
```
201201
Verify: the bullet list covers all three TFMs.
202202
203-
- [ ] **10.2** *(Conditional — only if task 4.3 was executed)* Update the BenchmarkDotNet
203+
- [x] **10.2** *(Conditional — only if task 4.3 was executed)* Update the BenchmarkDotNet
204204
version numbers in the "Benchmarking Project" dependencies code block
205205
(approx. lines 66–67) to match the upgraded version.
206206
Verify: the version string in the spec matches the version in
@@ -214,7 +214,7 @@ Cross-referenced against every acceptance criterion in `plan/ready/brief.md`.
214214

215215
**File:** `spec/tech-standards/build-system.md`, approx. line 254
216216

217-
- [ ] **11.1** In the "Prerequisites" section, change:
217+
- [x] **11.1** In the "Prerequisites" section, change:
218218
```
219219
- .NET 8.0 SDK (or later)
220220
```
@@ -233,23 +233,23 @@ Cross-referenced against every acceptance criterion in `plan/ready/brief.md`.
233233
These tasks confirm all acceptance criteria related to running the toolchain.
234234
They must be performed **after** all implementation tasks above are complete.
235235

236-
- [ ] **12.1** Run a Release build of the main library and confirm it succeeds for
236+
- [x] **12.1** Run a Release build of the main library and confirm it succeeds for
237237
all four target frameworks:
238238
```bash
239239
dotnet build HdrHistogram/HdrHistogram.csproj -c Release
240240
```
241241
Verify: build output shows `net10.0`, `net9.0`, `net8.0`, and `netstandard2.0`
242242
all built without errors.
243243

244-
- [ ] **12.2** Run the full test suite and confirm all tests pass on all three
244+
- [x] **12.2** Run the full test suite and confirm all tests pass on all three
245245
modern runtimes:
246246
```bash
247247
dotnet test HdrHistogram.UnitTests/HdrHistogram.UnitTests.csproj -c Release
248248
```
249249
Verify: test results show three separate `net10.0`, `net9.0`, and `net8.0` runs,
250250
all green with zero failures.
251251

252-
- [ ] **12.3** Pack the library and confirm all four TFM folders are present in
252+
- [x] **12.3** Pack the library and confirm all four TFM folders are present in
253253
the produced `.nupkg`:
254254
```bash
255255
dotnet pack HdrHistogram/HdrHistogram.csproj -c Release --no-build
@@ -266,6 +266,27 @@ They must be performed **after** all implementation tasks above are complete.
266266

267267
---
268268

269+
---
270+
271+
## 13 — Code review fixes
272+
273+
Issues found during post-implementation review and resolved.
274+
275+
- [x] **13.1** BenchmarkDotNet version regression: the branch base had `0.13.12` but
276+
`upstream/main` already upgraded to `0.15.8`.
277+
Updated `HdrHistogram.Benchmarking/HdrHistogram.Benchmarking.csproj` to `0.15.8`.
278+
Verified: `dotnet build -c Release -p:TargetFrameworks=net9.0` succeeds.
279+
280+
- [x] **13.2** `spec/tech-standards/build-system.md` BenchmarkDotNet version block
281+
also reflected the old `0.13.12`.
282+
Updated both package references in the spec to `0.15.8` to match the csproj.
283+
284+
- [x] **13.3** `spec/tech-standards/build-system.md` TFM description table in the
285+
"Main Library" section was missing rows for `net9.0` and `net10.0`.
286+
Added `net10.0` (current LTS target), `net9.0` (STS target), and `net8.0` (LTS target) rows.
287+
288+
---
289+
269290
## Acceptance Criterion Cross-Reference
270291

271292
| Criterion | Tasks |

spec/tech-standards/build-system.md

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,26 +22,28 @@ HdrHistogram.sln
2222
### Main Library (HdrHistogram.csproj)
2323

2424
```xml
25-
<TargetFrameworks>net8.0;netstandard2.0</TargetFrameworks>
25+
<TargetFrameworks>net10.0;net9.0;net8.0;netstandard2.0</TargetFrameworks>
2626
```
2727

2828
| Target | Description |
2929
|--------|-------------|
30-
| `net8.0` | Modern .NET (primary target) |
30+
| `net10.0` | Modern .NET (current LTS target) |
31+
| `net9.0` | Modern .NET (STS target) |
32+
| `net8.0` | Modern .NET (LTS target) |
3133
| `netstandard2.0` | Broad compatibility (.NET Framework 4.6.1+, .NET Core 2.0+) |
3234

3335
### Test Project
3436

3537
```xml
36-
<TargetFramework>net8.0</TargetFramework>
38+
<TargetFrameworks>net10.0;net9.0;net8.0</TargetFrameworks>
3739
```
3840

3941
### Benchmarking Project
4042

41-
Targets the current LTS runtime only (developer tool, not a shipped library):
43+
Targets all supported modern runtimes (developer tool, not a shipped library):
4244

4345
```xml
44-
<TargetFrameworks>net8.0</TargetFrameworks>
46+
<TargetFrameworks>net10.0;net9.0;net8.0</TargetFrameworks>
4547
```
4648

4749
## Dependencies
@@ -224,7 +226,9 @@ dotnet run -c Release -- -f *Recording*
224226
### Benchmark Configuration
225227

226228
BenchmarkDotNet is used with these targets:
227-
- `net8.0` (current LTS runtime)
229+
- `net10.0` (current LTS runtime)
230+
- `net9.0` (STS runtime)
231+
- `net8.0` (LTS runtime)
228232
- Windows diagnostics support
229233
- Memory allocation tracking
230234

@@ -251,7 +255,7 @@ HdrHistogram/bin/{Configuration}/{TargetFramework}/
251255

252256
### Prerequisites
253257

254-
- .NET 8.0 SDK (or later)
258+
- .NET 10.0 SDK (or later)
255259
- Visual Studio 2022 (optional, for IDE development)
256260
- Git
257261

0 commit comments

Comments
 (0)