Release candidate.
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 167a288..3e5b3a7 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -1,4 +1,109 @@
 
+              Apache Commons RNG 1.4 RELEASE NOTES
+
+The Apache Commons RNG team is pleased to announce the release of Apache Commons RNG 1.4
+
+The Apache Commons RNG project provides pure-Java implementation
+of pseudo-random generators.
+
+This is a minor release of Apache Commons RNG, containing a
+few new features and performance improvements.
+
+Apache Commons RNG 1.4 contains the following library modules:
+ commons-rng-client-api (requires Java 8)
+ commons-rng-core (requires Java 8)
+ commons-rng-simple (requires Java 8)
+ commons-rng-sampling (requires Java 8)
+
+The code in module 'commons-rng-core' should not be accessed
+directly by applications as a future release might make use of
+the JPMS modularization feature available in Java 11+.
+
+Additional code is provided in the following modules:
+ commons-rng-examples-quadrature (requires Java 8)
+ commons-rng-examples-jmh (requires Java 8)
+ commons-rng-examples-sampling (requires Java 8)
+ commons-rng-examples-stress (requires Java 8)
+ commons-rng-examples-jpms (requires Java 11)
+
+It is however not part of the official API and no compatibility
+should be expected in subsequent releases.
+
+It must be noted that, due to the nature of random number generation, some unit tests
+are bound to fail with some probability. The 'maven-surefire-plugin' is configured
+to re-run tests that fail, and pass the build if they succeed within the allotted
+number of reruns (the test will be marked as 'flaky' in the report).
+
+Changes in this version include:
+
+New features:
+o RNG-156: New "DirichletSampler" class to sample from a Dirichlet distribution.
+o RNG-137: New "StableSampler" class to sample from a stable distribution.
+o RNG-138: New "CompositeSamplers" class to sample from a weighted combination of samplers.
+o RNG-140: New "LongSampler" interface for sampling a long. New "UniformLongSampler" to sample
+           from a range.
+o RNG-151: New "ZigguratSampler" implementation of the modified "Ziggurat" algorithm for
+           Gaussian and exponential sampling.
+o RNG-147: New "LevySampler" to sample from a Levy distribution.
+o RNG-145: "ContinuousUniformSampler": Add optional support for an open interval: (lower, upper).
+o RNG-143: "RandomSource": Add an instance create method. Deprecate the static create method.
+o RNG-136: New "ObjectSampler<T>" and "SharedStateObjectSampler<T>" interfaces.
+           These interfaces are implemented by samplers returning an object.
+           This changes the functional compatibility of existing samplers that implement
+           SharedStatedSampler<R>: CollectionSampler<T>; CombinationSampler;
+           DiscreteProbabilityCollectionSampler<T>; PermutationSampler; and UnitSphereSampler.
+           The method signature of the SharedStateSampler<R> interface remains
+           'public R withUniformRandomProvider(UniformRandomProvider)'. The result can still be
+           assigned to an instance of the same class R; it can no longer be assigned to an instance
+           of SharedStatedSampler<R>. It can now be assigned to SharedStateObjectSampler<T>
+           which can be used to generate samples of type <T>.
+           Code that assigned to SharedStatedSampler<R> should be updated.
+o RNG-135: New "TetrahedronSampler" to sample uniformly from a tetrahedron.
+o RNG-134: New "BoxSampler" to sample uniformly from a box (or hyperrectangle).
+o RNG-133: New "LineSampler" to sample uniformly on a line segment.
+o RNG-131: New "TriangleSampler" to sample uniformly from a triangle.
+o RNG-132: New "o.a.c.rng.sampling.shape" package for sampling coordinates from shapes.
+o RNG-128: New "UnitBallSampler" to generate coordinates uniformly within an n-unit ball.
+o RNG-126: "PoissonSamplerCache": Method to return a SharedStateDiscreteSampler.
+o RNG-124: Add fixed increment versions of the PCG generators.
+
+Fixed Bugs:
+o RNG-159: "ZigguratSampler.NormalizedGaussian": Corrected biased sampling within convex regions
+           at the edge of the ziggurat.
+o RNG-146: "GaussianSampler": Prevent infinite mean and standard deviation.
+o RNG-144: "AhrensDieterExponentialSampler": Avoid possible infinite loop during sampling if the
+           underlying UniformRandomProvider creates a zero for the uniform deviate.
+o RNG-130: "UnitSphereSampler": Fix 1 dimension sampling to only return vectors containing 1 or -1.
+
+Changes:
+o RNG-163: Update test suite to JUnit 5.
+o          Simplify assertions with simpler equivalent. Thanks to Arturo Bernal.
+o RNG-162: Update the minimum Java version to 1.8.
+o RNG-160: "ZigguratSampler.NormalizedGaussian": Performance improvement by extracting ziggurat
+           edge sampling to a separate method.
+o RNG-157: "UnitSphereSampler": Deprecate public constructor. Use the factory constructor to create
+           an optimal sampler.
+o RNG-155: "ZigguratNormalizedGaussianSampler": Update to a table size of 256.
+o RNG-152: Update samplers to use ZigguratSampler.NormalizedGaussian for Gaussian deviates.
+o RNG-154: Update Gaussian samplers to avoid infinity in the tails of the distribution. Applies
+           to: ZigguratNormalisedGaussianSampler; BoxMullerNormalizedGaussianSampler; and
+           BoxMullerGaussianSampler.
+o RNG-153: "UnitBallSampler": Update to use the ZigguratSampler for an exponential deviate for
+           ball point picking.
+o RNG-150: Update "LargeMeanPoissonSampler" and "GeometricSampler" to use the ZigguratSampler for
+           exponential deviates.
+o RNG-129: "UnitSphereSampler": Improve performance with specialisations for low order dimensions.
+           Added a factory constructor to create the sampler.
+
+
+For complete information on Apache Commons RNG, including instructions on how to submit bug reports,
+patches, or suggestions for improvement, see the Apache Commons RNG website:
+
+https://commons.apache.org/proper/commons-rng/
+
+
+=============================================================================
+
               Apache Commons RNG 1.3 RELEASE NOTES
 
 The Apache Commons RNG team is pleased to announce the release of Apache Commons RNG 1.3
diff --git a/commons-rng-client-api/pom.xml b/commons-rng-client-api/pom.xml
index 82eb825..b6cb383 100644
--- a/commons-rng-client-api/pom.xml
+++ b/commons-rng-client-api/pom.xml
@@ -21,11 +21,11 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-rng-parent</artifactId>
-    <version>1.4-SNAPSHOT</version>
+    <version>1.4</version>
   </parent>
 
   <artifactId>commons-rng-client-api</artifactId>
