|
| 1 | +# Credits and Attributions |
| 2 | + |
| 3 | +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. |
| 4 | + |
| 5 | +## Community Fixes |
| 6 | + |
| 7 | +### 1. Optimized `unxorshift` |
| 8 | +- **Origin:** [imneme/pcg-cpp PR #82](https://github.com/imneme/pcg-cpp/pull/82) |
| 9 | +- **Author:** [melak47](https://github.com/melak47) |
| 10 | +- **Description:** Implements a more efficient inverse xorshift operation. |
| 11 | + |
| 12 | +### 2. Empty Base Class Optimization (EBCO) for MSVC |
| 13 | +- **Origin:** [imneme/pcg-cpp PR #66](https://github.com/imneme/pcg-cpp/pull/66) |
| 14 | +- **Author:** [melak47](https://github.com/melak47) |
| 15 | +- **Description:** Enables `__declspec(empty_bases)` on MSVC to optimize the memory footprint of RNG objects. |
| 16 | + |
| 17 | +### 3. Public `result_type` in `seed_seq_from` |
| 18 | +- **Origin:** [imneme/pcg-cpp commit 1eeda5f](https://github.com/imneme/pcg-cpp/commit/1eeda5f893d9595a855cdfa5d53dbbdd08c091b7) |
| 19 | +- **Author:** [oneill](https://github.com/imneme) (Melissa O'Neill) |
| 20 | +- **Description:** Makes `result_type` public to comply with the C++ `SeedSequence` concept. |
| 21 | + |
| 22 | +### 4. GCC Warning Fixes |
| 23 | +- **Origin:** [SupercriticalSynthesizers/pcg-cpp PR fix-gcc-warnings](https://github.com/SupercriticalSynthesizers/pcg-cpp/tree/fix-gcc-warnings) |
| 24 | +- **Author:** [Timo Alho](https://github.com/tialho) |
| 25 | +- **Description:** Resolves various GCC warnings (clz/ctz truncation) when building with `-Wall`. |
| 26 | + |
| 27 | +## Total-Random Improvements |
| 28 | + |
| 29 | +### 5. Native Windows ARM64 Support |
| 30 | +- **Author:** [Total-Random](https://github.com/Total-Random) |
| 31 | +- **Description:** Added native support for ARM64 on MSVC using `__umulh` for efficient 128-bit multiplication. |
| 32 | + |
| 33 | +### 6. Modern CMake Build System |
| 34 | +- **Author:** [Total-Random](https://github.com/Total-Random) |
| 35 | +- **Description:** Comprehensive CMake integration with `find_package` support and automated testing via `ctest`. |
| 36 | + |
| 37 | +### 7. MSVC Compatibility Fixes |
| 38 | +- **Author:** [Total-Random](https://github.com/Total-Random) |
| 39 | +- **Description:** Resolved several MSVC-specific issues: |
| 40 | + - `C2678` (ambiguous operator) in `set_stream` and `operator>>`. |
| 41 | + - `C4458` (declaration of 'is_mcg' hides class member). |
| 42 | + - `C1090` (PDB API call failed) during parallel builds. |
| 43 | + - `C4127` (conditional expression is constant) in template code. |
| 44 | + |
| 45 | +## Special Thanks |
| 46 | +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. |
0 commit comments