New Release - Version 0.4.0

RandN v0.4.0 has been released! It's available at NuGet and GitHub. We've dropped .NET 5 support since it's reached End-of-Life, but also added both .NET 6 and .NET 7 to the targets to take advantage of new APIs where possible.

Thanks to Dan Carter, RandN now sports the Singleton Distribution, and Select and SelectMany extension methods for distributions.

ChaCha performance has increased by nearly 4x with .NET 7+ on supported ARM processors thanks to new SIMD support. These improvements extend to any other platform that supports hardware acceleration for Vector256 and Vector128, now or in the future, such as WASM.

Our tests have become much more comprehensive thanks to using Stryker Mutator to find coverage gaps. We boast 96.70% coverage in RandN and 85.55% coverage in RandN.Core - increasing the coverage is difficult or impossible due to some paths being executed depending on hardware support, such as AVX2 or SSE2 support and endianness. Coverage reports can be downloaded here and here.

Continuous integration has been set up on SourceHut, running the full test suite on all supported target frameworks on each push, plus mutation testing with Stryker. RandN also has a fresh new website as announced in an earlier post.

Full Changelog

  • Added .NET 6 and .NET 7 targets
  • (Breaking Change) Dropped .NET 5 target
  • Deprecated the CryptoServiceProvider RNG due to deprecation of RNGCryptoServiceProvider
  • Added the SystemCryptoRNG to replace CryptoServiceProvider
  • Added the Singleton distribution
  • Added Select and SelectMany extension methods for IDistribution
  • Support for SIMD acceleration of ChaCha on ARM when running on .NET 7 or later


What's next?

This is the last version of RandN to support .NET 3.1

Keep an eye on the issue tracker for plans for 0.5.0 and beyond.