Releases: EsotericSoftware/kryo
kryo-5.6.2
This is a maintenance release that recompiles 5.6.1 to restore compatibility with Java 8.
#1134 Recompile to ensure Java 8 support
Other Tasks:
- Ensure release build can only happen with JDK 11
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
kryo-5.6.1
DO NOT USE THIS VERSION
This version was accidentally targeted to Java 17. Use 5.6.2+ instead.
This is a maintenance release fixing wrong coordinates for the versioned artifact.
#1045 Re-add groupId to versioned POM
Other Tasks:
- Fix deployment of snapshot builds
- 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
kryo-5.6.0
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
kryo-4.0.3
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
kryo-5.5.0
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
kryo-5.4.0
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:
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
kryo-5.3.0
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
kryo-5.2.1
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
kryo-5.2.0
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):
- Register global default serializer:
final RecordSerializer<?> rs = new RecordSerializer<>();
rs.setFixedFieldTypes(true);
kryo.addDefaultSerializer(Record.class, rs);
- 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
kryo-5.1.1
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.