Skip to content

Commit

Permalink
Release 1.8.0 !
Browse files Browse the repository at this point in the history
  • Loading branch information
tommyettinger committed Jan 18, 2025
1 parent 5740b3e commit 26cb7d5
Show file tree
Hide file tree
Showing 465 changed files with 27,296 additions and 1,616 deletions.
6 changes: 6 additions & 0 deletions CHANGES
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
[1.8.0]
- [SEED BREAKING, MAYBE] The dependency on digital is now 0.6.0, which changes the output of methods in Hasher with "Bulk" in their names. Those methods also pass more stringent testing than before.
- Several new methods were added to EnumSet and EnumMap.
- EnumOrderedSet and EnumOrderedMap are present now, and are insertion-ordered counterparts to EnumSet and EnumMap.
- There are also maps from Enum to each of primitive int, primitive long, and primitive float, including ordered maps.

[1.7.2]
- Junction (and its supporting interface Term) are new in this version. They can be used as a type of predicate to match multiple items in a Collection.
- A Junction can be parsed from a String, creating several Terms and their relationships. This can produce any type that a supplied function can convert from a String.
Expand Down
30 changes: 16 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,9 @@ key universe. `EnumMap` does also store a default value, which is usually `null`

The library includes expanded interfaces for these to implement, like the aforementioned `Ordered` interface,
`PrimitiveCollection` is akin to Java 8's `PrimitiveIterator`, some `float`-based versions of primitive specializations where
the JDK only offers `int`, `long`, and `double`, and primitive `Comparator`s (which are Java 8 `FunctionalInterface`s).
There is also `EnhancedCollection`, which is used to add default methods to various classes here.
the JDK only offers `int`, `long`, and `double`, and primitive `Comparator`s (which are usable as Java 8
`FunctionalInterface`s, but don't implement that type for RoboVM compatibility). There is also `EnhancedCollection`,
which is used to add default methods to various classes here.

You can extend essentially all classes in jdkgdxds, and it's meant to be friendlier to inherit from than the libGDX collections.
The Object-keyed maps and sets have protected `place()` and `equate()` methods to allow changing the behavior of hashing (with
Expand Down Expand Up @@ -160,15 +161,15 @@ You have two options: Maven Central for stable releases, or JitPack to select a

Maven Central uses the Gradle dependency:
```
api 'com.github.tommyettinger:jdkgdxds:1.7.2'
api "com.github.tommyettinger:jdkgdxds:1.8.0"
```
You can use `implementation` instead of `api` if you don't use the `java-library` plugin.
It does not need any additional repository to be specified in most cases; if it can't be found, you may need the repository
`mavenCentral()` or to remove the `mavenLocal()` repo. Jdkgdxds has dependencies on [digital](https://github.com/tommyettinger/digital)
(which provides common math code meant for use by multiple projects), [funderby](https://github.com/tommyettinger/funderby)
(Java 8 functional interfaces for primitive types), and for annotations only, [checker-qual](https://github.com/typetools/checker-framework). The
version for the `digital` dependency is 0.5.4 (you can specify it manually with the core dependency
`api "com.github.tommyettinger:digital:0.5.4"`). Funderby has only changed a bit since its initial release, and is on version
version for the `digital` dependency is 0.6.0 (you can specify it manually with the core dependency
`api "com.github.tommyettinger:digital:0.6.0"`). Funderby has only changed a bit since its initial release, and is on version
0.1.2 (you can specify it manually with `implementation "com.github.tommyettinger:funderby:0.1.2"`). The version for
`checker-qual` is 3.42.0 , and is expected to go up often because checker-qual rather-frequently updates to handle JDK changes.
Earlier versions of jdkgdxds used `jsr305` instead of `checker-qual`, which had some potential problems on Java 9 and up (not to
Expand All @@ -178,8 +179,8 @@ mention that JSR305 is currently unmaintained). You can manually specify a `chec
If you have an HTML module, add:
```
implementation "com.github.tommyettinger:funderby:0.1.2:sources"
implementation "com.github.tommyettinger:digital:0.5.4:sources"
implementation "com.github.tommyettinger:jdkgdxds:1.7.2:sources"
implementation "com.github.tommyettinger:digital:0.6.0:sources"
implementation "com.github.tommyettinger:jdkgdxds:1.8.0:sources"
```
to its
dependencies, and in its `GdxDefinition.gwt.xml` (in the HTML module), add
Expand Down Expand Up @@ -209,7 +210,7 @@ dependencies {
```
to whatever module uses an `android` or `com.android.application` plugin. The `desugar_jdk_libs` version should only be updated if
you have checked for compatibility with your Android Gradle Plugin version; see [Android docs](https://developer.android.com/studio/write/java8-support#library-desugaring-versions).
In short, if you use Android Gradle Plugin 7.4.0 or later (the default for gdx-liftoff projects is 8.1.4), you should use
In short, if you use Android Gradle Plugin 7.4.0 or later (the default for gdx-liftoff projects is 8.5.2), you should use
`'com.android.tools:desugar_jdk_libs:2.0.4'`. If you use Android Gradle Plugin 7.3.0, you should use
`'com.android.tools:desugar_jdk_libs:1.2.3'`. You may need to set the `minSdkVersion`
to a higher value, depending on where it is already; 19 is known to work, and 16 probably works.
Expand All @@ -224,16 +225,16 @@ for that library -- both digital and juniper were both mostly drawn from code in
The version for funderby is expected to stay at or around 0.1.2, since it is a relatively small library and is probably complete.

You can build specific, typically brand-new commits on JitPack.
[JitPack has instructions for any recent commit you want here](https://jitpack.io/#tommyettinger/jdkgdxds/56d6c63644).
[JitPack has instructions for any recent commit you want here](https://jitpack.io/#tommyettinger/jdkgdxds/5740b3e4f1).
To reiterate, you add `maven { url 'https://jitpack.io' }` to your project's `repositories` section, just **not** the one inside
`buildscript` (that just applies to the Gradle script itself, not your project). Then you can add
`implementation 'com.github.tommyettinger:jdkgdxds:56d6c63644'` or `api 'com.github.tommyettinger:jdkgdxds:56d6c63644'`, depending
`implementation 'com.github.tommyettinger:jdkgdxds:5740b3e4f1'` or `api 'com.github.tommyettinger:jdkgdxds:5740b3e4f1'`, depending
on what your other dependencies use, to your project or its core module (if there are multiple modules, as in a typical libGDX
project). If you have an HTML module, add:
```
implementation "com.github.tommyettinger:funderby:0.1.2:sources"
implementation "com.github.tommyettinger:digital:0.5.4:sources"
implementation "com.github.tommyettinger:jdkgdxds:56d6c63644:sources"
implementation "com.github.tommyettinger:digital:0.6.0:sources"
implementation "com.github.tommyettinger:jdkgdxds:5740b3e4f1:sources"
```
to its
dependencies, and in its `GdxDefinition.gwt.xml` (in the HTML module), add
Expand All @@ -242,7 +243,7 @@ dependencies, and in its `GdxDefinition.gwt.xml` (in the HTML module), add
<inherits name="com.github.tommyettinger.digital" />
<inherits name="com.github.tommyettinger.jdkgdxds" />
```
in with the other `inherits` lines. `56d6c63644` is an example of a recent commit, and can be
in with the other `inherits` lines. `5740b3e4f1` is an example of a recent commit, and can be
replaced with other commits shown on JitPack.

There is an optional dependency, [jdkgdxds-interop](https://github.com/tommyettinger/jdkgdxds_interop), that provides code to
Expand All @@ -260,7 +261,8 @@ You can also use [Apache Fury](https://fury.apache.org) to serialize these data
[tantrum](https://github.com/tommyettinger/tantrum). The tantrum README.md has dependency information. Fury can be
faster than Kryo, and despite being "Incubating" at the Apache Foundation, I have so-far encountered no bugs with it in
practice. I have found a mystery bug in Kryo 5.0 and up, with a specific type that overwrites the start of the
serialized data file... That is what caused me to seek out alternatives to Kryo, and Fury works well.
serialized data file, making it invalid. Actually, I've found it twice, for two unrelated types. That is what caused me
to seek out alternatives to Kryo, and Fury works well.

## Updating to 1.0.1

Expand Down
Loading

0 comments on commit 26cb7d5

Please sign in to comment.