-  <version>1.4-SNAPSHOT</version>
+  <version>1.4</version>
   <name>Apache Commons RNG Client API</name>
 
   <description>API for client code that uses random numbers generators.</description>
diff --git a/commons-rng-client-api/src/site/site.xml b/commons-rng-client-api/src/site/site.xml
index 71ecebd..ac31a36 100644
--- a/commons-rng-client-api/src/site/site.xml
+++ b/commons-rng-client-api/src/site/site.xml
@@ -28,6 +28,8 @@
       <item name="Overview" href="index.html"/>
       <item name="Latest API docs (development)"
             href="apidocs/index.html"/>
+      <item name="Javadoc (1.4 release)"
+            href="https://commons.apache.org/rng/commons-rng-client-api/javadocs/api-1.4/index.html"/>
       <item name="Javadoc (1.3 release)"
             href="https://commons.apache.org/rng/commons-rng-client-api/javadocs/api-1.3/index.html"/>
       <item name="Javadoc (1.2 release)"
diff --git a/commons-rng-core/pom.xml b/commons-rng-core/pom.xml
index fa683cf..654d350 100644
--- a/commons-rng-core/pom.xml
+++ b/commons-rng-core/pom.xml
@@ -21,11 +21,11 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-rng-parent</artifactId>
-    <version>1.4-SNAPSHOT</version>
+    <version>1.4</version>
   </parent>
 
   <artifactId>commons-rng-core</artifactId>
-  <version>1.4-SNAPSHOT</version>
+  <version>1.4</version>
   <name>Apache Commons RNG Core</name>
 
   <description>Pure Java implementations of random numbers generator algorithms.
@@ -49,7 +49,7 @@
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-rng-client-api</artifactId>
-      <version>1.4-SNAPSHOT</version>
+      <version>1.4</version>
     </dependency>
     <dependency>
       <!-- For testing floating point precision -->
diff --git a/commons-rng-core/src/site/site.xml b/commons-rng-core/src/site/site.xml
index 56e2672..ea92b39 100644
--- a/commons-rng-core/src/site/site.xml
+++ b/commons-rng-core/src/site/site.xml
@@ -28,6 +28,8 @@
       <item name="Overview" href="index.html"/>
       <item name="Latest API docs (development)"
             href="apidocs/index.html"/>
+      <item name="Javadoc (1.4 release)"
+            href="https://commons.apache.org/rng/commons-rng-core/javadocs/api-1.4/index.html"/>
       <item name="Javadoc (1.3 release)"
             href="https://commons.apache.org/rng/commons-rng-core/javadocs/api-1.3/index.html"/>
       <item name="Javadoc (1.2 release)"
diff --git a/commons-rng-examples/examples-jmh/pom.xml b/commons-rng-examples/examples-jmh/pom.xml
index 3788d43..804bc06 100644
--- a/commons-rng-examples/examples-jmh/pom.xml
+++ b/commons-rng-examples/examples-jmh/pom.xml
@@ -21,11 +21,11 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-rng-examples</artifactId>
-    <version>1.4-SNAPSHOT</version>
+    <version>1.4</version>
   </parent>
 
   <artifactId>commons-rng-examples-jmh</artifactId>
-  <version>1.4-SNAPSHOT</version>
+  <version>1.4</version>
   <name>Apache Commons RNG JMH Benchmark</name>
 
   <description>Code for running JMH benchmarks that assess the performance of the generators.
diff --git a/commons-rng-examples/examples-jpms/jpms-app/pom.xml b/commons-rng-examples/examples-jpms/jpms-app/pom.xml
index fa16173..b8cba51 100644
--- a/commons-rng-examples/examples-jpms/jpms-app/pom.xml
+++ b/commons-rng-examples/examples-jpms/jpms-app/pom.xml
@@ -21,11 +21,11 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-rng-examples-jpms</artifactId>
-    <version>1.4-SNAPSHOT</version>
+    <version>1.4</version>
   </parent>
 
   <artifactId>commons-rng-examples-jpms-app</artifactId>
-  <version>1.4-SNAPSHOT</version>
+  <version>1.4</version>
   <name>Apache Commons RNG JPMS Module Example (Application)</name>
 
   <description>Testing JPMS. Code in this module is not part of the public API.</description>
@@ -39,7 +39,7 @@
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-rng-examples-jpms-lib</artifactId>
-      <version>1.4-SNAPSHOT</version>
+      <version>1.4</version>
     </dependency>
   </dependencies>
 
diff --git a/commons-rng-examples/examples-jpms/jpms-lib/pom.xml b/commons-rng-examples/examples-jpms/jpms-lib/pom.xml
index b2a1e98..5216cc0 100644
--- a/commons-rng-examples/examples-jpms/jpms-lib/pom.xml
+++ b/commons-rng-examples/examples-jpms/jpms-lib/pom.xml
@@ -21,11 +21,11 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-rng-examples-jpms</artifactId>
-    <version>1.4-SNAPSHOT</version>
+    <version>1.4</version>
   </parent>
 
   <artifactId>commons-rng-examples-jpms-lib</artifactId>
-  <version>1.4-SNAPSHOT</version>
+  <version>1.4</version>
   <name>Apache Commons RNG JPMS Module Example (Library)</name>
 
   <description>Testing JPMS. Code in this module is not part of the public API.</description>
diff --git a/commons-rng-examples/examples-jpms/pom.xml b/commons-rng-examples/examples-jpms/pom.xml
index 017e7a3..dd8495b 100644
--- a/commons-rng-examples/examples-jpms/pom.xml
+++ b/commons-rng-examples/examples-jpms/pom.xml
@@ -21,11 +21,11 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-rng-examples</artifactId>
-    <version>1.4-SNAPSHOT</version>
+    <version>1.4</version>
   </parent>
 
   <artifactId>commons-rng-examples-jpms</artifactId>
-  <version>1.4-SNAPSHOT</version>
+  <version>1.4</version>
   <packaging>pom</packaging>
   <name>Apache Commons RNG JPMS Integration Test</name>
 
diff --git a/commons-rng-examples/examples-quadrature/pom.xml b/commons-rng-examples/examples-quadrature/pom.xml
index 787fb61..ff8666f 100644
--- a/commons-rng-examples/examples-quadrature/pom.xml
+++ b/commons-rng-examples/examples-quadrature/pom.xml
@@ -21,11 +21,11 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-rng-examples</artifactId>
-    <version>1.4-SNAPSHOT</version>
+    <version>1.4</version>
   </parent>
 
   <artifactId>commons-rng-examples-quadrature</artifactId>
