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 4b0cd5138c627ceeb422a49a08efae09e5092ef5 Author: aherbert <aherb...@apache.org> AuthorDate: Mon Oct 10 11:23:13 2022 +0100 Updated project documentation following release of version 1.5 --- RELEASE-NOTES.txt | 111 +++++++++++++++++++++ commons-rng-client-api/src/site/site.xml | 2 + commons-rng-core/src/site/site.xml | 2 + commons-rng-sampling/src/site/site.xml | 2 + commons-rng-simple/src/site/site.xml | 2 + src/changes/changes.xml | 21 ++-- .../resources/release-notes/RELEASE-NOTES-1.5.txt | 111 +++++++++++++++++++++ src/site/xdoc/download_rng.xml | 26 ++--- 8 files changed, 257 insertions(+), 20 deletions(-) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 3e5b3a74..ea2338d9 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -1,4 +1,115 @@ + Apache Commons RNG 1.5 RELEASE NOTES + +The Apache Commons RNG team is pleased to announce the release of Apache Commons RNG 1.5 + +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.5 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). + +The source output type (int/long) of a RNG must maintain behavioural compatibility +between releases; derived types may break behavioural compatibility. Any functional +changes will be recorded in the release notes. + +Changes in this version include: + +New features: +o RNG-182: Add a Bill of Materials (BOM) to aid in dependency management when referencing multiple + Apache Commons RNG artifacts. The BOM should be used to ensure all imported artifacts are + compatible. +o RNG-181: LXM family to support SplittableUniformRandomProvider. This allows creating a parallel + stream of generators which will avoid sequence correlations between instances. +o RNG-180: New "SplittableUniformRandomProvider" interface to allow splitting a RNG into two + objects, each of which implements the same interface (and can be recursively split + indefinitely). Add default methods to support parallel stream implementations + of the UniformRandomProvider stream methods. +o RNG-179: "FastLoadedDiceRollerDiscreteSampler": Distribution sampler that uses the + Fast Loaded Dice Roller (FLDR) algorithm for exact sampling from a discrete + probability distribution. +o RNG-178: "JumpableUniformRandomProvider": Add support to generate Java 8 streams of new + random generator instances using the jump method. +o RNG-176: "UniformRandomProvider": Enhance the interface with default methods. Add range sample + methods with a lower and upper bound. Add support to generate Java 8 streams of sample + values. Note: This moves some method implementations from the core module to the + client-api module. Binary compatibility is supported if the versions of these modules are + matched. Users of the simple module should ensure the client-api and core modules are + resolved as matched versions and not mismatched by transitive dependency resolution. +o RNG-177: "sampling": Add samples() method to the API to generate Java 8 streams of sample values. +o RNG-168: New LXM family of random generators. Added implementations of the LXM generators + included in JDK 17. +o RNG-174: "RandomSource": Improve support for non-zero seeds. Seeding has been changed to specify + a sub-range of the seed that must not be all zero. Introduces a functional change where + byte[] seeds generated by RandomSource with a fixed UniformRandomProvider may be + different. Seeds are now reproducible across calls using an input random source in an + identical state. +o RNG-173: "BaseProvider": Add a static method to extend input int[] and long[] seeds to a + minimum length. +o RNG-167: New "TSampler" class to sample from Student's t-distribution. + +Fixed Bugs: +o RNG-175: "RandomSource.MSWS": createSeed(UniformRandomProvider) to handle a bad RNG. + This fixes an infinite loop when the RNG output is not suitably random to create a seed. +o RNG-170: Update implementations of "UniformRandomProvider.nextBytes" with a range + [start, start + length) to be consistent with the exception conditions of the + JDK array range checks. +o RNG-166: Update "LogNormalSampler" and "BoxMullerLogNormalSampler" to allow a negative mean for + the natural logarithm of the distribution values. +o RNG-165: "RejectionInversionZipfSampler": Allow a zero exponent in the Zipf sampler. + +Changes: +o RNG-171: Reduce the memory footprint of the cached boolean and int source for the IntProvider + and LongProvider. This change has a performance improvement on some JDKs. + Note: This introduces a functional compatibility change to the output from the + nextInt method of any LongProvider; the output is now little-endian as + each long is returned as the low 32-bits then the high 32-bits. + The bit output from nextBoolean is unchanged (little-endian order). +o RNG-172: "UniformLongSampler": Precompute rejection threshold for a non-power of 2 range. +o RNG-169: "RandomSource.create": Update array seed conversion to use optimum seed length. + Avoid duplication of input bytes and conversion of bytes that will be discarded. + This introduces a behavioural change for int[], long[], and int seed conversions. + Any fixed seeds used in previous versions in byte[], long or the native seed type + will create the same RNG state. All array-to-array seed conversions now use little + endian format, matching the byte[] conversion behaviour since 1.0. All seed + conversions that expand the seed size use the same generation method to provide + additional bytes. Conversion of int[] to long avoids loss of bits + changing the possible output seeds from 2^32 to 2^64. +o RNG-160: "ZigguratSampler": Performance improvement using ternary operator to sort values. + + +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.4 RELEASE NOTES The Apache Commons RNG team is pleased to announce the release of Apache Commons RNG 1.4 diff --git a/commons-rng-client-api/src/site/site.xml b/commons-rng-client-api/src/site/site.xml index ac31a360..c972543a 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.5 release)" + href="https://commons.apache.org/rng/commons-rng-client-api/javadocs/api-1.5/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)" diff --git a/commons-rng-core/src/site/site.xml b/commons-rng-core/src/site/site.xml index ea92b395..7e4b032f 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.5 release)" + href="https://commons.apache.org/rng/commons-rng-core/javadocs/api-1.5/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)" diff --git a/commons-rng-sampling/src/site/site.xml b/commons-rng-sampling/src/site/site.xml index 6ab2ed68..d5f96050 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.5 release)" + href="https://commons.apache.org/rng/commons-rng-sampling/javadocs/api-1.5/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)" diff --git a/commons-rng-simple/src/site/site.xml b/commons-rng-simple/src/site/site.xml index 43d021ad..0aac3169 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.5 release)" + href="https://commons.apache.org/rng/commons-rng-simple/javadocs/api-1.5/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)" diff --git a/src/changes/changes.xml b/src/changes/changes.xml index f51271fb..cdc44f97 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -53,7 +53,13 @@ If the output is not quite correct, check for invisible trailing spaces! </properties> <body> - <release version="1.5" date="TBD" description=" + <release version="1.6" date="TBD" description=" +This is a minor release of Apache Commons RNG, containing a +few new features and performance improvements (requires Java 8). +"> +</release> + + <release version="1.5" date="2022-09-10" description=" This is a minor release of Apache Commons RNG, containing a few new features and performance improvements. Apache Commons RNG 1.5 contains the following library modules: @@ -113,10 +119,10 @@ will be recorded in the release notes. <action dev="aherbert" type="add" issue="RNG-176"> "UniformRandomProvider": Enhance the interface with default methods. Add range sample methods with a lower and upper bound. Add support to generate Java 8 streams of sample - values. Note: This moves some method implementations from the core module to the client-api - module. Binary compatibility is supported if the versions of these modules are matched. - Users of the simple module should ensure the client-api and core modules are resolved as - matched versions and not mismatched by transitive dependency resolution. + values. Note: This moves some method implementations from the core module to the + client-api module. Binary compatibility is supported if the versions of these modules are + matched. Users of the simple module should ensure the client-api and core modules are + resolved as matched versions and not mismatched by transitive dependency resolution. </action> <action dev="aherbert" type="add" issue="RNG-177"> "sampling": Add samples() method to the API to generate Java 8 streams of sample values. @@ -128,8 +134,9 @@ will be recorded in the release notes. <action dev="aherbert" type="add" issue="RNG-174"> "RandomSource": Improve support for non-zero seeds. Seeding has been changed to specify a sub-range of the seed that must not be all zero. Introduces a functional change where - byte[] seeds generated by RandomSource with a fixed UniformRandomProvider may be different. - Seeds are now reproducible across calls using an input random source in an identical state. + byte[] seeds generated by RandomSource with a fixed UniformRandomProvider may be + different. Seeds are now reproducible across calls using an input random source in an + identical state. </action> <action dev="aherbert" type="fix" issue="RNG-175"> "RandomSource.MSWS": createSeed(UniformRandomProvider) to handle a bad RNG. diff --git a/RELEASE-NOTES.txt b/src/site/resources/release-notes/RELEASE-NOTES-1.5.txt similarity index 76% copy from RELEASE-NOTES.txt copy to src/site/resources/release-notes/RELEASE-NOTES-1.5.txt index 3e5b3a74..ea2338d9 100644 --- a/RELEASE-NOTES.txt +++ b/src/site/resources/release-notes/RELEASE-NOTES-1.5.txt @@ -1,4 +1,115 @@ + Apache Commons RNG 1.5 RELEASE NOTES + +The Apache Commons RNG team is pleased to announce the release of Apache Commons RNG 1.5 + +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.5 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). + +The source output type (int/long) of a RNG must maintain behavioural compatibility +between releases; derived types may break behavioural compatibility. Any functional +changes will be recorded in the release notes. + +Changes in this version include: + +New features: +o RNG-182: Add a Bill of Materials (BOM) to aid in dependency management when referencing multiple + Apache Commons RNG artifacts. The BOM should be used to ensure all imported artifacts are + compatible. +o RNG-181: LXM family to support SplittableUniformRandomProvider. This allows creating a parallel + stream of generators which will avoid sequence correlations between instances. +o RNG-180: New "SplittableUniformRandomProvider" interface to allow splitting a RNG into two + objects, each of which implements the same interface (and can be recursively split + indefinitely). Add default methods to support parallel stream implementations + of the UniformRandomProvider stream methods. +o RNG-179: "FastLoadedDiceRollerDiscreteSampler": Distribution sampler that uses the + Fast Loaded Dice Roller (FLDR) algorithm for exact sampling from a discrete + probability distribution. +o RNG-178: "JumpableUniformRandomProvider": Add support to generate Java 8 streams of new + random generator instances using the jump method. +o RNG-176: "UniformRandomProvider": Enhance the interface with default methods. Add range sample + methods with a lower and upper bound. Add support to generate Java 8 streams of sample + values. Note: This moves some method implementations from the core module to the + client-api module. Binary compatibility is supported if the versions of these modules are + matched. Users of the simple module should ensure the client-api and core modules are + resolved as matched versions and not mismatched by transitive dependency resolution. +o RNG-177: "sampling": Add samples() method to the API to generate Java 8 streams of sample values. +o RNG-168: New LXM family of random generators. Added implementations of the LXM generators + included in JDK 17. +o RNG-174: "RandomSource": Improve support for non-zero seeds. Seeding has been changed to specify + a sub-range of the seed that must not be all zero. Introduces a functional change where + byte[] seeds generated by RandomSource with a fixed UniformRandomProvider may be + different. Seeds are now reproducible across calls using an input random source in an + identical state. +o RNG-173: "BaseProvider": Add a static method to extend input int[] and long[] seeds to a + minimum length. +o RNG-167: New "TSampler" class to sample from Student's t-distribution. + +Fixed Bugs: +o RNG-175: "RandomSource.MSWS": createSeed(UniformRandomProvider) to handle a bad RNG. + This fixes an infinite loop when the RNG output is not suitably random to create a seed. +o RNG-170: Update implementations of "UniformRandomProvider.nextBytes" with a range + [start, start + length) to be consistent with the exception conditions of the + JDK array range checks. +o RNG-166: Update "LogNormalSampler" and "BoxMullerLogNormalSampler" to allow a negative mean for + the natural logarithm of the distribution values. +o RNG-165: "RejectionInversionZipfSampler": Allow a zero exponent in the Zipf sampler. + +Changes: +o RNG-171: Reduce the memory footprint of the cached boolean and int source for the IntProvider + and LongProvider. This change has a performance improvement on some JDKs. + Note: This introduces a functional compatibility change to the output from the + nextInt method of any LongProvider; the output is now little-endian as + each long is returned as the low 32-bits then the high 32-bits. + The bit output from nextBoolean is unchanged (little-endian order). +o RNG-172: "UniformLongSampler": Precompute rejection threshold for a non-power of 2 range. +o RNG-169: "RandomSource.create": Update array seed conversion to use optimum seed length. + Avoid duplication of input bytes and conversion of bytes that will be discarded. + This introduces a behavioural change for int[], long[], and int seed conversions. + Any fixed seeds used in previous versions in byte[], long or the native seed type + will create the same RNG state. All array-to-array seed conversions now use little + endian format, matching the byte[] conversion behaviour since 1.0. All seed + conversions that expand the seed size use the same generation method to provide + additional bytes. Conversion of int[] to long avoids loss of bits + changing the possible output seeds from 2^32 to 2^64. +o RNG-160: "ZigguratSampler": Performance improvement using ternary operator to sort values. + + +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.4 RELEASE NOTES The Apache Commons RNG team is pleased to announce the release of Apache Commons RNG 1.4 diff --git a/src/site/xdoc/download_rng.xml b/src/site/xdoc/download_rng.xml index cf764a20..842a66a6 100644 --- a/src/site/xdoc/download_rng.xml +++ b/src/site/xdoc/download_rng.xml @@ -113,32 +113,32 @@ limitations under the License. </p> </subsection> </section> - <section name="Apache Commons RNG 1.4 (requires Java 8+)"> + <section name="Apache Commons RNG 1.5 (requires Java 8+)"> <subsection name="Binaries"> <table> <tr> - <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> + <td><a href="[preferred]/commons/rng/binaries/commons-rng-1.5-bin.tar.gz">commons-rng-1.5-bin.tar.gz</a></td> + <td><a href="https://www.apache.org/dist/commons/rng/binaries/commons-rng-1.5-bin.tar.gz.sha512">sha512</a></td> + <td><a href="https://www.apache.org/dist/commons/rng/binaries/commons-rng-1.5-bin.tar.gz.asc">pgp</a></td> </tr> <tr> - <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> + <td><a href="[preferred]/commons/rng/binaries/commons-rng-1.5-bin.zip">commons-rng-1.5-bin.zip</a></td> + <td><a href="https://www.apache.org/dist/commons/rng/binaries/commons-rng-1.5-bin.zip.sha512">sha512</a></td> + <td><a href="https://www.apache.org/dist/commons/rng/binaries/commons-rng-1.5-bin.zip.asc">pgp</a></td> </tr> </table> </subsection> <subsection name="Source"> <table> <tr> - <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> + <td><a href="[preferred]/commons/rng/source/commons-rng-1.5-src.tar.gz">commons-rng-1.5-src.tar.gz</a></td> + <td><a href="https://www.apache.org/dist/commons/rng/source/commons-rng-1.5-src.tar.gz.sha512">sha512</a></td> + <td><a href="https://www.apache.org/dist/commons/rng/source/commons-rng-1.5-src.tar.gz.asc">pgp</a></td> </tr> <tr> - <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> + <td><a href="[preferred]/commons/rng/source/commons-rng-1.5-src.zip">commons-rng-1.5-src.zip</a></td> + <td><a href="https://www.apache.org/dist/commons/rng/source/commons-rng-1.5-src.zip.sha512">sha512</a></td> + <td><a href="https://www.apache.org/dist/commons/rng/source/commons-rng-1.5-src.zip.asc">pgp</a></td> </tr> </table> </subsection>