Third-Party Notices
This package contains third-party software components governed by the license(s) indicated below.
Serialization & Compression¶
protobuf-net¶
- Description: .NET runtime/library for Protocol Buffers serialization by Marc Gravell.
- Upstream: GitHub repository
- License: Apache License 2.0
- License URL: Apache License 2.0
- Notes: Uses attributes such as [ProtoContract]/[ProtoMember] and runtime
ProtoBuf.Serializer.
7-Zip LZMA SDK¶
- Description: LZMA compression/decompression implementation (encoder/decoder) used via
SevenZip.Compression.LZMA. - Upstream: 7-Zip LZMA SDK
- License: Public Domain (per 7-Zip LZMA SDK)
- Notes: Integrated sources under
Runtime/Utils/SevenZip/Compress/LZMA.
Editor Tools¶
Unity-Serializable-Dictionary¶
- Description: Serializable dictionary implementation enabling Unity serialization of generic dictionaries.
- Upstream: GitHub repository
- License: MIT License
- License URL: MIT License
- Notes: Adapted naming and serialization cache handling to align with Wallstop Studios Unity Helpers conventions.
Unity Editor Toolbox (Inline Editor)¶
- Description: Inline inspector drawer inspiration for editing object references in-place.
- Upstream: GitHub repository
- License: MIT License
- License URL: MIT License
- Notes: Portions of
WInLineEditorDrawerbuild upon concepts from the toolbox's InlineEditor drawer implementation.
Sorting Algorithms¶
The following sorting algorithm implementations in Runtime/Core/Extension/IListExtensions.cs are adapted from or inspired by third-party sources.
Pattern-Defeating QuickSort (pdqsort)¶
- Description: Hybrid sorting algorithm combining quicksort with insertion sort and heapsort fallback.
- Author: Orson Peters
- Upstream: GitHub repository
- License: zlib License
- Notes: C# adaptation retaining pattern-detection heuristics while operating on
IList<T>.
Grail Sort¶
- Description: Block merge sort algorithm achieving stable O(n log n) sorting with O(1) extra space.
- Author: Mrrl (Andrey Astrelin)
- Upstream: GitHub repository
- License: MIT License
- Notes: Adaptation uses pooled buffers instead of manual block buffers while keeping stability.
WikiSort (Block Merge Sort)¶
- Description: In-place stable merge sort using block rearrangement.
- Author: Mike McFadden (BonzaiThePenguin)
- Upstream: GitHub repository
- License: Public Domain
- Notes: Adaptation uses a pooled full-size buffer for simplicity.
PowerSort¶
- Description: Adaptive mergesort leveraging natural runs with optimal merge scheduling.
- Authors: J. Ian Munro and Sebastian Wild
- Upstream: arXiv paper
- License: CC BY 4.0 (paper); algorithm is public domain
- Notes: Implementation detects runs and merges them with pooled buffers.
sort-research-rs Algorithms (Glidesort, Fluxsort, Ipnsort)¶
- Description: Modern high-performance sorting algorithms from the sort-research-rs project.
- Authors: Orson Peters, Lukas Bergdoll (Voultapher)
- Upstream: GitHub repository
- License: Apache License 2.0 / MIT License (dual-licensed)
- Notes: C# adaptations of Glidesort (stable galloping merges), Fluxsort (dual-pivot quicksort), and Ipnsort (introspective quicksort with median-of-medians).
IPS4o Sort¶
- Description: In-place parallel super scalar samplesort.
- Authors: Michael Axtmann, Sascha Witt, Daniel Ferizovic, Peter Sanders
- Upstream: arXiv paper
- License: Academic paper; algorithm concepts are freely implementable
- Notes: Single-threaded C# adaptation with multiway partitioning.
Random Number Generators¶
The following PRNG implementations in Runtime/Core/Random/ are adapted from or inspired by third-party sources.
PCG Random¶
- Description: Permuted Congruential Generator family of PRNGs with excellent statistical properties.
- Author: Melissa O'Neill
- Upstream: PCG Random website
- Paper: PCG: A Family of Simple Fast Space-Efficient Statistically Good Algorithms for Random Number Generation
- License: Apache License 2.0
- Notes: Implementation based on the reference PCG Random.
Xoroshiro / Xoshiro / SplitMix64¶
- Description: Fast, high-quality PRNGs with small state.
- Authors: David Blackman, Sebastiano Vigna
- Upstream: Scrambled Linear PRNGs (xoshiro/xoroshiro); Fast Splittable PRNGs (SplitMix64)
- License: CC0 1.0 Universal (Public Domain)
- Notes: Implements xoroshiro128** and SplitMix64 variants.
RomuDuo¶
- Description: Rotate-multiply PRNG family optimized for modern CPUs.
- Authors: Mark A. Overton
- Upstream: ROMU website (archived)
- License: CC0 1.0 Universal (Public Domain)
- Notes: Implements the RomuDuo variant with two 64-bit state words.
WyRandom (wyhash)¶
- Description: Fast PRNG based on the wyhash hash function.
- Author: Wang Yi
- Upstream: GitHub repository
- License: The Unlicense (Public Domain)
- .NET Reference: cocowalla/wyhash-dotnet (MIT License)
- Notes: Implementation references the cocowalla .NET port.
Will Stafford Parsons Algorithms¶
The following algorithms are by Will Stafford Parsons (wileylooper). Note: The original GitHub repositories are currently offline.
- IllusionFlow: Hybridized PCG + xorshift design.
- FlurryBurst: Six-word ARX-style generator.
- StormDrop: Large-state ARX generator inspired by SHISHUA.
- PhotonSpin: 20-word ring-buffer generator.
- BlastCircuit: Four-word ARX-style generator.
- WaveSplat: One-word chaotic generator.
- Meteor Sort: Gap-sequence-based hybrid sorting algorithm.
- Ghost Sort: Hybrid gap-based sorting algorithm.
License: These implementations are used with attribution to the original author. Please refer to the individual repositories for specific licensing terms if they become available again.
Academic & Historical Acknowledgments¶
The following algorithms are based on well-known academic work and are implemented from published descriptions:
Sorting Algorithms¶
- TimSort: Hybrid stable sort by Tim Peters (Python) and OpenJDK. Python description
- SmoothSort: Heap-based adaptive sort by Edsger Dijkstra. Further analysis by Stefan Edelkamp and Armin Wegener.
- JesseSort: Dual-patience sort hybrid by Jesse Michel. GitHub
- greeNsort: Symmetric mergesort by Jens Oehlschlegel. Website
- Ska Sort: Branch-friendly dual-pivot quicksort by Malte Skarupke. Blog post
- PowerSort+: Enhanced run-priority mergesort by Sebastian Wild and Martin Nebel.
Random Number Generators¶
- XorShift: Classic PRNG by George Marsaglia (2003). Paper
- Linear Congruential Generator: Park-Miller variant (1988). "Random Number Generators: Good Ones Are Hard to Find" Communications of the ACM 31(10):1192-1201
- Squirrel Noise: Hash-based noise function by Squirrel Eiserloh. GDC Talk
Additional Notes¶
- System.Text.Json and other .NET BCL components are used as part of the .NET runtime and are subject to their respective licenses (e.g., MIT for dotnet/runtime). No vendored sources from these components are included in this repository.
Full License Texts¶
MIT License¶
Used by: Unity-Serializable-Dictionary, Unity Editor Toolbox, Grail Sort, cocowalla/wyhash-dotnet
Apache License 2.0¶
Used by: protobuf-net, PCG Random, sort-research-rs algorithms
zlib License¶
Used by: pdqsort
CC0 1.0 Universal (Public Domain Dedication)¶
Used by: Xoroshiro/Xoshiro/SplitMix64, RomuDuo
The Unlicense¶
Used by: wyhash