-  <version>1.4-SNAPSHOT</version>
+  <version>1.4</version>
   <name>Apache Commons RNG Quadrature Example</name>
 
   <description>Contains examples for computing numerical quadrature (integration).
diff --git a/commons-rng-examples/examples-sampling/pom.xml b/commons-rng-examples/examples-sampling/pom.xml
index e01b29a..89b4355 100644
--- a/commons-rng-examples/examples-sampling/pom.xml
+++ b/commons-rng-examples/examples-sampling/pom.xml
@@ -21,11 +21,11 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-rng-examples</artifactId>
-    <version>1.4-SNAPSHOT</version>
+    <version>1.4</version>
   </parent>
 
   <artifactId>commons-rng-examples-sampling</artifactId>
-  <version>1.4-SNAPSHOT</version>
+  <version>1.4</version>
   <!-- This name is used in the shaded jar to provide the application title for the version information. -->
   <name>Apache Commons RNG Examples Sampling Utilities</name>
 
diff --git a/commons-rng-examples/examples-stress/pom.xml b/commons-rng-examples/examples-stress/pom.xml
index ce1f2d6..7053f87 100644
--- a/commons-rng-examples/examples-stress/pom.xml
+++ b/commons-rng-examples/examples-stress/pom.xml
@@ -21,11 +21,11 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-rng-examples</artifactId>
-    <version>1.4-SNAPSHOT</version>
+    <version>1.4</version>
   </parent>
 
   <artifactId>commons-rng-examples-stress</artifactId>
-  <version>1.4-SNAPSHOT</version>
+  <version>1.4</version>
   <!-- This name is used in the shaded jar to provide the application title for the version information. -->
   <name>Apache Commons RNG Examples Stress Utilities</name>
 
diff --git a/commons-rng-examples/pom.xml b/commons-rng-examples/pom.xml
index 49fd72b..59b0d9a 100644
--- a/commons-rng-examples/pom.xml
+++ b/commons-rng-examples/pom.xml
@@ -21,11 +21,11 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-rng-parent</artifactId>
-    <version>1.4-SNAPSHOT</version>
+    <version>1.4</version>
   </parent>
 
   <artifactId>commons-rng-examples</artifactId>
-  <version>1.4-SNAPSHOT</version>
+  <version>1.4</version>
   <packaging>pom</packaging>
   <name>Apache Commons RNG Examples</name>
 
@@ -58,17 +58,17 @@
       <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-rng-simple</artifactId>
-        <version>1.4-SNAPSHOT</version>
+        <version>1.4</version>
       </dependency>
       <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-rng-sampling</artifactId>
-        <version>1.4-SNAPSHOT</version>
+        <version>1.4</version>
       </dependency>
       <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-rng-client-api</artifactId>
-        <version>1.4-SNAPSHOT</version>
+        <version>1.4</version>
       </dependency>
       <dependency>
         <groupId>info.picocli</groupId>
diff --git a/commons-rng-sampling/pom.xml b/commons-rng-sampling/pom.xml
index b6e16fc..508a6c6 100644
--- a/commons-rng-sampling/pom.xml
+++ b/commons-rng-sampling/pom.xml
@@ -21,11 +21,11 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-rng-parent</artifactId>
-    <version>1.4-SNAPSHOT</version>
+    <version>1.4</version>
   </parent>
 
   <artifactId>commons-rng-sampling</artifactId>
-  <version>1.4-SNAPSHOT</version>
+  <version>1.4</version>
   <name>Apache Commons RNG Sampling</name>
 
   <description>The Apache Commons RNG Sampling module provides samplers
@@ -46,13 +46,13 @@
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-rng-client-api</artifactId>
-      <version>1.4-SNAPSHOT</version>
+      <version>1.4</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-rng-simple</artifactId>
-      <version>1.4-SNAPSHOT</version>
+      <version>1.4</version>
       <scope>test</scope>
     </dependency>
 
diff --git a/commons-rng-sampling/src/site/site.xml b/commons-rng-sampling/src/site/site.xml
index c0e5cad..6ab2ed6 100644
--- a/commons-rng-sampling/src/site/site.xml
+++ b/commons-rng-sampling/src/site/site.xml
@@ -28,6 +28,8 @@
       <item name="Overview" href="index.html"/>
       <item name="Latest API docs (development)"
             href="apidocs/index.html"/>
+      <item name="Javadoc (1.4 release)"
+            href="https://commons.apache.org/rng/commons-rng-sampling/javadocs/api-1.4/index.html"/>
       <item name="Javadoc (1.3 release)"
             href="https://commons.apache.org/rng/commons-rng-sampling/javadocs/api-1.3/index.html"/>
       <item name="Javadoc (1.2 release)"
diff --git a/commons-rng-simple/pom.xml b/commons-rng-simple/pom.xml
index faabe26..f7a7761 100644
--- a/commons-rng-simple/pom.xml
+++ b/commons-rng-simple/pom.xml
@@ -21,11 +21,11 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-rng-parent</artifactId>
-    <version>1.4-SNAPSHOT</version>
+    <version>1.4</version>
   </parent>
 
   <artifactId>commons-rng-simple</artifactId>
-  <version>1.4-SNAPSHOT</version>
+  <version>1.4</version>
   <name>Apache Commons RNG Simple</name>
 
   <description>Simple API for instantiating random numbers generators.</description>
@@ -46,7 +46,7 @@
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-rng-core</artifactId>
-      <version>1.4-SNAPSHOT</version>
+      <version>1.4</version>
     </dependency>
 
     <dependency>
diff --git a/commons-rng-simple/src/site/site.xml b/commons-rng-simple/src/site/site.xml
index 8b2125e..43d021a 100644
--- a/commons-rng-simple/src/site/site.xml
+++ b/commons-rng-simple/src/site/site.xml
@@ -28,6 +28,8 @@
       <item name="Overview" href="index.html"/>
       <item name="Latest API docs (development)"
             href="apidocs/index.html"/>
+      <item name="Javadoc (1.4 release)"
+            href="https://commons.apache.org/rng/commons-rng-simple/javadocs/api-1.4/index.html"/>
       <item name="Javadoc (1.3 release)"
             href="https://commons.apache.org/rng/commons-rng-simple/javadocs/api-1.3/index.html"/>
       <item name="Javadoc (1.2 release)"
