diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000..16abc6aef --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,11 @@ +{ + "name": "OpenAPI.NET", + "image": "mcr.microsoft.com/devcontainers/dotnet:10.0", + "customizations": { + "vscode": { + "extensions": [ + "ms-dotnettools.csdevkit" + ] + } + } +} diff --git a/.github/dependabot.yml b/.github/dependabot.yml index c3da60bcb..49c969ced 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -28,3 +28,8 @@ updates: update-types: - version-update:semver-major - version-update:semver-minor + - package-ecosystem: "devcontainers" + directory: "/" + open-pull-requests-limit: 10 + schedule: + interval: "daily" diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 21f60560a..e6c39adb9 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "2.10.0" + ".": "2.11.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index ef8c896c5..37d5a3f3b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +## [2.11.0](https://github.com/microsoft/OpenAPI.NET/compare/v2.10.0...v2.11.0) (2026-07-15) + + +### Features + +* adds support for anchor and id external resolution ([557bd6a](https://github.com/microsoft/OpenAPI.NET/commit/557bd6a8ca81e80f9f305aca3396e0e2fb45c09d)) +* adds support for anchor and id external resolution ([4138e47](https://github.com/microsoft/OpenAPI.NET/commit/4138e478cc6e8ceb9d371ac3a4848887c80ec16f)) +* **schema:** resolve bare $dynamicRef via $dynamicAnchor index ([#2913](https://github.com/microsoft/OpenAPI.NET/issues/2913)) ([baf8428](https://github.com/microsoft/OpenAPI.NET/commit/baf8428f488b0f1de8cb91b29c4f073f808f2ffe)) +* **schema:** resolve bare $dynamicRef via $dynamicAnchor index ([#2913](https://github.com/microsoft/OpenAPI.NET/issues/2913)) ([a139f83](https://github.com/microsoft/OpenAPI.NET/commit/a139f83981b251315b55ad9a4d64756a5dead335)) +* support relative URI resolution in $dynamicRef ([#2928](https://github.com/microsoft/OpenAPI.NET/issues/2928)) ([#2945](https://github.com/microsoft/OpenAPI.NET/issues/2945)) ([6091f5a](https://github.com/microsoft/OpenAPI.NET/commit/6091f5a799711f822f864ed67995cd518fd30e2e)) +* support relative URI resolution in $dynamicRef ([#2928](https://github.com/microsoft/OpenAPI.NET/issues/2928)) ([#2945](https://github.com/microsoft/OpenAPI.NET/issues/2945)) ([a8688dc](https://github.com/microsoft/OpenAPI.NET/commit/a8688dc59ab69060e5413e5ac2f15430bd96e40f)) + + +### Bug Fixes + +* adds explicit error message for invalid json pointers ([#2955](https://github.com/microsoft/OpenAPI.NET/issues/2955)) ([a304e56](https://github.com/microsoft/OpenAPI.NET/commit/a304e5646f4ccec388892238ce475945eb2af1b8)) +* differentiate unset value from null value in OpenApiSchema.Const ([#2936](https://github.com/microsoft/OpenAPI.NET/issues/2936)) ([a8787af](https://github.com/microsoft/OpenAPI.NET/commit/a8787af57769821ee963be773be0b984a5078402)) +* differentiate unset value from null value in OpenApiSchema.Const ([#2936](https://github.com/microsoft/OpenAPI.NET/issues/2936)) ([e08570f](https://github.com/microsoft/OpenAPI.NET/commit/e08570f99174b22e33775920212e478aac14df7c)) +* handle nullability more accurately during serialization for 3.0/2.0 ([#2933](https://github.com/microsoft/OpenAPI.NET/issues/2933)) ([bc11356](https://github.com/microsoft/OpenAPI.NET/commit/bc113563d174e6a6b1220b7e58f3b1c12e5a3f6f)) +* handle nullability more accurately during serialization for 3.0/2.0 ([#2933](https://github.com/microsoft/OpenAPI.NET/issues/2933)) ([310b6e2](https://github.com/microsoft/OpenAPI.NET/commit/310b6e29b3a17615efd7a38bbf5f73427cdec6e8)) + ## [2.10.0](https://github.com/microsoft/OpenAPI.NET/compare/v2.9.0...v2.10.0) (2026-07-03) diff --git a/Directory.Build.props b/Directory.Build.props index d8aa99b81..2986e23aa 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -12,7 +12,7 @@ https://github.com/Microsoft/OpenAPI.NET © Microsoft Corporation. All rights reserved. OpenAPI .NET - 2.10.0 + 2.11.0 diff --git a/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report-github.md b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report-github.md index c6bade521..9ed6e8455 100644 --- a/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report-github.md +++ b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report-github.md @@ -10,11 +10,11 @@ Job=ShortRun IterationCount=3 LaunchCount=1 WarmupCount=3 ``` -| Method | Mean | Error | StdDev | Gen0 | Gen1 | Gen2 | Allocated | -|------------- |--------------:|---------------:|--------------:|-----------:|-----------:|----------:|-------------:| -| PetStoreYaml | 281.26 μs | 87.951 μs | 4.821 μs | 74.2188 | 15.6250 | - | 313.05 KB | -| PetStoreJson | 99.37 μs | 7.974 μs | 0.437 μs | 42.4805 | 8.3008 | - | 175.2 KB | -| GHESYaml | 558,007.40 μs | 245,240.510 μs | 13,442.460 μs | 45000.0000 | 19000.0000 | 3000.0000 | 254573.63 KB | -| GHESJson | 263,444.90 μs | 586,112.802 μs | 32,126.821 μs | 18000.0000 | 9000.0000 | 2000.0000 | 111745.13 KB | -| GHESNextYaml | 785,094.03 μs | 214,946.431 μs | 11,781.939 μs | 80000.0000 | 20000.0000 | 3000.0000 | 450674.2 KB | -| GHESNextJson | 461,067.00 μs | 50,227.814 μs | 2,753.156 μs | 53000.0000 | 13000.0000 | 3000.0000 | 312434.25 KB | +| Method | Mean | Error | StdDev | Gen0 | Gen1 | Gen2 | Allocated | +|------------- |-------------:|--------------:|-------------:|-----------:|-----------:|----------:|-------------:| +| PetStoreYaml | 295.0 μs | 11.08 μs | 0.61 μs | 91.7969 | 17.5781 | - | 375.25 KB | +| PetStoreJson | 145.9 μs | 27.23 μs | 1.49 μs | 50.7813 | 11.7188 | - | 209.53 KB | +| GHESYaml | 673,002.8 μs | 442,503.72 μs | 24,255.12 μs | 54000.0000 | 20000.0000 | 3000.0000 | 310978.47 KB | +| GHESJson | 289,915.7 μs | 48,490.16 μs | 2,657.91 μs | 23000.0000 | 11000.0000 | 2000.0000 | 140588 KB | +| GHESNextYaml | 831,243.5 μs | 195,694.95 μs | 10,726.70 μs | 91000.0000 | 21000.0000 | 3000.0000 | 513236.66 KB | +| GHESNextJson | 499,654.1 μs | 154,061.41 μs | 8,444.63 μs | 58000.0000 | 14000.0000 | 3000.0000 | 345064.25 KB | diff --git a/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.csv b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.csv index 7d98a61ea..2c67e635b 100644 --- a/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.csv +++ b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.csv @@ -1,7 +1,7 @@ Method,Job,AnalyzeLaunchVariance,EvaluateOverhead,MaxAbsoluteError,MaxRelativeError,MinInvokeCount,MinIterationTime,OutlierMode,Affinity,EnvironmentVariables,Jit,LargeAddressAware,Platform,PowerPlanMode,Runtime,AllowVeryLargeObjects,Concurrent,CpuGroups,Force,HeapAffinitizeMask,HeapCount,NoAffinitize,RetainVm,Server,Arguments,BuildConfiguration,Clock,EngineFactory,NuGetReferences,Toolchain,IsMutator,InvocationCount,IterationCount,IterationTime,LaunchCount,MaxIterationCount,MaxWarmupIterationCount,MemoryRandomization,MinIterationCount,MinWarmupIterationCount,RunStrategy,UnrollFactor,WarmupCount,Mean,Error,StdDev,Gen0,Gen1,Gen2,Allocated -PetStoreYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,111111111111,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,281.26 μs,87.951 μs,4.821 μs,74.2188,15.6250,0.0000,313.05 KB -PetStoreJson,ShortRun,False,Default,Default,Default,Default,Default,Default,111111111111,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,99.37 μs,7.974 μs,0.437 μs,42.4805,8.3008,0.0000,175.2 KB -GHESYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,111111111111,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,"558,007.40 μs","245,240.510 μs","13,442.460 μs",45000.0000,19000.0000,3000.0000,254573.63 KB -GHESJson,ShortRun,False,Default,Default,Default,Default,Default,Default,111111111111,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,"263,444.90 μs","586,112.802 μs","32,126.821 μs",18000.0000,9000.0000,2000.0000,111745.13 KB -GHESNextYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,111111111111,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,"785,094.03 μs","214,946.431 μs","11,781.939 μs",80000.0000,20000.0000,3000.0000,450674.2 KB -GHESNextJson,ShortRun,False,Default,Default,Default,Default,Default,Default,111111111111,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,"461,067.00 μs","50,227.814 μs","2,753.156 μs",53000.0000,13000.0000,3000.0000,312434.25 KB +PetStoreYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,111111111111,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,295.0 μs,11.08 μs,0.61 μs,91.7969,17.5781,0.0000,375.25 KB +PetStoreJson,ShortRun,False,Default,Default,Default,Default,Default,Default,111111111111,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,145.9 μs,27.23 μs,1.49 μs,50.7813,11.7188,0.0000,209.53 KB +GHESYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,111111111111,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,"673,002.8 μs","442,503.72 μs","24,255.12 μs",54000.0000,20000.0000,3000.0000,310978.47 KB +GHESJson,ShortRun,False,Default,Default,Default,Default,Default,Default,111111111111,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,"289,915.7 μs","48,490.16 μs","2,657.91 μs",23000.0000,11000.0000,2000.0000,140588 KB +GHESNextYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,111111111111,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,"831,243.5 μs","195,694.95 μs","10,726.70 μs",91000.0000,21000.0000,3000.0000,513236.66 KB +GHESNextJson,ShortRun,False,Default,Default,Default,Default,Default,Default,111111111111,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,"499,654.1 μs","154,061.41 μs","8,444.63 μs",58000.0000,14000.0000,3000.0000,345064.25 KB diff --git a/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.html b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.html index f09c24ea8..ff088e1c8 100644 --- a/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.html +++ b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.html @@ -2,7 +2,7 @@ -performance.Descriptions-20260626-150505 +performance.Descriptions-20260714-131920