Skip to content

3.0.0

Compare
Choose a tag to compare
@dstelljes dstelljes released this 18 Oct 18:31

This major release improves Chr.Avro’s extensibility, drops .NET Framework targets, and fixes some bugs. Most applications should be able to upgrade from 2.x versions without making any additional changes.

Breaking changes

  • Chr.Avro no longer targets .NET Framework 4.5.2. All class libraries exclusively target .NET Standard 2.0. (Framework 4.6.1 and higher are supported, but 4.7.2 and higher are recommended.)

  • Starting with 3.0.0, Chr.Avro packages are strong named. Accordingly, Chr.Avro.Confluent 3.0.0 requires Confluent.Kafka and Confluent.SchemaRegistry ≥ 1.2.0.

  • Chr.Avro.Json now uses System.Text.Json under the hood (#20). As a result, some interfaces have changed. INewtonsoftJsonSchemaReader and INewtonsoftJsonSchemaWriter have been removed, and JsonElement has replaced JToken.

  • The case interfaces used by the JSON reader and writer, the schema builder, the type resolver, and the serde builders have been improved (#26). These changes make it easier to create custom cases and improve the usefulness of exceptions.

  • When serializing to the "decimal" logical type, numbers will no longer be truncated based on precision (#14). This aligns Chr.Avro with the official Java implementation and reduces the complexity of serde operations. Numbers may still be truncated based on scale.

Bug fixes

  • Prior to 3.0.0, DateTimeOffsets created from local times didn’t round trip correctly (#29, h/t @russell-mcdaniel).

  • Schemas built for flag enums now consider the enum’s underlying type (#27).

New features

  • Classes that extend Schema and LogicalType have been unsealed to support applications that require custom schema metadata.

  • Confluent.Kafka extension methods support DependentProducerBuilder (#30, h/t @woodlee and @promontis).