diff --git a/dist-archive/pom.xml b/dist-archive/pom.xml
index 6834677..34fc931 100644
--- a/dist-archive/pom.xml
+++ b/dist-archive/pom.xml
@@ -23,11 +23,11 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-rng-parent</artifactId>
-    <version>1.4-SNAPSHOT</version>
+    <version>1.4</version>
   </parent>
 
   <artifactId>commons-rng</artifactId>
-  <version>1.4-SNAPSHOT</version>
+  <version>1.4</version>
   <packaging>pom</packaging>
   <name>Apache Commons RNG (full distribution)</name>
   <description>This module creates the Apache Commons RNG distribution.</description>
@@ -67,18 +67,18 @@
         <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-rng-client-api</artifactId>
-          <version>1.4-SNAPSHOT</version>
+          <version>1.4</version>
         </dependency>
         <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-rng-client-api</artifactId>
-          <version>1.4-SNAPSHOT</version>
+          <version>1.4</version>
           <classifier>sources</classifier>
         </dependency>
         <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-rng-client-api</artifactId>
-          <version>1.4-SNAPSHOT</version>
+          <version>1.4</version>
           <classifier>javadoc</classifier>
         </dependency>
 
@@ -86,18 +86,18 @@
         <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-rng-core</artifactId>
-          <version>1.4-SNAPSHOT</version>
+          <version>1.4</version>
         </dependency>
         <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-rng-core</artifactId>
-          <version>1.4-SNAPSHOT</version>
+          <version>1.4</version>
           <classifier>sources</classifier>
         </dependency>
         <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-rng-core</artifactId>
-          <version>1.4-SNAPSHOT</version>
+          <version>1.4</version>
           <classifier>javadoc</classifier>
         </dependency>
 
@@ -105,18 +105,18 @@
         <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-rng-simple</artifactId>
-          <version>1.4-SNAPSHOT</version>
+          <version>1.4</version>
         </dependency>
         <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-rng-simple</artifactId>
-          <version>1.4-SNAPSHOT</version>
+          <version>1.4</version>
           <classifier>sources</classifier>
         </dependency>
         <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-rng-simple</artifactId>
-          <version>1.4-SNAPSHOT</version>
+          <version>1.4</version>
           <classifier>javadoc</classifier>
         </dependency>
 
@@ -124,18 +124,18 @@
         <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-rng-sampling</artifactId>
-          <version>1.4-SNAPSHOT</version>
+          <version>1.4</version>
         </dependency>
         <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-rng-sampling</artifactId>
-          <version>1.4-SNAPSHOT</version>
+          <version>1.4</version>
           <classifier>sources</classifier>
         </dependency>
         <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-rng-sampling</artifactId>
-          <version>1.4-SNAPSHOT</version>
+          <version>1.4</version>
           <classifier>javadoc</classifier>
         </dependency>
 
diff --git a/docs-archive/pom.xml b/docs-archive/pom.xml
index d7eeaa1..ba23e30 100644
--- a/docs-archive/pom.xml
+++ b/docs-archive/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-rng-parent</artifactId>
-    <version>1.4-SNAPSHOT</version>
+    <version>1.4</version>
   </parent>
 
   <artifactId>commons-rng-docs</artifactId>
@@ -49,22 +49,22 @@
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-rng-client-api</artifactId>
-      <version>1.4-SNAPSHOT</version>
+      <version>1.4</version>
     </dependency>
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-rng-core</artifactId>
-      <version>1.4-SNAPSHOT</version>
+      <version>1.4</version>
     </dependency>
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-rng-simple</artifactId>
-      <version>1.4-SNAPSHOT</version>
+      <version>1.4</version>
     </dependency>
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-rng-sampling</artifactId>
-      <version>1.4-SNAPSHOT</version>
+      <version>1.4</version>
     </dependency>
   </dependencies>
 
diff --git a/pom.xml b/pom.xml
index ca65a7e..c81f574 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,7 +24,7 @@
   </parent>
 
   <artifactId>commons-rng-parent</artifactId>
-  <version>1.4-SNAPSHOT</version>
+  <version>1.4</version>
   <packaging>pom</packaging>
   <name>Apache Commons RNG</name>
   <description>The Apache Commons RNG project provides pure-Java implementation of pseudo-random generators.</description>
@@ -42,8 +42,8 @@
     <!-- Java 9+ -->
     <commons.automatic.module.name>org.apache.commons.rng.parent</commons.automatic.module.name>
     <!-- do not use snapshot suffix here -->
-    <commons.release.version>1.3</commons.release.version>
-    <commons.bc.version>${commons.release.version}</commons.bc.version>
+    <commons.release.version>1.4</commons.release.version>
+    <commons.bc.version>1.3</commons.bc.version>
     <commons.rc.version>RC1</commons.rc.version>
     <commons.release.desc>(requires Java 8+)</commons.release.desc>
     <commons.binary.suffix>-bin</commons.binary.suffix>
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 62956d8..4f6c50d 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -53,7 +53,7 @@
   </properties>
   <body>
 
