github avro-kotlin/avro4k v2.4.0
v2.4.0 - welcome to confluent-kafka-serializer !

6 days ago

Highlights

Welcome to confluent's schema registry kafka serializer !

A new module has been create to allow (de)serializing kotlin classes and primitive, natively with avro4k, in kafka, using the confluent's schema registry! This enables the use of avro4k in spring and other frameworks using kafka serializers.

As this module is new, don't hesitate to propose enhancements and file an issue in case of a bug!

For more details on how to use it, here is the documentation 📝

Generic decoding

Avro4k now supports decoding to Any type, which means that you can still use avro4k even for unknown data type, or non-concrete classes! So you can also decode to List<Any> and all the possible generic types 🚀

New experimental / internal annotations

There are 2 new annotations indicating whether a class/method should be used cautiously:

  • @InternalAvro4kApi which indicates an internal API that shouldn't be used by you, which has been made public to expose internal apis to other modules. If you need them, please file an issue, and don't be surprised in case of breaking change!
  • @ExperimentalAvro4kApi indicating an API that could evolve, but with notice. They are set as experimental when the API is quite new or there isn't enough feedback. Also, these could be removed in the future on case of a bug induced by them. In any case, they should follow the semantic versioning, so do not expect breaking that quickly!

Deprecations

  • Okio support will be dropped in the next major release, replaced by kotlinx-io
  • Generic data extensions will be dropped in the next major release, replaced by the new kafka serializer

What's Changed

Features

  • feat: Add kafka-serializer by @Chuckame in #295
  • feat: Allow generic de-serializing of Any type by @Chuckame in #337
  • feat: Integrate kotlinx-io and deprecate okio by @Chuckame in #272
  • feat: Allow decoding a generic record to a class with type parameters by @Chuckame in #339
  • feat: Add @InternalAvro4kApi and @ExperimentalAvro4kApi by @Chuckame in #344

Others

  • chore: regenerate list benchmark by @Chuckame in #306
  • chore: Use WeakHashMap instead of buggy WeakIdentityHashMap by @Chuckame in #308
  • deps: Upgrade to kotlin 2.1.21 by @Chuckame in #305
  • Deprecate unwanted public APIs by @Chuckame in #307
  • deps: Upgrade to gradle 8.14.2 by @Chuckame in #309
  • chore: Add missing @ExperimentalSerializationApi on AvroObjectContainer by @Chuckame in #310
  • build(deps): bump io.mockk:mockk from 1.13.6 to 1.14.4 by @dependabot[bot] in #313
  • build(deps): bump com.diffplug.spotless from 7.0.2 to 7.0.4 by @dependabot[bot] in #312
  • chore: Improve documentation of Avro API by @Chuckame in #316
  • doc: Add jvm streams examples by @Chuckame in #321
  • chore: Notice bad 1.12.0 avro version in README by @Chuckame in #326
  • build(deps): bump jacksonVersion from 2.18.2 to 2.19.1 by @dependabot[bot] in #314
  • build(deps): bump org.jetbrains.kotlinx:kotlinx-benchmark-runtime from 0.4.13 to 0.4.14 by @dependabot[bot] in #322
  • build(deps): bump org.jetbrains.kotlinx.binary-compatibility-validator from 0.17.0 to 0.18.0 by @dependabot[bot] in #323
  • build(deps): bump com.squareup.okio:okio from 3.9.0 to 3.15.0 by @dependabot[bot] in #324
  • build(deps): bump org.jetbrains.kotlinx.binary-compatibility-validator from 0.18.0 to 0.18.1 by @dependabot[bot] in #330
  • build(deps): bump com.diffplug.spotless from 7.0.4 to 7.1.0 by @dependabot[bot] in #329
  • build(deps): bump jacksonVersion from 2.19.1 to 2.19.2 by @dependabot[bot] in #334
  • build(deps): bump com.diffplug.spotless from 7.1.0 to 7.2.1 by @dependabot[bot] in #333
  • build(deps): bump io.mockk:mockk from 1.14.4 to 1.14.5 by @dependabot[bot] in #335
  • Chore/improvements by @Chuckame in #327
  • build(deps): bump kotlinxSerialization from 1.8.1 to 1.9.0 by @dependabot[bot] in #315
  • build(deps): bump com.squareup.okio:okio from 3.15.0 to 3.16.0 by @dependabot[bot] in #338
  • deps: Upgrade to kotlin 2.2.10 by @Chuckame in #345
  • deps: Improve github actions by @Chuckame in #346
  • deps: Bump gradle from 8.14.2 to 9.0.0 by @Chuckame in #347
  • docs: Show confluent-kafka-serializer module in main doc by @Chuckame in #348
  • feat(confluent-kafka-serializer): Support java-element-class and java-key-class schema props by @Chuckame in #349
  • fix: Disable gradle cache feature by @Chuckame in #350
  • fix: rollback released artifact signing by @Chuckame in #351
  • build: move core src in its own module, and add conventions plugins by @Chuckame in #352
  • fixing release by @Chuckame in #353
  • build: try fixing release again by @Chuckame in #354
  • build: fix release again by @Chuckame in #355
  • fix: bad release name by @Chuckame in #356
  • build: allow creating draft release by @Chuckame in #357
  • build: fix release again by @Chuckame in #358
  • build: unify version by @Chuckame in #359

Full Changelog: v2.3.0...v2.4.0

Don't miss a new avro4k release

NewReleases is sending notifications on new releases.