Releases: CenterEdge/Yardarm
Releases · CenterEdge/Yardarm
0.6.0-beta0001
Major New Features
- A focus on improved compilation performance
- Improved parallelization on multi-core machines
- Uses ReadyToRun for less JIT impact (Docker and SDK variants)
- When using
Microsoft.Extensions.Http
andAddAllApis()
orAddAllOtherApis()
there won't be name collisions with other Yardarm SDKs. There are also more overloads for manual registration that accept aname
parameter. - Consumers can more easily register a custom JSON serializer configuration using
TypeSerializerRegistry.CreateBasicRegistry
to build a registry with basic serializers in place - When using
--nupkg
the new option--embed-symbols
will embed the symbols in the primarynupkg
file. This is useful when uploading to registries that don't supportsnupkg
files, such as GitHub Packages. - Docker image now includes an
arm64
image
Breaking Changes
- Any SDK consumer that relies on
AddAllApis()
orAddAllOtherApis()
registering the HTTP client with a specific name will no longer discover the HTTP client. The name used for registration has changed from the basic type name to the full type name, including namespace. For example,httpClientFactory.CreateClient("ITranscations")
must becomehttpClientFractory.CreateClient("MySdk.Api.ITransactions")
.
What's Changed
- Improve perf of formatting for embedding by @brantburnett in #250
- Run OpenApiSyntaxNodeEnrichers in parallel by @brantburnett in #251
- Parallelize collection of embedded text by @brantburnett in #252
- Enable Server GC by @brantburnett in #253
- Load and parse embedded resources more efficiently by @brantburnett in #254
- Update System.Text.Json to 8.0.5 by @brantburnett in #255
- Upgrade various packages and apply some modernizations by @brantburnett in #257
- Improve DI registration of named http clients by @brantburnett in #258
- Make registering with custom JSON options easier by @brantburnett in #259
- Allow embedding symbols in the nupkg file by @brantburnett in #260
- Use ReadyToRun to improve performance by @brantburnett in #261
- Add additional timing logs by @brantburnett in #262
- Use central package version control by @brantburnett in #263
- Use artifacts output path for build output by @brantburnett in #264
Full Changelog: release/0.5.1...release/0.6.0-beta0001
0.5.2
What's Changed
- Update System.Text.Json to 8.0.5 by @brantburnett in #256
Full Changelog: release/0.5.1...release/0.5.2
0.5.1
What's Changed
- Register JsonNode on JsonSerializerContext, not JsonObject by @brantburnett in #249
Full Changelog: release/0.5.0...release/0.5.1
0.5.0
Major New Features
- When using
Yardarm.SystemTextJson
serialization and deserialization now uses aJsonSerializerContext
by default for faster startup and serialization - When using compatible extensions, including
Yardarm.SystemTextJson
andYardarm.MicrosoftExtensionsHttp
, the generated SDK is trimming and NativeAOT compatible. This should greatly improve compatibility with Blazor WebAssembly. - Binary content types on responses are now exposed as a
Stream
fromGetBodyAsync
for easy reading without drilling intoMessage.Content
. - Large response bodies, such as binary
Stream
responses, may now be streamed by settingEnableResponseStreaming
totrue
on the request. Note: Be sure to dispose of the response after reading the stream. - Simple
object
schemas that only haveadditionalProperties
now generate asDictionary<string, T>
models rather than a complex object with anAdditionalProperties
property. - Support for shared parameters defined on the path rather than the operation
- Route parameters not explicitly defined in the
parameters
collection havestring
properties generated automatically - Operations without
operationId
defined are now skipped by default rather than causing an error - Extensions may apply a custom
IOperationNameProvider
to provide custom naming rules for operations - Support for API key authentication on query strings
- Support for
components/requestBodies
shared request body definitions
Breaking changes since 0.4
- The
LiteralSerializer
, which is used fortext/plain
content, path parameters, query string parameters, and header parameters no longer usesTypeDescriptor.GetConverter
. This allows compatibility with trimming and NativeAOT, but at the expense of compatibility with any type. It now explicitly handlesDateTime
,DateTimeOffset
,TimeSpan
,Guid
,Uri
,String
, all common numeric types, and enumerations for deserialization. For serialization, it will also handle any type that implementsIFormattable
. Other types will now fail. - Schemas are no longer generated using the
dynamic
keyword, all such cases now useobject
. ITypeSerializer
now supports aCancellationToken
during deserialization. This may cause extensions to fail if they create customITypeSerializer
implementations for legacy runtimes that don't support DIMs. A DIM is used to increase compatibility on .NET 6 and later.- The generated GetBodyAsync method on operation responses now accepts an optional
CancellationToken
parameter. This is a binary-level, though not source-level, breaking change in the generated SDKs when upgrading from 0.4 to 0.5. - Consumers of generated SDKs may experience a source and binary breaking change upon upgrade if there are any schemas with only
additionalProperties
that are now represented as plain dictionaries.
What's Changed
- Update GHA versions by @brantburnett in #238
- Allow undefined route parameters by @brantburnett in #240
- Generate classes for common request bodies by @brantburnett in #241
- Skip operations without ids by @brantburnett in #242
- Generate correct code for parameter components by @brantburnett in #243
- Update to System.Text.Json 8.0.4 by @brantburnett in #244
- Add support for query string based API keys by @brantburnett in #245
- Generate properties for parameters included on path items by @brantburnett in #246
Full Changelog: release/0.5.0-beta0002...release/0.5.0
release/0.5.0-beta0003
Notable changes since 0.5.0-beta0001
- Support for shared parameters defined on the path rather than the operation
- Route parameters not explicitly defined in the
parameters
collection havestring
properties generated automatically - Operations without
operationId
defined are now skipped by default rather than causing an error - Extensions may apply a custom
IOperationNameProvider
to provide custom naming rules for operations - Support for API key authentication on query strings
- Support for
components/requestBodies
shared request body definitions
What's Changed
- Update GHA versions by @brantburnett in #238
- Allow undefined route parameters by @brantburnett in #240
- Generate classes for common request bodies by @brantburnett in #241
- Skip operations without ids by @brantburnett in #242
- Generate correct code for parameter components by @brantburnett in #243
- Update to System.Text.Json 8.0.4 by @brantburnett in #244
- Add support for query string based API keys by @brantburnett in #245
- Generate properties for parameters included on path items by @brantburnett in #246
Full Changelog: release/0.5.0-beta0002...release/0.5.0-beta0003
release/0.5.0-beta0002
What's Changed
- Correct capitalization on STJ enum values by @brantburnett in #237
Full Changelog: release/0.5.0-beta0001...release/0.5.0-beta0002
release/0.5.0-beta0001
Major New Features
- When using
Yardarm.SystemTextJson
serialization and deserialization now uses aJsonSerializerContext
by default for faster startup and serialization - When using compatible extensions, including
Yardarm.SystemTextJson
andYardarm.MicrosoftExtensionsHttp
, the generated SDK is trimming and NativeAOT compatible. This should greatly improve compatibility with Blazor WebAssembly. - Binary content types on responses are now exposed as a
Stream
fromGetBodyAsync
for easy reading without drilling intoMessage.Content
. - Large response bodies, such as binary
Stream
responses, may now be streamed by settingEnableResponseStreaming
totrue
on the request. Note: Be sure to dispose of the response after reading the stream. - Simple
object
schemas that only haveadditionalProperties
now generate asDictionary<string, T>
models rather than a complex object with anAdditionalProperties
property.
Breaking changes since 0.4
- The
LiteralSerializer
, which is used fortext/plain
content, path parameters, query string parameters, and header parameters no longer usesTypeDescriptor.GetConverter
. This allows compatibility with trimming and NativeAOT, but at the expense of compatibility with any type. It now explicitly handlesDateTime
,DateTimeOffset
,TimeSpan
,Guid
,Uri
,String
, all common numeric types, and enumerations for deserialization. For serialization, it will also handle any type that implementsIFormattable
. Other types will now fail. - Schemas are no longer generated using the
dynamic
keyword, all such cases now useobject
. ITypeSerializer
now supports aCancellationToken
during deserialization. This may cause extensions to fail if they create customITypeSerializer
implementations for legacy runtimes that don't support DIMs. A DIM is used to increase compatibility on .NET 6 and later.- The generated GetBodyAsync method on operation responses now accepts an optional
CancellationToken
parameter. This is a binary-level, though not source-level, breaking change in the generated SDKs when upgrading from 0.4 to 0.5. - Consumers of generated SDKs may experience a source and binary breaking change upon upgrade if there are any schemas with only
additionalProperties
that are now represented as plain dictionaries.
What's Changed
- Upgrade to use System.Text.Json 7.0 by @brantburnett in #159
- Add
IOperationResponse<TBody>
to responses with a body (#164) by @brantburnett in #165 - Suppress CS1702 warning by @brantburnett in #167
- Allow named HTTP clients for greater customization by @brantburnett in #169
- Update System.Text.Json to 7.0.2 by @brantburnett in #170
- Handle more polymorphism cases for System.Text.Json by @brantburnett in #172
- Don't apply STJ attributes to non-JSON schemas by @brantburnett in #174
- Upgrade to Roslyn 4.5 by @brantburnett in #175
- Drop usage of TypeDescriptor.GetConverter from PlainTextSerializer by @brantburnett in #176
- Remove TypeDescriptor.GetConverter from LiteralSerializer by @brantburnett in #177
- Avoid reflection serializing lists in path segments by @brantburnett in #178
- Add IsTrimmable annotation by @brantburnett in #179
- Load source generators from framework references by @brantburnett in #180
- Apply trimming attrs to all target frameworks by @brantburnett in #181
- Use UTF-8 literals for discriminator property names by @brantburnett in #182
- Use allOf instead of anyOf to detect simple discriminators by @brantburnett in #183
- Drop default usage of dynamic by @brantburnett in #185
- Make STJ converters compatible with trimming by @brantburnett in #186
- Add back missing JsonExtensionData attribute by @brantburnett in #187
- Apply correct TargetRuntime attribute to assemblies by @brantburnett in #188
- Handle non-object additional props for STJ by @brantburnett in #189
- Reduce heap allocs when applying JSON attributes by @brantburnett in #190
- Make STJ discriminators trim and AOT compatible by @brantburnett in #191
- Put back STJ support for oneOf serialization with no discriminator by @brantburnett in #194
- Normalize BaseIntermediateOutputPath on Linux by @brantburnett in #196
- Apply the requested mediaType to STJ request headers (#201) by @brantburnett in #202
- Add support for "partial-time" string formats by @brantburnett in #206
- Upgrade to System.Text.Json 8 RC1 by @brantburnett in #207
- Turn on trim and AOT analysis by @brantburnett in #208
- Add support for response body streaming by @brantburnett in #209
- Use ThrowHelper.ThrowIfNull to validate args in generated code by @brantburnett in #210
- Switch all argument validation to ArgumentNullException.ThrowIfNull by @brantburnett in #211
- Resolve various build warnings by @brantburnett in #212
- Provide stream bodies for binary responses by @brantburnett in #215
- Upgrade to System.Text.Json 8 RC2 by @brantburnett in #216
- Update C# and NuGet versions to latest by @brantburnett in #217
- Use JsonSerializerContext to support STJ trimming by @brantburnett in #218
- Treat "date-span" string formats as System.TimeSpan by @brantburnett in #219
- Add support for cancellation during deserialization by @brantburnett in #220
- Upgrade to release bits of System.Text.Json 8.0 by @brantburnett in #223
- Use .NET SDK 8 for builds by @brantburnett in #225
- Fixup package source mapping by @brantburnett in #224
- Upgrade generator to .NET 8 by @brantburnett in #226
- Avoid NRT warnings if consumer upgrades to Microsoft.Extensions.Http 7.x by @brantburnett in #227
- Pass NoWarn through SDK builds to Yardarm by @brantburnett in #228
- Don't create duplicate JsonSerializable attributes by @brantburnett in #232
- Optimize schema type info for some common types by @brantburnett in #233
- Upgrade to System.Text.Json 8.0.3 by @brantburnett in #234
- Treat simple additional properties objects as dictionaries by @brantburnett in #235
- Allow deserializing numbers from strings in STJ by @brantburnett in #236
Full Changelog: release/0.4.1...release/0.5.0-beta0001
release/0.4.1
What's Changed
- Avoid NRT warnings if consumer upgrades to Microsoft.Extensions.Http 7.x by @brantburnett in #230
Full Changelog: release/0.4.0...release/0.4.1
release/0.3.8
What's Changed
- Avoid NRT warnings if consumer upgrades to Microsoft.Extensions.Http 7.x by @brantburnett in #229
Full Changelog: release/0.3.7...release/0.3.8
release/0.4.0
What's Changed
- Add support for "partial-time" string formats by @brantburnett in #205
Full Changelog: release/0.3.7...release/0.4.0