-    <release version="1.4" date="TBD" description="
+    <release version="1.4" date="2021-09-06" description="
 This is a minor release of Apache Commons RNG, containing a
 few new features and performance improvements.
 Apache Commons RNG 1.4 contains the following library modules:
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-1.4.txt b/src/site/resources/release-notes/RELEASE-NOTES-1.4.txt
new file mode 100644
index 0000000..3e5b3a7
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-1.4.txt
@@ -0,0 +1,397 @@
+
+              Apache Commons RNG 1.4 RELEASE NOTES
+
+The Apache Commons RNG team is pleased to announce the release of Apache Commons RNG 1.4
+
+The Apache Commons RNG project provides pure-Java implementation
+of pseudo-random generators.
+
+This is a minor release of Apache Commons RNG, containing a
+few new features and performance improvements.
+
+Apache Commons RNG 1.4 contains the following library modules:
+ commons-rng-client-api (requires Java 8)
+ commons-rng-core (requires Java 8)
+ commons-rng-simple (requires Java 8)
+ commons-rng-sampling (requires Java 8)
+
+The code in module 'commons-rng-core' should not be accessed
+directly by applications as a future release might make use of
+the JPMS modularization feature available in Java 11+.
+
+Additional code is provided in the following modules:
+ commons-rng-examples-quadrature (requires Java 8)
+ commons-rng-examples-jmh (requires Java 8)
+ commons-rng-examples-sampling (requires Java 8)
+ commons-rng-examples-stress (requires Java 8)
+ commons-rng-examples-jpms (requires Java 11)
+
+It is however not part of the official API and no compatibility
+should be expected in subsequent releases.
+
+It must be noted that, due to the nature of random number generation, some unit tests
+are bound to fail with some probability. The 'maven-surefire-plugin' is configured
+to re-run tests that fail, and pass the build if they succeed within the allotted
+number of reruns (the test will be marked as 'flaky' in the report).
+
+Changes in this version include:
+
+New features:
+o RNG-156: New "DirichletSampler" class to sample from a Dirichlet distribution.
+o RNG-137: New "StableSampler" class to sample from a stable distribution.
+o RNG-138: New "CompositeSamplers" class to sample from a weighted combination of samplers.
+o RNG-140: New "LongSampler" interface for sampling a long. New "UniformLongSampler" to sample
+           from a range.
+o RNG-151: New "ZigguratSampler" implementation of the modified "Ziggurat" algorithm for
+           Gaussian and exponential sampling.
+o RNG-147: New "LevySampler" to sample from a Levy distribution.
+o RNG-145: "ContinuousUniformSampler": Add optional support for an open interval: (lower, upper).
+o RNG-143: "RandomSource": Add an instance create method. Deprecate the static create method.
+o RNG-136: New "ObjectSampler<T>" and "SharedStateObjectSampler<T>" interfaces.
+           These interfaces are implemented by samplers returning an object.
+           This changes the functional compatibility of existing samplers that implement
+           SharedStatedSampler<R>: CollectionSampler<T>; CombinationSampler;
+           DiscreteProbabilityCollectionSampler<T>; PermutationSampler; and UnitSphereSampler.
+           The method signature of the SharedStateSampler<R> interface remains
+           'public R withUniformRandomProvider(UniformRandomProvider)'. The result can still be
+           assigned to an instance of the same class R; it can no longer be assigned to an instance
+           of SharedStatedSampler<R>. It can now be assigned to SharedStateObjectSampler<T>
+           which can be used to generate samples of type <T>.
+           Code that assigned to SharedStatedSampler<R> should be updated.
+o RNG-135: New "TetrahedronSampler" to sample uniformly from a tetrahedron.
+o RNG-134: New "BoxSampler" to sample uniformly from a box (or hyperrectangle).
+o RNG-133: New "LineSampler" to sample uniformly on a line segment.
+o RNG-131: New "TriangleSampler" to sample uniformly from a triangle.
+o RNG-132: New "o.a.c.rng.sampling.shape" package for sampling coordinates from shapes.
+o RNG-128: New "UnitBallSampler" to generate coordinates uniformly within an n-unit ball.
+o RNG-126: "PoissonSamplerCache": Method to return a SharedStateDiscreteSampler.
+o RNG-124: Add fixed increment versions of the PCG generators.
+
+Fixed Bugs:
+o RNG-159: "ZigguratSampler.NormalizedGaussian": Corrected biased sampling within convex regions
+           at the edge of the ziggurat.
+o RNG-146: "GaussianSampler": Prevent infinite mean and standard deviation.
+o RNG-144: "AhrensDieterExponentialSampler": Avoid possible infinite loop during sampling if the
+           underlying UniformRandomProvider creates a zero for the uniform deviate.
+o RNG-130: "UnitSphereSampler": Fix 1 dimension sampling to only return vectors containing 1 or -1.
+
+Changes:
+o RNG-163: Update test suite to JUnit 5.
+o          Simplify assertions with simpler equivalent. Thanks to Arturo Bernal.
+o RNG-162: Update the minimum Java version to 1.8.
+o RNG-160: "ZigguratSampler.NormalizedGaussian": Performance improvement by extracting ziggurat
+           edge sampling to a separate method.
+o RNG-157: "UnitSphereSampler": Deprecate public constructor. Use the factory constructor to create
+           an optimal sampler.
+o RNG-155: "ZigguratNormalizedGaussianSampler": Update to a table size of 256.
+o RNG-152: Update samplers to use ZigguratSampler.NormalizedGaussian for Gaussian deviates.
+o RNG-154: Update Gaussian samplers to avoid infinity in the tails of the distribution. Applies
+           to: ZigguratNormalisedGaussianSampler; BoxMullerNormalizedGaussianSampler; and
+           BoxMullerGaussianSampler.
+o RNG-153: "UnitBallSampler": Update to use the ZigguratSampler for an exponential deviate for
+           ball point picking.
+o RNG-150: Update "LargeMeanPoissonSampler" and "GeometricSampler" to use the ZigguratSampler for
+           exponential deviates.
+o RNG-129: "UnitSphereSampler": Improve performance with specialisations for low order dimensions.
+           Added a factory constructor to create the sampler.
+
+
+For complete information on Apache Commons RNG, including instructions on how to submit bug reports,
+patches, or suggestions for improvement, see the Apache Commons RNG website:
+
+https://commons.apache.org/proper/commons-rng/
+
+
+=============================================================================
+
+              Apache Commons RNG 1.3 RELEASE NOTES
+
+The Apache Commons RNG team is pleased to announce the release of Apache Commons RNG 1.3
+
+The Apache Commons RNG project provides pure-Java implementation of pseudo-random generators.
+
+This is a minor release of Apache Commons RNG, containing a
+few new features and performance improvements.
+
+Apache Commons RNG 1.3 contains the following library modules:
+ commons-rng-client-api (requires Java 6)
+ commons-rng-core (requires Java 6)
+ commons-rng-simple (requires Java 6)
+ commons-rng-sampling (requires Java 6)
+
+The code in module 'commons-rng-core' should not be accessed
+directly by applications as a future release might make use of
+the JPMS modularization feature available in Java 9+.
+
+Additional code is provided in the following module:
+  commons-rng-examples (requires Java 9)
+It is however not part of the official API and no compatibility
+should be expected in subsequent releases.
+
+We would like to also note that unit tests in module 'commons-rng-sampling'
+are bound to fail with some probability; this is expected due to the nature
+of random number generation.  The 'maven-surefire-plugin' can be configured
+to re-run tests that fail and pass the build if they succeed (the test will
+be marked as 'flaky' in the report).
+
+New features:
+o RNG-117:  Additional "XorShiRo" family generators. This adds 4 PlusPlus general purpose variants
+        of existing generators and 3 variants of a large state (1024-bit) generator.
+o RNG-117:  "RandomSource": Support creating a byte[] seed suitable for the implementing
+        generator class.
+o RNG-116:  "RandomSource": Expose interfaces supported by the implementing generator class
+        with methods isJumpable() and isLongJumpable().
+o RNG-111:  New "JenkinsSmallFast32" and "JenkinsSmallFast64" generators.
+o RNG-19:  "JDKRandomWrapper": Wraps an instance of java.util.Random for use as a
+        UniformRandomProvider. Can wrap a SecureRandom to use functionality
+        provided by the JDK for cryptographic random numbers and platform dependent
+        features such as reading /dev/urandom on Linux.
+o RNG-112:  New "DotyHumphreySmallFastCounting32" and "DotyHumphreySmallFastCounting64" generators.
+o RNG-85:  New "MiddleSquareWeylSequence" generator.
+o RNG-110:  Factory methods for Discrete and Continuous distribution samplers. The factory method
+        can choose the optimal implementation for the distribution parameters.
+o RNG-84:  New Permuted Congruential Generators (PCG) from the PCG family.
+        Added the LCG and MCG 32 bit output versions of the XSH-RS and XSH-RR operations,
+        along with the 64 bit RXS-M-XS edition. Thanks to Abhishek Singh Dhadwal.
+o RNG-102:  New "SharedStateSampler" interface to allow a sampler to create a new instance with
+        a new source of randomness. Any pre-computed state can be shared between the samplers.
+o RNG-108:  Update "SeedFactory" to improve performance.
+o RNG-99:  New "AliasMethodDiscreteSampler" that can sample from any discrete distribution defined
+        by an array of probabilities. Set-up is O(n) time and sampling is O(1) time.
+o RNG-100:  New "GuideTableDiscreteSampler" that can sample from any discrete distribution defined
+        by an array of probabilities.
+o RNG-98:  New "LongJumpableUniformRandomProvider" interface extends JumpableUniformRandomProvider
+        with a long jump method.
+o RNG-97:  New "JumpableUniformRandomProvider" interface provides a jump method that advances
+        the generator a large number of steps of the output sequence in a single operation. A
+        copy is returned allowing repeat invocations to create a series of generators
+        for use in parallel computations.
+o RNG-101:  New "MarsagliaTsangWangDiscreteSampler" that provides samples from a discrete
+        distribution stored as a look-up table using a single random integer deviate. Computes
+        tables for the Poisson or Binomial distributions, and generically any provided discrete
+        probability distribution.
+o RNG-91:  New "KempSmallMeanPoissonSampler" that provides Poisson samples using only 1 random
+        deviate per sample. This algorithm outperforms the SmallMeanPoissonSampler
+        when the generator is slow.
+o RNG-70:  New "XorShiRo" family of generators. This adds 6 new general purpose generators with
+        different periods and 4 related generators with improved performance for floating-point
+        generation.
+o RNG-82:  New "XorShift1024StarPhi" generator. This is a modified implementation of
+        XorShift1024Star that improves randomness of the output sequence. The XOR_SHIFT_1024_S
+        enum has been marked deprecated as a note to users to switch to the new
+        XOR_SHIFT_1024_S_PHI version.
+o RNG-78:  New "ThreadLocalRandomSource" class provides thread safe access to random generators.
+o RNG-79:  Benchmark methods for producing nextDouble and nextFloat.
+o RNG-72:  Add new JMH benchmark ConstructionPerformance.
+o RNG-71:  Validate parameters for the distribution samplers.
+o RNG-67:  Instructions for how to build and run the examples-stress code.
+o RNG-69:  New "GeometricSampler" class.
+
+Fixed Bugs:
+o RNG-115:  "JDKRandom": Fixed the restore state method to function when the instance has not
+        previously been used to save state.
+o RNG-96:  "AhrensDieterMarsagliaTsangGammaSampler": Fix parameter interpretation so that alpha
+        is a 'shape' parameter and theta is a 'scale' parameter. This reverses the functionality
+        of the constructor parameters from previous versions. Dependent code should be checked
+        and parameters reversed to ensure existing functionality is maintained.
+o RNG-93:  "SmallMeanPoissonSampler": Requires the Poisson probability for p(x=0) to be positive
+        setting an upper bound on the mean of approximately 744.44.
+o RNG-92:  "LargeMeanPoissonSampler": Requires mean >= 1.
+
+Changes:
+o RNG-122:  "SeedFactory": Use XoRoShiRo1024PlusPlus as the default source of randomness.
+o RNG-121:  "ChengBetaSampler": Algorithms for different distribution parameters have
+        been delegated to specialised classes.
+o RNG-120:  Update security of serialization code for java.util.Random instances. Implement
+        look-ahead deserialization or remove the use of ObjectInputStream.readObject().
+o RNG-76:  "SplitMix64": Added primitive long constructor.
+o RNG-119:  Add LongJumpable support to XoShiRo generators previously only supporting Jumpable.
+o RNG-114:  "ListSampler": Select the shuffle algorithm based on the list type. This improves
+        performance for non-RandomAccess lists such as LinkedList.
+o RNG-109:  "DiscreteProbabilityCollectionSampler": Use a faster enumerated probability
+        distribution sampler to replace the binary search algorithm.
+o RNG-90:  "BaseProvider": Updated to use faster algorithm for nextInt(int).
+o RNG-95:  "DiscreteUniformSampler": Updated to use faster algorithms for generation of ranges.
+o RNG-106:  Ensure SeedFactory produces non-zero seed arrays. This avoids invalid seeding of
+        generators that cannot recover from a seed of zeros.
+o RNG-103:  "LargeMeanPoissonSampler: Switch from SmallMeanPoissonSampler to use
+        KempSmallMeanPoissonSampler for the fractional mean sample.
+o RNG-75:  "RandomSource.create(...)": Refactor internal components to allow custom seeding routines
+        per random source. Improvements were made to the speed of creating generators with small
+        seeds.
+o RNG-77:  "NumberFactory": Improve performance of int and long array to/from byte array
+        conversions.
+o RNG-88:  Update the generation performance JMH benchmarks to have a reference baseline.
+o RNG-87:  "MultiplyWithCarry256": Performance improvement by advancing state one step per sample.
+o RNG-81:  "NumberFactory": Evenly sample all dyadic rationals between 0 and 1.
+o RNG-73:  Add the methods used from UniformRandomProvider to each sampler in the sampling module.
+o RNG-74:  "DiscreteUniformSampler": Algorithms for small and large integer ranges have
+        been delegated to specialised classes.
+o RNG-68:  "AhrensDieterMarsagliaTsangGammaSampler": Algorithms for small and large theta have
+        been delegated to specialised classes.
+
+
+For complete information on Apache Commons RNG, including instructions on how to submit bug reports,
+patches, or suggestions for improvement, see the Apache Commons RNG website:
+
+https://commons.apache.org/proper/commons-rng/
+
+=============================================================================
+
+              Apache Commons RNG 1.2 RELEASE NOTES
+
+The Apache Commons RNG team is pleased to announce the release of Apache Commons RNG 1.2
+
+The Apache Commons RNG project provides pure-Java implementation of pseudo-random generators.
+
+This is a minor release of Apache Commons RNG, containing a
+few new features and performance improvements.
+
+Apache Commons RNG 1.2 contains the following library modules:
+ commons-rng-client-api (requires Java 6)
+ commons-rng-core (requires Java 6)
+ commons-rng-simple (requires Java 6)
+ commons-rng-sampling (requires Java 6)
+
+The code in module 'commons-rng-core' should not be accessed
+directly by applications as a future release might make use of
+the JPMS modularization feature available in Java 9+.
+
+Additional code is provided in the following module:
+  commons-rng-examples (requires Java 9)
+It is however not part of the official API and no compatibility
+should be expected in subsequent releases.
+
+We would like to also note that unit tests in module 'commons-rng-sampling'
+are bound to fail with some probability; this is expected due to the nature
+of random number generation.  The 'maven-surefire-plugin' can be configured
+to re-run tests that fail and pass the build if they succeed (the test will
+be marked as 'flaky' in the report).
+
+Changes in this version include:
+
+New features:
+o RNG-62:  New "CombinationSampler" class. Thanks to Alex D. Herbert.
+
+Fixed Bugs:
+o RNG-59:  Use JDK's "SecureRandom" to seed the "SeedFactory".
+o RNG-56:  "ZigguratNormalizedGaussianSampler": Missing statements in least used branch.
+o RNG-55:  "UnitSphereSampler": Prevent returning NaN components and forbid
+        negative dimension. Thanks to Alex D. Herbert.
+
+Changes:
+o RNG-63:  "NumberFactory": Some methods have become obsolete following RNG-57.
+o RNG-64:  "PermutationSampler" and "CombinationSampler" shared code moved to a utility class.
+        Thanks to Alex D. Herbert.
+o RNG-61:  "PermutationSampler": Performance improvement. Thanks to Alex D. Herbert.
+o RNG-57:  Cache for using up all the bits provided by the underlying source of randomness.
+        Thanks to Alex D. Herbert.
+o RNG-60:  Use random seeds for unit testing.
+o RNG-52:  Set conservative upper bound in "LargePoissonSampler" to avoid truncation.
+o RNG-58:  Allow part of RNG state to be contained in base classes, e.g. to enable
+        caching in common code (see RNG-57).
+o RNG-51:  "PoissonSampler": Performance improvement. Thanks to Alex D. Herbert.
+
+
+For complete information on Apache Commons RNG, including instructions on how to submit bug reports,
+patches, or suggestions for improvement, see the Apache Commons RNG website:
+
+https://commons.apache.org/proper/commons-rng/
+
+=============================================================================
+
+              Apache Commons RNG 1.1 RELEASE NOTES
+
+The Apache Commons RNG team is pleased to announce the release of Apache Commons RNG 1.1
+
+The Apache Commons RNG project provides pure-Java implementation of pseudo-random generators.
+
+This is a minor release of Apache Commons RNG, containing a
+few new features and performance improvements.
+
+Apache Commons RNG 1.1 contains the following library modules:
+  commons-rng-client-api (requires Java 6)
+  commons-rng-core (requires Java 6)
+  commons-rng-simple (requires Java 6)
+  commons-rng-sampling (requires Java 6)
+
+The code in module 'commons-rng-core' should not be accessed
+directly by applications as a future release might make use of
+the JPMS modularization feature available in Java 9+.
+
+Additional code is provided in the following module:
+  commons-rng-examples (requires Java 9)
+It is however not part of the official API and no compatibility
+should be expected in subsequent releases.
+
+We would like to also note that unit tests in module 'commons-rng-sampling'
+are bound to fail with some probability; this is expected due to the nature
+of random number generation.  The 'maven-surefire-plugin' can be configured
+to re-run tests that fail and pass the build if they succeed (the test will
+be marked as 'flaky' in the report).
+
+Changes in this version include:
+
+New features:
+o RNG-37:  Implementation of the "Ziggurat" algorithm for Gaussian sampling.
+o RNG-47:  "DiscreteProbabilityCollectionSampler": Sampling from a collection of items
+        with user-defined probabilities (feature ported from "Commons Math").
+o RNG-43:  "LogNormalSampler" with user-defined underlying "NormalizedGaussianSampler".
+o RNG-39:  "UnitSphereSampler": generate random vectors isotropically located
+        on the surface of a sphere (feature ported from "Commons Math").
+o RNG-36:  "MarsagliaNormalizedGaussianSampler": Faster variation of the
+        Box-Muller algorithm.
+        This version is used within "AhrensDieterMarsagliaTsangGammaSampler"
+        "MarsagliaLogNormalSampler" and "PoissonSampler" (generated sequences
+        will thus differ from those generated by version 1.0 of the library).
+o RNG-35:  New generic "GaussianSampler" based on "NormalizedGaussianSampler"
+        marker interface.
+        Implementation of "BoxMullerNormalizedGaussianSampler" deprecates
+        "BoxMullerGaussianSampler".
+
+Fixed Bugs:
+o RNG-53:  Class "SamplerBase" has been deprecated.  It was meant for internal use
+        only but, through inheritance, it allows incorrect usage of the sampler
+        classes.
+
+Changes:
+o RNG-50: "PoissonSampler": Algorithms for small mean and large mean have
+        been separated into dedicated classes.  Cache precomputation has
+        been disabled as it is only marginally used and is a performance
+        hit for small sampling sets.Thanks to Alex D. Herbert.
+o RNG-42:  Use "ZigguratNormalizedGaussianSampler" within the library.
+o RNG-46:  Following RNG-43, "BoxMullerLogNormalSampler" has been deprecated.
+        Furthermore, its base class has been removed; although it is a binary
+        incompatibility, it cannot cause any problem that were not already
+        present in code using v1.0 of the library: Calls to the base class
+        would have raised a NPE.
+
+
+For complete information on Apache Commons RNG, including instructions on how to submit bug reports,
+patches, or suggestions for improvement, see the Apache Commons RNG website:
+
+https://commons.apache.org/proper/commons-rng/
+
+=============================================================================
+
+              Apache Commons RNG 1.0 RELEASE NOTES
+
+The Apache Commons RNG team is pleased to announce the release of Apache Commons RNG 1.0
+
+The Apache Commons RNG project provides pure-Java implementation of pseudo-random generators.
+
+This is the first release of Apache Commons RNG.
+Apache Commons RNG 1.0 contains the following modules:
+ commons-rng-client-api (requires Java 6)
+ commons-rng-core (requires Java 6)
+ commons-rng-simple (requires Java 6)
+ commons-rng-sampling (requires Java 6)
+ commons-rng-jmh (requires Java 6)
+ commons-rng-examples (requires Java 7)
+
+No changes defined in this version.
+
+For complete information on Apache Commons RNG, including instructions on how to submit bug reports,
+patches, or suggestions for improvement, see the Apache Commons RNG website:
+
+https://commons.apache.org/proper/commons-rng/
diff --git a/src/site/xdoc/download_rng.xml b/src/site/xdoc/download_rng.xml
index 7c6630f..cf764a2 100644
--- a/src/site/xdoc/download_rng.xml
+++ b/src/site/xdoc/download_rng.xml
@@ -51,7 +51,7 @@
  |                                                                      |
  |  <properties>                                                        |
  |    <commons.componentid>math</commons.componentid>                   |
