diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 291318f..d6ad167 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -53,6 +53,15 @@ jobs:
fi
mvn -B release:prepare $MVN_ARGS
+ - name: Check release.properties
+ run: |
+ if [ ! -f release.properties ]; then
+ echo "release.properties not found"
+ exit 1
+ fi
+ echo "Contents of release.properties:"
+ cat release.properties
+
- name: Determine release version
id: version
run: |
@@ -73,9 +82,9 @@ jobs:
MAVEN_USER: ${{ secrets.MAVEN_USER }}
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
run: |
- mvn -B release:perform -Darguments="-DskipTests -DaltDeploymentRepository=id::default::njord: -Dnjord.autoPublish" -s .github/release-settings.xml
+ mvn -B release:perform -Darguments="-DskipTests -DaltDeploymentRepository=id::default::njord: -Dnjord.autoPublish=true -Dnjord.publishingType=automatic" -s .github/release-settings.xml
-# - name: Create GitHub Release
-# run: gh release create "${{ steps.version.outputs.released_tag }}" --generate-notes --title "Version ${{ steps.version.outputs.released_version }}"
-# env:
-# GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ - name: Create GitHub Release
+ run: gh release create "${{ steps.version.outputs.released_tag }}" --generate-notes --title "Version ${{ steps.version.outputs.released_version }}"
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
\ No newline at end of file
diff --git a/README.md b/README.md
index 2ef8fc5..0246789 100644
--- a/README.md
+++ b/README.md
@@ -104,53 +104,62 @@ non-vectorized implementation. For an example usage, see
examples/vector/Example.java. The feature requires JDK 19+ and is currently for
advanced users.
-JavaFastPFOR as a dependency (JitPack)
+JavaFastPFOR as a dependency
------------------------
+JavaFastPFOR is available both on Maven Central and JitPack, so you can easily
+include it in your project using either source.
+
We have a demo project using JavaFastPFOR as a dependency (both Maven and Gradle). See...
https://github.com/fast-pack/JavaFastPFORDemo
-1. **Maven**
+### Maven Central
+
+You can add JavaFastPFOR directly from Maven Central — no extra repository configuration needed:
-Using this code in your own project is easy with maven, just add
-the following code in your pom.xml file:
+**Maven**
```xml
-
- com.github.fast-pack
- JavaFastPFor
- JavaFastPFOR-0.3.2
-
+
+ me.lemire.integercompression
+ JavaFastPFOR
+ 0.3.8
+
```
-as well as jitpack as a repository...
+**Gradle (Groovy)**
-```xml
-
-
- jitpack.io
- https://jitpack.io
-
-
+```groovy
+dependencies {
+ implementation 'me.lemire.integercompression:JavaFastPFOR:0.3.8'
+}
```
-Naturally, you should replace "version" by the version
-you desire.
-
+### JitPack
-2. **Gradle (groovy)**
+If you prefer or need to use JitPack, you can include the dependency like this:
+**Maven**
-Then all you need is to edit your `build.gradle` file like so:
+```xml
+
+
+ jitpack.io
+ https://jitpack.io
+
+
+
+
+ com.github.fast-pack
+ JavaFastPFOR
+ JavaFastPFOR-0.3.8
+
+```
+**Gradle (groovy)**
```groovy
-plugins {
- id 'java'
-}
-
-
repositories {
mavenCentral()
maven {
@@ -159,11 +168,10 @@ repositories {
}
dependencies {
- implementation 'com.github.fast-pack:JavaFastPFor:JavaFastPFOR-0.3.2'
+ implementation 'com.github.fast-pack:JavaFastPFOR:JavaFastPFOR-0.3.8'
}
```
-
Naturally, you should replace "version" by the version
you desire.
@@ -244,6 +252,21 @@ API Documentation
http://www.javadoc.io/doc/me.lemire.integercompression/JavaFastPFOR/
+
+Citing this work
+-----------------
+
+If you use JavaFastPFOR in your work, please consider citing the project. A recommended BibTeX entry is:
+
+```bibtex
+@misc{lemire2025_javafastpfor,
+ author = {Daniel Lemire},
+ title = {{JavaFastPFOR: A simple integer compression library in Java}},
+ year = {2025},
+ howpublished = {\url{https://github.com/fast-pack/JavaFastPFOR}},
+}
+```
+
Want to read more?
------------------
diff --git a/pom.xml b/pom.xml
index 26864d0..7783d45 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2,7 +2,7 @@
4.0.0
me.lemire.integercompression
JavaFastPFOR
- 0.3.6-SNAPSHOT
+ 0.3.12-SNAPSHOT
jar
21
@@ -234,6 +234,13 @@
maven-jar-plugin
2.4
+
+
+
+ me.lemire.integercompression
+
+
+
maven-javadoc-plugin
diff --git a/src/main/java/me/lemire/integercompression/synth/UniformDataGenerator.java b/src/main/java/me/lemire/integercompression/synth/UniformDataGenerator.java
index bbd386a..a50497c 100644
--- a/src/main/java/me/lemire/integercompression/synth/UniformDataGenerator.java
+++ b/src/main/java/me/lemire/integercompression/synth/UniformDataGenerator.java
@@ -42,7 +42,7 @@ int[] generateUniformHash(int N, int Max) {
int[] ans = new int[N];
HashSet s = new HashSet();
while (s.size() < N)
- s.add(new Integer(this.rand.nextInt(Max)));
+ s.add(this.rand.nextInt(Max));
Iterator i = s.iterator();
for (int k = 0; k < N; ++k)
ans[k] = i.next().intValue();
diff --git a/src/main/java/me/lemire/longcompression/differential/LongDelta.java b/src/main/java/me/lemire/longcompression/differential/LongDelta.java
index 184e53c..8399f94 100644
--- a/src/main/java/me/lemire/longcompression/differential/LongDelta.java
+++ b/src/main/java/me/lemire/longcompression/differential/LongDelta.java
@@ -107,7 +107,7 @@ public static void fastinverseDelta(long[] data) {
}
}
- for (; i != data.length; ++i) {
+ for (; i < data.length; ++i) {
data[i] += data[i - 1];
}
}
diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java
index d254c12..f134601 100644
--- a/src/main/java/module-info.java
+++ b/src/main/java/module-info.java
@@ -6,5 +6,7 @@
// requires jdk.incubator.vector;
exports me.lemire.integercompression;
exports me.lemire.longcompression;
+ exports me.lemire.longcompression.differential;
+ exports me.lemire.integercompression.differential;
// exports me.lemire.integercompression.vector;
}
diff --git a/src/test/java/me/lemire/longcompression/LongDeltaTest.java b/src/test/java/me/lemire/longcompression/LongDeltaTest.java
new file mode 100644
index 0000000..bfa1e6f
--- /dev/null
+++ b/src/test/java/me/lemire/longcompression/LongDeltaTest.java
@@ -0,0 +1,23 @@
+package me.lemire.longcompression;
+
+import me.lemire.longcompression.differential.LongDelta;
+import org.junit.Test;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertNotNull;
+
+public class LongDeltaTest {
+ @Test
+ public void testEmptyArrayFastInverseDelta() {
+ LongCompressor compressor = new LongCompressor();
+ long[] input = new long[0];
+
+ LongDelta.delta(input);
+ long[] compressed = compressor.compress(input);
+ long[] result = compressor.uncompress(compressed);
+ LongDelta.fastinverseDelta(result);
+
+ assertNotNull(result);
+ assertArrayEquals(input, result);
+ }
+}