<?xml version="1.0"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->

<!--
This file is used by the maven-changes-plugin to generate the release notes.
Useful ways of finding items to add to this file are:

1.  Add items when you fix a bug or add a feature (this makes the
release process easy :-).

2.  Do a JIRA search for tickets closed since the previous release.

3.  Use the report generated by the maven-changelog-plugin to see all
SVN commits.

To generate the file RELEASE-NOTES.txt from this file:

mvn changes:announcement-generate -Prelease-notes [-Dchanges.version]

The <action> type attribute can be add,update,fix,remove.
-->

<!-- NOTE:
The description attribute entries below are specially formatted 
so as to improve the layout of the generated text release notes.

The parsing process removes all line feeds, replacing them with a single space.
The Velocity template in src/changes/release-notes.vm has been enhanced to replace pairs of adjacent spaces
with a new-line in the release notes. (These spaces are ignored when displaying HTML).
If the output is not quite correct, check for invisible trailing spaces!
-->

<document>
  <properties>
    <title>Apache Commons RNG Release Notes</title>
  </properties>
  <body>

    <release version="1.2" date="2018-12-12" description="
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.

It must be noted that, due to the nature of random number
generation, some of 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).
">
      <action dev="erans" type="update" issue="RNG-63">
        "NumberFactory": Some methods have become obsolete following RNG-57.
      </action>
      <action dev="erans" type="update" issue="RNG-64" due-to="Alex D. Herbert">
        "PermutationSampler" and "CombinationSampler" shared code moved to a utility class.
      </action>
      <action dev="erans" type="add" issue="RNG-62" due-to="Alex D. Herbert">
        New "CombinationSampler" class.
      </action>
      <action dev="erans" type="update" issue="RNG-61" due-to="Alex D. Herbert">
        "PermutationSampler": Performance improvement.
      </action>
      <action dev="erans" type="update" issue="RNG-57" due-to="Alex D. Herbert">
        Cache for using up all the bits provided by the underlying source of randomness.
      </action>
      <action dev="erans" type="update" issue="RNG-60">
        Use random seeds for unit testing.
      </action>
      <action dev="erans" type="update" issue="RNG-52">
        Set conservative upper bound in "LargePoissonSampler" to avoid truncation.
      </action>
      <action dev="erans" type="fix" issue="RNG-59">
        Use JDK's "SecureRandom" to seed the "SeedFactory".
      </action>
      <action dev="erans" type="update" issue="RNG-58">
        Allow part of RNG state to be contained in base classes, e.g. to enable
        caching in common code (see RNG-57).
      </action>
      <action dev="erans" type="update" issue="RNG-51" due-to="Alex D. Herbert">
        "PoissonSampler": Performance improvement.
      </action>
      <action dev="erans" type="fix" issue="RNG-56">
        "ZigguratNormalizedGaussianSampler": Missing statements in least used branch.
      </action>
      <action dev="erans" type="fix" issue="RNG-55" due-to="Alex D. Herbert">
        "UnitSphereSampler": Prevent returning NaN components and forbid
        negative dimension.
      </action>
    </release>

    <release version="1.1" date="2018-08-14" description="
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).
">
      <action dev="erans" type="fix" issue="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.
      </action>
      <action dev="erans" type="update" issue="RNG-50" due-to="Alex D. Herbert">
        "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.
      </action>
      <action dev="erans" type="add" issue="RNG-37">
        Implementation of the "Ziggurat" algorithm for Gaussian sampling.
      </action>
      <action dev="erans" type="update" issue="RNG-42">
        Use "ZigguratNormalizedGaussianSampler" within the library.
      </action>
      <action dev="erans" type="add" issue="RNG-47">
        "DiscreteProbabilityCollectionSampler": Sampling from a collection of items
        with user-defined probabilities (feature ported from "Commons Math").
      </action>
      <action dev="erans" type="add" issue="RNG-43">
        "LogNormalSampler" with user-defined underlying "NormalizedGaussianSampler".
      </action>
      <action dev="erans" type="update" issue="RNG-46">
        Following RNG-43, "BoxMullerLogNormalSampler" has been deprecated.
      </action>
      <action dev="erans" type="add" issue="RNG-39">
        "UnitSphereSampler": generate random vectors isotropically located
        on the surface of a sphere (feature ported from "Commons Math").
      </action>
      <action dev="erans" type="add" issue="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).
      </action>
      <action dev="erans" type="add" issue="RNG-35">
        New generic "GaussianSampler" based on "NormalizedGaussianSampler"
        marker interface.
        Implementation of "BoxMullerNormalizedGaussianSampler" deprecates
        "BoxMullerGaussianSampler".
      </action>
    </release>

    <release version="1.0" date="2016-12-13" description="
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)
">
    </release>


  </body>
</document>