- |    <commons.release.version>1.3</commons.release.version>            |
+ |    <commons.release.version>1.2</commons.release.version>            |
  |  </properties>                                                       |
  |                                                                      |
  +======================================================================+
@@ -113,32 +113,32 @@
       </p>
     </subsection>
     </section>
-    <section name="Apache Commons RNG 1.3 (requires Java 6+)">
+    <section name="Apache Commons RNG 1.4 (requires Java 8+)">
       <subsection name="Binaries">
         <table>
           <tr>
-              <td><a href="[preferred]/commons/rng/binaries/commons-rng-1.3-bin.tar.gz">commons-rng-1.3-bin.tar.gz</a></td>
-              <td><a href="https://www.apache.org/dist/commons/rng/binaries/commons-rng-1.3-bin.tar.gz.sha512">sha512</a></td>
-              <td><a href="https://www.apache.org/dist/commons/rng/binaries/commons-rng-1.3-bin.tar.gz.asc">pgp</a></td>
+              <td><a href="[preferred]/commons/rng/binaries/commons-rng-1.4-bin.tar.gz">commons-rng-1.4-bin.tar.gz</a></td>
+              <td><a href="https://www.apache.org/dist/commons/rng/binaries/commons-rng-1.4-bin.tar.gz.sha512">sha512</a></td>
+              <td><a href="https://www.apache.org/dist/commons/rng/binaries/commons-rng-1.4-bin.tar.gz.asc">pgp</a></td>
           </tr>
           <tr>
