Skip to content

Latest commit

 

History

History
69 lines (54 loc) · 3.77 KB

File metadata and controls

69 lines (54 loc) · 3.77 KB

Credits and Attributions

This modernized fork of pcg-cpp by Total-Random integrates several critical fixes and improvements from the community. Below is a list of changes and their original sources.

Community Fixes

1. Optimized unxorshift

2. Empty Base Class Optimization (EBCO) for MSVC

  • Origin: imneme/pcg-cpp PR #66
  • Author: melak47
  • Description: Enables __declspec(empty_bases) on MSVC to optimize the memory footprint of RNG objects.

3. Public result_type in seed_seq_from

4. GCC Warning Fixes

5. Native Windows ARM64 Support

  • Origin: imneme/pcg-cpp PR #99
  • Author: Demonese
  • Description: Added native support for ARM64 on MSVC using __umulh for efficient 128-bit multiplication.

6. Sample and Include Cleanups

7. Consistent Integer Type

  • Origin: imneme/pcg-cpp PR #92
  • Author: rstub
  • Description: Fixes compilation issues where __uint128 isn't available by ensuring consistent type usage.

8. Modern C++ Standard Usage in Samples

  • Suggestion: david-fong
  • Description: Replaced C-style casting and std::round with std::lround in cppref-sample.cpp.

9. Rotation Inference Fix

  • Origin: imneme/pcg-cpp PR #87
  • Author: rnvannatta
  • Description: Fixed rotation functions to rely on compiler idiom recognition instead of undefined behavior for 0-shift.

Total-Random Improvements

10. Modern CMake Build System

  • Author: Total-Random
  • Description: Comprehensive CMake integration with find_package support and automated testing via ctest.

11. MSVC Compatibility Fixes

  • Author: Total-Random
  • Description: Resolved several MSVC-specific issues:
    • C2678 (ambiguous operator) in set_stream and operator>>.
    • C4458 (declaration of 'is_mcg' hides class member).
    • C1090 (PDB API call failed) during parallel builds.
    • C4127 (conditional expression is constant) in template code.

Special Thanks

Special thanks to Melissa O'Neill for creating the original PCG library and to all the community members who have proposed fixes over the years.

We are especially grateful to:

  • Ben Haller (bhaller) for his early support, encouragement, and understanding during the initial phases of this fork.
  • david-fong (david-fong) for valuable feedback on the CMake build system.