Skip to content

Latest commit

 

History

History
94 lines (77 loc) · 4.57 KB

CHANGELOG.md

File metadata and controls

94 lines (77 loc) · 4.57 KB

1.1

  • breaking change to randomIValInteger to improve RNG quality and performance see #4 and ghc https://ghc.haskell.org/trac/ghc/ticket/8898
  • correct documentation about generated range of Int32 sized values of type Int #7
  • fix memory leaks by using strict fields and strict atomicModifyIORef' #8 related to ghc trac tickets #7936 and #4218
  • support for base < 4.6 (which doesnt provide strict atomicModifyIORef') and integrating Travis CI support. #12
  • fix C type in test suite #9

1.0.1.1

bump for overflow bug fixes

1.0.1.2

bump for ticket 8704, build fusion

1.0.1.0

bump for bug fixes,

1.0.0.4

bumped version for float/double range bugfix

1.2

  1. Breaking change which mostly maintains backwards compatibility.
  2. Support for monadic generators e.g. mwc-random.
  3. Monadic adapters for pure generators (providing a uniform monadic interface to pure and monadic generators).
  4. Faster by more x10 (depending on the type) - see below for benchmarks.
  5. Passes a large number of random number test suites:
  1. Better quality split as judged by these tests. Again see random-quality for details on how to do this yourself.
  2. Unbiased generation of ranges.
  3. Updated tests and benchmarks.
  4. Continuous integration.
  5. Fully documented - for more details see the haddock.

Benchmarks

Notes

  1. These are not percentage (%) increases. Random Ints are produced 48.9 times faster!
  2. The only type for which generation is slower is for Integers (on ranges); in the version 1.1 the generation for Integer was biased.

Without Specifying Ranges

|----------|----------------|----------------|----------------------|
| Type     | Cycles/Int 1.1 | Cycles/Int 1.2 | Performance Increase |
|----------|----------------|----------------|----------------------|
| Ints     |           1508 |          30.84 |                 48.9 |
| Word16   |            495 |          30.88 |                 16.0 |
| Floats   |           1036 |          35.11 |                 29.5 |
| CFloats  |           1054 |          33.75 |                 31.2 |
| Doubles  |           1875 |          35.77 |                 52.4 |
| CDoubles |            908 |          33.31 |                 27.3 |
| Integers |           1578 |          33.09 |                 47.7 |
| Bools    |            698 |          36.15 |                 19.3 |
| Chars    |            693 |           57.6 |                 12.0 |
|----------|----------------|----------------|----------------------|

Specifying Ranges

|--------------|----------------|----------------|----------------------|
| Type         | Cycles/Int 1.1 | Cycles/Int 1.2 | Performance Increase |
|--------------|----------------|----------------|----------------------|
| Ints         |            734 |            102 |                  7.2 |
| Word16s      |            748 |            115 |                  6.5 |
| Floats       |           2055 |          35.88 |                 57.3 |
| CFloats      |           1071 |          34.96 |                 30.6 |
| Doubles      |           3050 |          35.89 |                 85.0 |
| CDoubles     |           1112 |          34.87 |                 31.9 |
| Integers     |            534 |            868 |                  0.6 |
| Bools        |            739 |          35.22 |                 21.0 |
| Chars        |            790 |            133 |                  5.9 |
| BIG Integers |         199848 |         103056 |                  1.9 |
|--------------|----------------|----------------|----------------------|