-              <td><a href="[preferred]/commons/rng/binaries/commons-rng-1.3-bin.zip">commons-rng-1.3-bin.zip</a></td>
-              <td><a href="https://www.apache.org/dist/commons/rng/binaries/commons-rng-1.3-bin.zip.sha512">sha512</a></td>
-              <td><a href="https://www.apache.org/dist/commons/rng/binaries/commons-rng-1.3-bin.zip.asc">pgp</a></td>
+              <td><a href="[preferred]/commons/rng/binaries/commons-rng-1.4-bin.zip">commons-rng-1.4-bin.zip</a></td>
+              <td><a href="https://www.apache.org/dist/commons/rng/binaries/commons-rng-1.4-bin.zip.sha512">sha512</a></td>
+              <td><a href="https://www.apache.org/dist/commons/rng/binaries/commons-rng-1.4-bin.zip.asc">pgp</a></td>
           </tr>
         </table>
       </subsection>
       <subsection name="Source">
         <table>
           <tr>
-              <td><a href="[preferred]/commons/rng/source/commons-rng-1.3-src.tar.gz">commons-rng-1.3-src.tar.gz</a></td>
-              <td><a href="https://www.apache.org/dist/commons/rng/source/commons-rng-1.3-src.tar.gz.sha512">sha512</a></td>
-              <td><a href="https://www.apache.org/dist/commons/rng/source/commons-rng-1.3-src.tar.gz.asc">pgp</a></td>
+              <td><a href="[preferred]/commons/rng/source/commons-rng-1.4-src.tar.gz">commons-rng-1.4-src.tar.gz</a></td>
+              <td><a href="https://www.apache.org/dist/commons/rng/source/commons-rng-1.4-src.tar.gz.sha512">sha512</a></td>
+              <td><a href="https://www.apache.org/dist/commons/rng/source/commons-rng-1.4-src.tar.gz.asc">pgp</a></td>
           </tr>
           <tr>
