You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ah...@apache.org on 2025/09/22 12:56:45 UTC

(commons-rng) branch master updated (244b8156 -> 47225b50)

This is an automated email from the ASF dual-hosted git repository.

aherbert pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/commons-rng.git


    from 244b8156 Merge pull request #169 from apache/dependabot/github_actions/github/codeql-action-3.30.3
     new 374d6939 Update commons parent 84 to 88
     new a2055dc2 pmd change: allow increment/decrement in assignment
     new ded7b8ed pmd fix: Use java naming conventions for generic types
     new 47225b50 pmd fix: avoid assignment in operand

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../rng/core/source32/JenkinsSmallFast32.java       |  4 +++-
 .../rng/core/source32/MiddleSquareWeylSequence.java |  9 ++++++---
 .../rng/core/source32/MultiplyWithCarry256.java     |  3 ++-
 .../rng/core/source64/JenkinsSmallFast64.java       |  4 +++-
 .../commons/rng/core/source64/SplitMix64.java       |  3 ++-
 .../MarsagliaTsangWangDiscreteSampler.java          | 18 +++++++++++++++---
 .../commons/rng/simple/internal/NoOpConverter.java  |  6 +++---
 .../rng/simple/internal/ProviderBuilder.java        |  4 ++--
 .../rng/simple/internal/Seed2ArrayConverter.java    |  8 ++++----
 .../commons/rng/simple/internal/SeedConverter.java  |  8 ++++----
 .../rng/simple/internal/SeedConverterComposer.java  | 21 +++++++++++----------
 .../commons/rng/simple/internal/SeedFactory.java    |  3 ++-
 pom.xml                                             |  2 +-
 src/conf/pmd/pmd-ruleset.xml                        | 11 +++++++++++
 14 files changed, 69 insertions(+), 35 deletions(-)


(commons-rng) 02/04: pmd change: allow increment/decrement in assignment

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

aherbert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-rng.git

commit a2055dc298516cb4ede1f6d417ed0ffa267c3325
Author: Alex Herbert <ah...@apache.org>
AuthorDate: Mon Sep 22 13:04:57 2025 +0100

    pmd change: allow increment/decrement in assignment
---
 src/conf/pmd/pmd-ruleset.xml | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/conf/pmd/pmd-ruleset.xml b/src/conf/pmd/pmd-ruleset.xml
index 1841ac53..4f35486c 100644
--- a/src/conf/pmd/pmd-ruleset.xml
+++ b/src/conf/pmd/pmd-ruleset.xml
@@ -287,6 +287,11 @@
         value="./ancestor-or-self::ClassDeclaration[@SimpleName='MarsagliaTsangWangDiscreteSampler']"/>
     </properties>
   </rule>
+  <rule ref="category/java/errorprone.xml/AssignmentInOperand">
+    <properties>
+      <property name="allowIncrementDecrement" value="true" />
+    </properties>
+  </rule>
 
   <rule ref="category/java/multithreading.xml/UseConcurrentHashMap">
     <properties>


(commons-rng) 04/04: pmd fix: avoid assignment in operand

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

aherbert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-rng.git

commit 47225b50c565b5ed7b99a7c16b43b2c2e4d210a6
Author: Alex Herbert <ah...@apache.org>
AuthorDate: Mon Sep 22 13:23:19 2025 +0100

    pmd fix: avoid assignment in operand
---
 .../commons/rng/core/source32/JenkinsSmallFast32.java  |  4 +++-
 .../rng/core/source32/MiddleSquareWeylSequence.java    |  9 ++++++---
 .../rng/core/source32/MultiplyWithCarry256.java        |  3 ++-
 .../commons/rng/core/source64/JenkinsSmallFast64.java  |  4 +++-
 .../apache/commons/rng/core/source64/SplitMix64.java   |  3 ++-
 .../MarsagliaTsangWangDiscreteSampler.java             | 18 +++++++++++++++---
 .../commons/rng/simple/internal/SeedFactory.java       |  3 ++-
 src/conf/pmd/pmd-ruleset.xml                           |  6 ++++++
 8 files changed, 39 insertions(+), 11 deletions(-)

