Skip to content

Releases: EsotericSoftware/kryo

kryo-5.6.0

08 Jan 14:48
Compare
Choose a tag to compare

This is a maintenance release coming with bug fixes and performance improvements.

#968 Avoid creating GenericsHierarchy when generics optimization is disabled
#1014 BigDecimal serializer memory and throughput optimizations (thanks @gdela)
#1018 Avoid allocation in BigDecimal serializer with new methods for bytes in Input/Output (thanks @gdela)

Other Tasks:

  • Streamline Maven project structure and add Dependabot (#957)
  • Test CI build against Java 21 (#1017)
  • Upgrade Maven plugin dependencies

The full list of changes can be found here.

Many thanks to all contributors!

Upgrade Notes

For migration from previous major versions please check out the migration guide. We're asking the community to help and contribute this part: please edit the migration wiki page as you encounter any information or issues that might help others.

Compatibility

  • Serialization compatible
    • Standard IO: Yes
    • Unsafe-based IO: Yes
  • Binary compatible - Yes (Details)
  • Source compatible - Yes (Details)

kryo-4.0.3

19 May 09:39
Compare
Choose a tag to compare

This is a maintenance release coming with bug fixes and performance improvements for chunked encoding.

Improved filling InputChunked buffer (#651)
Support skipping input chunks after a buffer underflow (#850)
Avoid flush repeatedly when has finished flushing (#978)

The full list of changes can be found here.

Many thanks to all contributors!

Compatibility

  • Serialization compatible
    • Standard IO: Yes
    • Unsafe-based IO: Yes
  • Binary compatible - Yes (Details)
  • Source compatible - Yes (Details)

kryo-5.5.0

20 Apr 13:31
Compare
Choose a tag to compare

This is a maintenance release coming with bug fixes and performance improvements.

#944 Avoid slow Class.forName when serializing lambdas
#946 Make the ImmutableCollections serializers public and final
#948 Ensure that record constructors are always accessible
#951 Fix serialization of Kotlin lambdas
#955 Fix type resolution for generic arrays
#956 Performance improvements for Kryo.isClosure()

Other Tasks:

  • Test CI build against Java 20
  • Support for Kotlin tests
  • Upgrade Maven plugin dependencies

The full list of changes can be found here.

Many thanks to all contributors!

Upgrade Notes

For migration from previous major versions please check out the migration guide. We're asking the community to help and contribute this part: please edit the migration wiki page as you encounter any information or issues that might help others.

Compatibility

  • Serialization compatible
    • Standard IO: Yes
    • Unsafe-based IO: Yes
  • Binary compatible - Yes (Details)
  • Source compatible - Yes (Details)

kryo-5.4.0

30 Dec 10:53
Compare
Choose a tag to compare

This is a maintenance release coming with bug fixes and performance improvements.

The most notable change is performance improvements for record serialization (#927) by caching access to components, getters and constructors. The new implementation is roughly 20x faster.

Several PRs improve Kryo's compatibility with JDK 17+ (#930, #932, #933).

#923 Add helper method to register serializers for java.util.ImmutableCollections (#933)
#885 Delay access to constructor and methods for DirectBuffers until first use (#932)
#885 Add additional safe serializers for commonly used JDK classes (#930)
#884 Cache components, getters and constructors in RecordSerializer (#927)
#922 Fall back to default class resolution if class cannot be loaded with provided class loader (#926)
#920 Align ByteBufferOutput.writeAscii with implementation in Output (#921)
#889 Serializer for java.sql.Timestamp which preserves nanoseconds (#890)
#884 Fix eclipse project setup: Add JUnit 5, ByteBuddy (#887)

Other Tasks:

  • Improve tests for JDK 17 (#886)
  • Upgrade GitHub actions (#925)
  • Upgrade Objenesis to 3.3

The full list of changes can be found here.

Many thanks to all contributors!

Upgrade Notes

For migration from previous major versions please check out the migration guide. We're asking the community to help and contribute this part: please edit the migration wiki page as you encounter any information or issues that might help others.

Compatibility

  • Serialization compatible
    • Standard IO: Yes
    • Unsafe-based IO: Yes
  • Binary compatible - Yes (Details)
  • Source compatible - Yes (Details)

kryo-5.3.0

11 Feb 10:59
Compare
Choose a tag to compare

This is a maintenance release coming with bug fixes and performance improvements:

#872 Custom exception for buffer over/underflow (#874)
#873 Set record component getter accessible (#875)
#845 Performance improvements for maps (#876)
#845 Use IdentityMap instead of CuckooObjectMap in class resolver (#877)
#882 Catch LinkageError in addition to RTE when accessing fields via ASM (#883)

Other Tasks:

  • Enforce minimum maven version and update plugins and test dependencies

The full list of changes can be found here.

Many thanks to all contributors!

Upgrade Notes

This release brings performance improvements for Kryo's custom map implementations (#876). These improvements allowed us to change the map for resolving registrations in DefaultClassResolver from a CuckooObjectMap to an IdentityMap with 3-5% faster throughput (#877). CuckooObjectMap is now deprecated and will be removed in Kryo 6.

Kryo now throws dedicated exceptions in case of buffer under- or overflows (#872). If you currently parse the error message to check for these conditions, you can catch KryoBufferUnderflowException and KryoBufferOverflowException instead.

For migration from previous major versions please check out the migration guide. We're asking the community to help and contribute this part: please edit the migration wiki page as you encounter any information or issues that might help others.

Compatibility

  • Serialization compatible
    • Standard IO: Yes
    • Unsafe-based IO: Yes
  • Binary compatible - No (Details)
  • Source compatible - No (Details)

kryo-5.2.1

11 Dec 10:48
Compare
Choose a tag to compare

This is a maintenance release coming with bug fixes and improvements:

#834 Support skipping input chunks after a buffer underflow (#850)
#865 Ensure empty PriorityQueue can be deserialized (#866)
#870 Shade contents of source jar for versioned artifact

Other Tasks:

  • Migrate from Travis CI to GitHub Actions
  • Build and test with JDK 17

The full list of changes can be found here.

Many thanks to all contributors!

For migration from previous major versions please check out the migration guide. We're asking the community to help and contribute this part: please edit the migration wiki page as you encounter any information or issues that might help others.

Compatibility

  • Serialization compatible
    • Standard IO: Yes
    • Unsafe-based IO: Yes
  • Binary compatible - Yes (Details)
  • Source compatible - Yes (Details)

kryo-5.2.0

31 Jul 15:22
Compare
Choose a tag to compare

This is a maintenance release coming with bug fixes and improvements.

#849 Fall back to getDeclaredConstructor for non-public records
#848 Fix #847 Ensure that RecordSerializer can deal with subtypes
#841 Fix #840 Ensure primitive types are assignable to Comparable/Serializables fields
#839 Fix #838 Avoid flush repeatedly when has finished flushing
#829 OSS-Fuzz Integration

The full list of changes can be found here.

Many thanks to all contributors!

Important Upgrade Information

This release fixes two critical issues with the serializer for java.util.Record. One of the issues (#847) seriously limits the serializers practical usefulness, so we decided to make an exception and break serialization compatibility. If you have serialized records with non-final field types that you need to read with Kryo 5.2.0, you can enable backwards compatibility globally or for individual types (recommended):

  1. Register global default serializer:
    final RecordSerializer<?> rs = new RecordSerializer<>();
    rs.setFixedFieldTypes(true);
    kryo.addDefaultSerializer(Record.class, rs);
  1. Register serializer per type:
    final RecordSerializer<?> rs = new RecordSerializer<>();
    rs.setFixedFieldTypes(true);
    kryo.register(MyRecord.class, rs);

For migration from previous major versions please check out the migration guide. We're asking the community to help and contribute this part: please edit the migration wiki page as you encounter any information or issues that might help others.

Compatibility

  • Serialization compatible
    • Standard IO: Yes (except for java.util.Record)
    • Unsafe-based IO: Yes (except for java.util.Record)
  • Binary compatible - Yes (Details)
  • Source compatible - Yes (Details)

kryo-5.1.1

02 May 09:37
Compare
Choose a tag to compare

This is a maintenance release coming with bug fixes for CompatibleFieldSerializer and the versioned artifact.

In Kryo 5.1.0, a direct dependency on the unversioned JAR accidentally made it into the POM for the versioned artifact (see #825). If you are using the versioned artifact, upgrading to 5.1.1 is recommended.

#822: Fix #821 Support closures when validating types in CompatibleFieldSerializer
#824: Fix #823 Fix ArrayIndexOutOfBoundsException in binary search logic
#825: Remove direct dependency from versioned artifact

The full list of changes can be found here.

Many thanks to all contributors!

For migration from previous major versions please check out the migration guide. We're asking the community to help and contribute this part: please edit the migration wiki page as you encounter any information or issues that might help others.

Compatibility

  • Serialization compatible
    • Standard IO: Yes
    • Unsafe-based IO: Yes
  • Binary compatible - Yes (Details)
  • Source compatible - Yes (Details)

kryo-5.1.0

08 Apr 11:00
Compare
Choose a tag to compare

This release comes with support for java.util.Record, improved compatibility with Android API <26, and OSGI support for the versioned artifact.

#766: Fix #735 Support for java.util.Record
#814: Fix #691 Bump Objenesis to 3.2
#818: Fix #811 OSGI support for versioned artifact

The full list of changes can be found here.

Many thanks to all contributors!

For migration from previous major versions please check out the migration guide. We're asking the community to help and contribute this part: please edit the migration wiki page as you encounter any information or issues that might help others.

Compatibility

  • Serialization compatible
    • Standard IO: Yes
    • Unsafe-based IO: Yes
  • Binary compatible - Yes (Details)
  • Source compatible - Yes (Details)

kryo-5.0.4

12 Mar 17:58
Compare
Choose a tag to compare

This is a maintenance release coming with a bugfix for Pool with soft references.

#805 : Fix #804 Prevent IllegalStateException: Queue full

The full list of changes can be found here.

Many thanks to all contributors!

For migration from previous major versions please check out the migration guide. We're asking the community to help and contribute this part: please edit the migration wiki page as you encounter any information or issues that might help others.

Compatibility

  • Serialization compatible
    • Standard IO: Yes
    • Unsafe-based IO: Yes
  • Binary compatible - Yes (Details)
  • Source compatible - Yes (Details)