Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 8 additions & 6 deletions .github/workflows/benchmarks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,21 +41,22 @@ jobs:
8.x
9.x
10.x
11.x
- run: dotnet restore --locked-mode
- name: Build benchmark harness
run: dotnet build benchmarks/OpenDisNet.Benchmarks/OpenDisNet.Benchmarks.csproj --configuration Release --framework net10.0 --no-restore --no-incremental
run: dotnet build benchmarks/OpenDisNet.Benchmarks/OpenDisNet.Benchmarks.csproj --configuration Release --framework net11.0 --no-restore --no-incremental
- name: Exercise every benchmark and runtime once
run: >-
dotnet run
--project benchmarks/OpenDisNet.Benchmarks/OpenDisNet.Benchmarks.csproj
--configuration Release
--framework net10.0
--framework net11.0
--no-build
--no-restore
--
--filter '*'
--job Dry
--runtimes net8.0 net9.0 net10.0
--runtimes net8.0 net9.0 net10.0 net11.0
--join
--exporters JSON
--artifacts artifacts/benchmarks
Expand Down Expand Up @@ -90,20 +91,21 @@ jobs:
8.x
9.x
10.x
11.x
- run: dotnet restore --locked-mode
- name: Build benchmark harness
run: dotnet build benchmarks/OpenDisNet.Benchmarks/OpenDisNet.Benchmarks.csproj --configuration Release --framework net10.0 --no-restore --no-incremental
run: dotnet build benchmarks/OpenDisNet.Benchmarks/OpenDisNet.Benchmarks.csproj --configuration Release --framework net11.0 --no-restore --no-incremental
- name: Measure all supported runtimes
run: >-
dotnet run
--project benchmarks/OpenDisNet.Benchmarks/OpenDisNet.Benchmarks.csproj
--configuration Release
--framework net10.0
--framework net11.0
--no-build
--no-restore
--
--filter '*'
--runtimes net8.0 net9.0 net10.0
--runtimes net8.0 net9.0 net10.0 net11.0
--join
--exporters JSON
--artifacts artifacts/benchmarks
Expand Down
7 changes: 6 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ jobs:
8.x
9.x
10.x
11.x
- name: Derive CI package version
shell: pwsh
run: |
Expand All @@ -44,6 +45,8 @@ jobs:
run: dotnet run --project tests/OpenDisNet.PackageSmoke/OpenDisNet.PackageSmoke.csproj --configuration Release --framework net9.0 --no-restore -p:OpenDisNetPackageVersion=${{ env.PACKAGE_VERSION }}
- name: Run packed-package consumer on .NET 10
run: dotnet run --project tests/OpenDisNet.PackageSmoke/OpenDisNet.PackageSmoke.csproj --configuration Release --framework net10.0 --no-restore -p:OpenDisNetPackageVersion=${{ env.PACKAGE_VERSION }}
- name: Run packed-package consumer on .NET 11
run: dotnet run --project tests/OpenDisNet.PackageSmoke/OpenDisNet.PackageSmoke.csproj --configuration Release --framework net11.0 --no-restore -p:OpenDisNetPackageVersion=${{ env.PACKAGE_VERSION }}
- uses: actions/upload-artifact@v7
if: matrix.os == 'ubuntu-latest'
with:
Expand All @@ -56,6 +59,8 @@ jobs:
- uses: actions/checkout@v7
- uses: actions/setup-dotnet@v6
with:
dotnet-version: 10.x
dotnet-version: |
10.x
11.x
- run: dotnet restore --locked-mode
- run: dotnet format --verify-no-changes --no-restore
4 changes: 3 additions & 1 deletion .github/workflows/fuzz.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@ jobs:
- uses: actions/checkout@v7
- uses: actions/setup-dotnet@v6
with:
dotnet-version: 10.x
dotnet-version: |
10.x
11.x
- run: dotnet restore --locked-mode
- name: Build fuzz target
run: dotnet build tests/OpenDisNet.Fuzz/OpenDisNet.Fuzz.csproj --configuration Release --no-restore --no-incremental
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ jobs:
8.x
9.x
10.x
11.x
- name: Verify tag commit is on main
shell: bash
run: git merge-base --is-ancestor "$GITHUB_SHA" origin/main
Expand All @@ -44,6 +45,8 @@ jobs:
run: dotnet run --project tests/OpenDisNet.PackageSmoke/OpenDisNet.PackageSmoke.csproj --configuration Release --framework net9.0 --no-restore -p:OpenDisNetPackageVersion=${{ env.PACKAGE_VERSION }}
- name: Run packed-package consumer on .NET 10
run: dotnet run --project tests/OpenDisNet.PackageSmoke/OpenDisNet.PackageSmoke.csproj --configuration Release --framework net10.0 --no-restore -p:OpenDisNetPackageVersion=${{ env.PACKAGE_VERSION }}
- name: Run packed-package consumer on .NET 11
run: dotnet run --project tests/OpenDisNet.PackageSmoke/OpenDisNet.PackageSmoke.csproj --configuration Release --framework net11.0 --no-restore -p:OpenDisNetPackageVersion=${{ env.PACKAGE_VERSION }}
- name: Create package checksums
shell: bash
run: |
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@ obj/
TestResults/
artifacts/
BenchmarkDotNet.Artifacts/
.bdn/
*.user
*.suo
16 changes: 10 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -173,8 +173,10 @@ dotnet test --configuration Release
dotnet pack src/OpenDisNet/OpenDisNet.csproj --configuration Release
```

The library targets .NET 8, .NET 9, and .NET 10 and uses nullable annotations,
deterministic builds, and symbol packages.
Building the solution requires the .NET 11 SDK.

The library targets .NET 8, .NET 9, .NET 10, and .NET 11 and uses nullable
annotations, deterministic builds, and symbol packages.

The implementation is reviewable in ordinary source files: PDU classes are
grouped under [`src/OpenDisNet/Pdus/Families`](src/OpenDisNet/Pdus/Families),
Expand All @@ -190,14 +192,16 @@ caller-owned serialization across Signal payload sizes and representative fixed,
variable, vendor-defined, and malformed PDUs. Run it on any supported runtime:

```shell
dotnet run --project benchmarks/OpenDisNet.Benchmarks -c Release -f net10.0
dotnet run --project benchmarks/OpenDisNet.Benchmarks -c Release -f net11.0
```

Replace `net10.0` with `net8.0` or `net9.0` for runtime comparisons. Benchmark
artifacts are written beneath `BenchmarkDotNet.Artifacts` and are not committed.
Replace `net11.0` with `net8.0`, `net9.0`, or `net10.0` for runtime comparisons.
Benchmark artifacts are written beneath `BenchmarkDotNet.Artifacts` and are not
committed. The harness uses BenchmarkDotNet 0.16 preview for .NET 11 runtime
support; this development dependency is not included in the library package.

The [benchmark workflow](https://github.com/RejectKid/OpenDisNet/actions/workflows/benchmarks.yml)
runs a fast BenchmarkDotNet `Dry` smoke test across .NET 8, 9, and 10 for
runs a fast BenchmarkDotNet `Dry` smoke test across .NET 8, 9, 10, and 11 for
relevant pull requests. Dry-mode timings only validate the harness; they are not
performance measurements. Full cross-runtime measurements run after relevant
changes land on `main`, every Monday, and on manual dispatch. The workflow adds
Expand Down
5 changes: 3 additions & 2 deletions benchmarks/OpenDisNet.Benchmarks/OpenDisNet.Benchmarks.csproj
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>net8.0;net9.0;net10.0</TargetFrameworks>
<TargetFrameworks>net8.0;net9.0;net10.0;net11.0</TargetFrameworks>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="BenchmarkDotNet" Version="0.15.8" />
<!-- .NET 11 runtime support requires the 0.16 preview until a stable release ships. -->
<PackageReference Include="BenchmarkDotNet" Version="0.16.0-preview.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\OpenDisNet\OpenDisNet.csproj" />
Expand Down
Loading
Loading