diff --git a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/JenkinsSmallFast32.java b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/JenkinsSmallFast32.java
index 4b533317..eb3cac12 100644
--- a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/JenkinsSmallFast32.java
+++ b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/JenkinsSmallFast32.java
@@ -53,7 +53,9 @@ public class JenkinsSmallFast32 extends IntProvider {
      */
     private void setSeedInternal(int seed) {
         a = 0xf1ea5eed;
-        b = c = d = seed;
+        b = seed;
+        c = seed;
+        d = seed;
         for (int i = 0; i < 20; i++) {
             next();
         }
diff --git a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/MiddleSquareWeylSequence.java b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/MiddleSquareWeylSequence.java
index ce071081..3761b475 100644
--- a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/MiddleSquareWeylSequence.java
+++ b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/MiddleSquareWeylSequence.java
@@ -125,7 +125,8 @@ public class MiddleSquareWeylSequence extends IntProvider {
     @Override
     public int next() {
         x *= x;
-        x += w += s;
+        w += s;
+        x += w;
         x = (x >>> 32) | (x << 32);
         return (int) x;
     }
@@ -135,11 +136,13 @@ public class MiddleSquareWeylSequence extends IntProvider {
     public long nextLong() {
         // Avoid round trip from long to int to long by performing two iterations inline
         x *= x;
-        x += w += s;
+        w += s;
+        x += w;
         final long i1 = x & 0xffffffff00000000L;
         x = (x >>> 32) | (x << 32);
         x *= x;
-        x += w += s;
+        w += s;
+        x += w;
         final long i2 = x >>> 32;
         x = i2 | x << 32;
         return i1 | i2;
diff --git a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/MultiplyWithCarry256.java b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/MultiplyWithCarry256.java
index 32cb0178..8cd619a6 100644
--- a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/MultiplyWithCarry256.java
+++ b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/MultiplyWithCarry256.java
@@ -113,6 +113,7 @@ public class MultiplyWithCarry256 extends IntProvider {
         index &= 0xff;
         final long t = A * (state[index] & 0xffffffffL) + carry;
         carry = (int) (t >> 32);
-        return state[index++] = (int) t;
+        state[index++] = (int) t;
+        return (int) t;
     }
 }
diff --git a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/JenkinsSmallFast64.java b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/JenkinsSmallFast64.java
index 53c56af5..3e354ce4 100644
--- a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/JenkinsSmallFast64.java
+++ b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/JenkinsSmallFast64.java
@@ -52,7 +52,9 @@ public class JenkinsSmallFast64 extends LongProvider {
      */
     private void setSeedInternal(long seed) {
         a = 0xf1ea5eedL;
-        b = c = d = seed;
+        b = seed;
+        c = seed;
+        d = seed;
         for (int i = 0; i < 20; i++) {
             next();
         }
diff --git a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/SplitMix64.java b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/SplitMix64.java
index ffea0a15..a39d3e1a 100644
--- a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/SplitMix64.java
+++ b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/SplitMix64.java
@@ -56,7 +56,8 @@ public class SplitMix64 extends LongProvider {
     /** {@inheritDoc} */
     @Override
     public long next() {
-        long z = state += 0x9e3779b97f4a7c15L;
+        long z = state + 0x9e3779b97f4a7c15L;
+        state = z;
         z = (z ^ (z >>> 30)) * 0xbf58476d1ce4e5b9L;
         z = (z ^ (z >>> 27)) * 0x94d049bb133111ebL;
         return z ^ (z >>> 31);
diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/MarsagliaTsangWangDiscreteSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/MarsagliaTsangWangDiscreteSampler.java
index 15d282b3..6ca89252 100644
--- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/MarsagliaTsangWangDiscreteSampler.java
+++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/MarsagliaTsangWangDiscreteSampler.java
@@ -189,7 +189,11 @@ public final class MarsagliaTsangWangDiscreteSampler {
             t2 = t1 + (n2 << 18);
             t3 = t2 + (n3 << 12);
             t4 = t3 + (n4 << 6);
-            n1 = n2 = n3 = n4 = n5 = 0;
+            n1 = 0;
+            n2 = 0;
+            n3 = 0;
+            n4 = 0;
+            n5 = 0;
 
             // Fill tables
             for (int i = 0; i < prob.length; i++) {
@@ -331,7 +335,11 @@ public final class MarsagliaTsangWangDiscreteSampler {
             t2 = t1 + (n2 << 18);
             t3 = t2 + (n3 << 12);
             t4 = t3 + (n4 << 6);
-            n1 = n2 = n3 = n4 = n5 = 0;
+            n1 = 0;
+            n2 = 0;
+            n3 = 0;
+            n4 = 0;
+            n5 = 0;
 
             // Fill tables
             for (int i = 0; i < prob.length; i++) {
@@ -470,7 +478,11 @@ public final class MarsagliaTsangWangDiscreteSampler {
             t2 = t1 + (n2 << 18);
             t3 = t2 + (n3 << 12);
             t4 = t3 + (n4 << 6);
-            n1 = n2 = n3 = n4 = n5 = 0;
+            n1 = 0;
+            n2 = 0;
+            n3 = 0;
+            n4 = 0;
+            n5 = 0;
 
             // Fill tables
             for (int i = 0; i < prob.length; i++) {
diff --git a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/SeedFactory.java b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/SeedFactory.java
index 62627da1..740e42bf 100644
--- a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/SeedFactory.java
+++ b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/SeedFactory.java
@@ -374,7 +374,8 @@ public final class SeedFactory {
         final int end = from + len;
         int i = from;
         while (i < end) {
-            long v = MixFunctions.stafford13(x += MixFunctions.GOLDEN_RATIO_64);
+            x += MixFunctions.GOLDEN_RATIO_64;
+            long v = MixFunctions.stafford13(x);
             for (int j = 0; j < 8; j++) {
                 seed[i++] = (byte) v;
                 v >>>= 8;
diff --git a/src/conf/pmd/pmd-ruleset.xml b/src/conf/pmd/pmd-ruleset.xml
index 4f35486c..770b34e0 100644
--- a/src/conf/pmd/pmd-ruleset.xml
+++ b/src/conf/pmd/pmd-ruleset.xml
@@ -290,6 +290,12 @@
   <rule ref="category/java/errorprone.xml/AssignmentInOperand">
     <properties>
       <property name="allowIncrementDecrement" value="true" />
+      <!-- Reassignment of the constructor seed is allowed to extend the seed length. -->
+      <property name="violationSuppressXPath"
+        value="./ancestor-or-self::ClassDeclaration[@SimpleName='AbstractL64X128' or
+          @SimpleName='L128X1024Mix' or @SimpleName='L128X128Mix' or
+          @SimpleName='L128X256Mix' or @SimpleName='L64X1024Mix' or
+          @SimpleName='L64X256Mix']"/>
     </properties>
   </rule>
 


(commons-rng) 03/04: pmd fix: Use java naming conventions for generic types

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

aherbert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-rng.git

commit ded7b8edd7d3db32e35061e1155862010e10c8b7
Author: Alex Herbert <ah...@apache.org>
AuthorDate: Mon Sep 22 13:45:09 2025 +0100

    pmd fix: Use java naming conventions for generic types
---
 .../commons/rng/simple/internal/NoOpConverter.java  |  6 +++---
 .../rng/simple/internal/ProviderBuilder.java        |  4 ++--
 .../rng/simple/internal/Seed2ArrayConverter.java    |  8 ++++----
 .../commons/rng/simple/internal/SeedConverter.java  |  8 ++++----
 .../rng/simple/internal/SeedConverterComposer.java  | 21 +++++++++++----------
 5 files changed, 24 insertions(+), 23 deletions(-)

diff --git a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/NoOpConverter.java b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/NoOpConverter.java
index f70ac333..ba3d4ad4 100644
--- a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/NoOpConverter.java
+++ b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/NoOpConverter.java
@@ -21,11 +21,11 @@ package org.apache.commons.rng.simple.internal;
  * Dummy converter that simply passes on its input.
  * It can be useful to avoid "unchecked" compiler warnings.
  *
- * @param <SEED> Seed type.
+ * @param <T> Seed type.
  *
  * @since 1.0
  */
-public class NoOpConverter<SEED> implements SeedConverter<SEED, SEED> {
+public class NoOpConverter<T> implements SeedConverter<T, T> {
     /** Create an instance. */
     public NoOpConverter() {
         // Do nothing
@@ -33,7 +33,7 @@ public class NoOpConverter<SEED> implements SeedConverter<SEED, SEED> {
 
     /** {@inheritDoc} */
     @Override
-    public SEED convert(SEED seed) {
+    public T convert(T seed) {
         return seed;
     }
 }
diff --git a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ProviderBuilder.java b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ProviderBuilder.java
index 63a2ea1e..def9a36b 100644
--- a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ProviderBuilder.java
+++ b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ProviderBuilder.java
@@ -541,13 +541,13 @@ public final class ProviderBuilder {
          * Checks whether the type of given {@code seed} is the native type
          * of the implementation.
          *
-         * @param <SEED> Seed type.
+         * @param <T> Seed type.
          *
          * @param seed Seed value.
          * @return {@code true} if the seed can be passed to the builder
          * for this RNG type.
          */
-        public <SEED> boolean isNativeSeed(SEED seed) {
+        public <T> boolean isNativeSeed(T seed) {
             return seed != null && getSeed().equals(seed.getClass());
         }
 
diff --git a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/Seed2ArrayConverter.java b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/Seed2ArrayConverter.java
index 3dfa8a9b..92c5a2bc 100644
--- a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/Seed2ArrayConverter.java
+++ b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/Seed2ArrayConverter.java
@@ -19,11 +19,11 @@ package org.apache.commons.rng.simple.internal;
 /**
  * Seed converter to create an output array type.
  *
- * @param <IN> Input seed type.
- * @param <OUT> Output seed type.
+ * @param <T> Input seed type.
+ * @param <R> Output seed type.
  * @since 1.3
  */
-public interface Seed2ArrayConverter<IN, OUT> extends SeedConverter<IN, OUT> {
+public interface Seed2ArrayConverter<T, R> extends SeedConverter<T, R> {
     /**
      * Converts seed from input type to output type. The output type is expected to be an array.
      *
@@ -31,5 +31,5 @@ public interface Seed2ArrayConverter<IN, OUT> extends SeedConverter<IN, OUT> {
      * @param outputSize Output size.
      * @return the converted seed value.
      */
-    OUT convert(IN seed, int outputSize);
+    R convert(T seed, int outputSize);
 }
diff --git a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/SeedConverter.java b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/SeedConverter.java
index 3dacf816..32948438 100644
--- a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/SeedConverter.java
+++ b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/SeedConverter.java
@@ -19,18 +19,18 @@ package org.apache.commons.rng.simple.internal;
 /**
  * Seed converter.
  *
- * @param <IN> Input seed type.
- * @param <OUT> Output seed type.
+ * @param <T> Input seed type.
+ * @param <R> Output seed type.
  *
  * @since 1.0
  */
 @FunctionalInterface
-public interface SeedConverter<IN, OUT> {
+public interface SeedConverter<T, R> {
     /**
      * Converts seed from input type to output type.
      *
      * @param seed Original seed value.
      * @return the converted seed value.
      */
-    OUT convert(IN seed);
+    R convert(T seed);
 }
diff --git a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/SeedConverterComposer.java b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/SeedConverterComposer.java
index 15c4e180..f4d74ac2 100644
--- a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/SeedConverterComposer.java
+++ b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/SeedConverterComposer.java
@@ -16,20 +16,21 @@
  */
 package org.apache.commons.rng.simple.internal;
 
+
 /**
  * Composes two {@link SeedConverter converters}.
  *
- * @param <IN> Input seed type.
- * @param <TRANS> Transitional seed type.
- * @param <OUT> Output seed type.
+ * @param <T> Input seed type.
+ * @param <S> Transitional seed type.
+ * @param <R> Output seed type.
  *
  * @since 1.0
  */
-public class SeedConverterComposer<IN, TRANS, OUT> implements SeedConverter<IN, OUT> {
+public class SeedConverterComposer<T, S, R> implements SeedConverter<T, R> {
     /** First conversion. */
-    private final SeedConverter<IN, TRANS> first;
+    private final SeedConverter<T, S> first;
     /** Second conversion. */
-    private final SeedConverter<TRANS, OUT> second;
+    private final SeedConverter<S, R> second;
 
     /**
      * Create an instance.
@@ -37,16 +38,16 @@ public class SeedConverterComposer<IN, TRANS, OUT> implements SeedConverter<IN,
      * @param first First conversion.
      * @param second second conversion.
      */
-    public SeedConverterComposer(SeedConverter<IN, TRANS> first,
-                                 SeedConverter<TRANS, OUT> second) {
+    public SeedConverterComposer(SeedConverter<T, S> first,
+                                 SeedConverter<S, R> second) {
         this.first = first;
         this.second = second;
     }
 
     /** {@inheritDoc} */
     @Override
-    public OUT convert(IN seed) {
-        final TRANS trans = first.convert(seed);
+    public R convert(T seed) {
+        final S trans = first.convert(seed);
         return second.convert(trans);
     }
 }


(commons-rng) 01/04: Update commons parent 84 to 88

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

aherbert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-rng.git

commit 374d69398704b26107161fee3f8468df48e6a54b
Author: Alex Herbert <ah...@apache.org>
AuthorDate: Mon Sep 22 13:03:34 2025 +0100

    Update commons parent 84 to 88
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 130e47bc..3febe7a6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-parent</artifactId>
-    <version>84</version>
+    <version>88</version>
   </parent>
 
   <artifactId>commons-rng-parent</artifactId>