-              <td><a href="[preferred]/commons/rng/source/commons-rng-1.3-src.zip">commons-rng-1.3-src.zip</a></td>
-              <td><a href="https://www.apache.org/dist/commons/rng/source/commons-rng-1.3-src.zip.sha512">sha512</a></td>
-              <td><a href="https://www.apache.org/dist/commons/rng/source/commons-rng-1.3-src.zip.asc">pgp</a></td>
+              <td><a href="[preferred]/commons/rng/source/commons-rng-1.4-src.zip">commons-rng-1.4-src.zip</a></td>
+              <td><a href="https://www.apache.org/dist/commons/rng/source/commons-rng-1.4-src.zip.sha512">sha512</a></td>
+              <td><a href="https://www.apache.org/dist/commons/rng/source/commons-rng-1.4-src.zip.asc">pgp</a></td>
           </tr>
         </table>
       </subsection>
diff --git a/src/site/xdoc/release-history.xml b/src/site/xdoc/release-history.xml
index 92f6d2a..db826d7 100644
--- a/src/site/xdoc/release-history.xml
+++ b/src/site/xdoc/release-history.xml
@@ -25,6 +25,9 @@
       <table>
         <tr><th>Version</th><th>Release date (YYYY-MM-DD)</th><th>Required Java Version</th><th>Release notes</th></tr>
         <tr>
+          <td>1.4</td><td>2021-09-06</td><td>8+</td><td><a href="release-notes/RELEASE-NOTES-1.4.txt">release notes for 1.4</a></td>
+        </tr>
+        <tr>
           <td>1.3</td><td>2019-11-08</td><td>6+</td><td><a href="release-notes/RELEASE-NOTES-1.3.txt">release notes for 1.3</a></td>
         </tr>
         <tr>