Awesome
kryo-more
Kryo 5.x serializers for various libGDX-related libraries.
This lets Kryo 5.x (currently 5.6.2) de/serialize objects from RegExodus, digital, jdkgdxds, juniper, cringe, gand, and simple-graphs. All of these but simple-graphs are maintained by tommyettinger, who also maintains this serialization library.
You may want to consider using Fury serialization instead of Kryo, since it sometimes doesn't need these kinds of manual serializer, and is faster than Kryo in most benchmarks. It isn't as mature of a project, but it's being incubated by the Apache Foundation, and is developing quickly. If you do use Fury, you can get manual serializers (when they are needed) from kryo-more's relative project, tantrum.
How to get
Each sub-library has its own version, linked to the version of the library it de/serializes. The last component of the version is usually .0, but can be increased for bug-fixes to the same linked library version, or if Kryo itself had a (compatible) update available but the linked library did not have an update.
- kryo-regexodus is currently version 0.1.16.1
- kryo-digital is currently version 0.5.4.1
- kryo-jdkgdxds is currently version 1.7.2.1
- kryo-juniper is currently version 0.6.3.1
- kryo-cringe is currently version 0.2.0.1
- kryo-simple-graphs is currently (usable at) version 3.0.0.1
- This depends on simple-graphs v3.0.0, not the current 5.1.1, because versions since 4.0.0 don't make the edges on graphs serializable in any way (they use a lambda per-edge).
- kryo-gand is at 0.1.1.1
- This release has a known bug that seems to be in Kryo itself;
PointI3
is unusable for serialization with Kryo.
- This release has a known bug that seems to be in Kryo itself;
All of these sub-libraries depend on Java 8 or higher, except for kryo-regexodus (which depends on Java 7 or higher) and some older versions of kryo-digital and kryo-juniper.
Gradle dependency info:
kryo-regexodus:
implementation "com.github.tommyettinger:kryo-regexodus:0.1.16.1"
kryo-digital:
implementation "com.github.tommyettinger:kryo-digital:0.5.4.1"
kryo-jdkgdxds:
implementation "com.github.tommyettinger:kryo-jdkgdxds:1.7.1.1"
kryo-juniper:
implementation "com.github.tommyettinger:kryo-juniper:0.6.3.1"
kryo-cringe:
implementation "com.github.tommyettinger:kryo-cringe:0.2.0.1"
kryo-gand (not recommended):
implementation "com.github.tommyettinger:kryo-gand:0.1.1.1"
kryo-simple-graphs:
implementation "com.github.tommyettinger:kryo-simple-graphs:3.0.0.1"
Maven dependency info:
kryo-regexodus:
<dependency>
<groupId>com.github.tommyettinger</groupId>
<artifactId>kryo-regexodus</artifactId>
<version>0.1.16.1</version>
</dependency>
kryo-digital:
<dependency>
<groupId>com.github.tommyettinger</groupId>
<artifactId>kryo-digital</artifactId>
<version>0.5.4.1</version>
</dependency>
kryo-jdkgdxds:
<dependency>
<groupId>com.github.tommyettinger</groupId>
<artifactId>kryo-jdkgdxds</artifactId>
<version>1.7.2.1</version>
</dependency>
kryo-juniper:
<dependency>
<groupId>com.github.tommyettinger</groupId>
<artifactId>kryo-juniper</artifactId>
<version>0.6.3.1</version>
</dependency>
kryo-cringe:
<dependency>
<groupId>com.github.tommyettinger</groupId>
<artifactId>kryo-cringe</artifactId>
<version>0.2.0.1</version>
</dependency>
kryo-gand:
<dependency>
<groupId>com.github.tommyettinger</groupId>
<artifactId>kryo-gand</artifactId>
<version>0.1.1.1</version>
</dependency>
kryo-simple-graphs:
<dependency>
<groupId>com.github.tommyettinger</groupId>
<artifactId>kryo-simple-graphs</artifactId>
<version>3.0.0.1</version>
</dependency>
GWT
GWT is not supported because Kryo doesn't support it. You can use libGDX Json on GWT; except for simple-graphs, cringe,
and gand, all the libraries here are supported by jdkgdxds-interop with Json. You can just use cringe and gand
with libGDX Json natively, since they have classes that implement Json.Serializable
.
License
Apache 2.0, see the LICENSE file.