All notable changes to TrueEntropy will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
configure(mode="HYBRID")- Switch to high-performance PRNG modeHybridTapclass - PRNG seeded by true entropy from the poolhybrid_reseed_intervalconfig - Control reseed frequency (default: 60s)- 83x faster than DIRECT mode (~5M ops/sec vs ~60K ops/sec)
BaseTapabstract class - Common interface for tap implementationsget_tap()function - Get current tap instance (EntropyTap or HybridTap)- Mode switching via
configure(mode="DIRECT"|"HYBRID")
- ARCHITECTURE.md updated with Operation Modes section and diagrams
- README.md updated with Hybrid Mode usage and tuning guidelines
- Comprehensive demo script in
examples/demo_comprehensive.py
EntropyTapnow inherits fromBaseTap- Global
_tapcan now be eitherEntropyTaporHybridTap configure()now supportsmodeandhybrid_reseed_intervalparameters
configure(offline_mode=True)- Disable all network-dependent harvestersget_config()- Get current configurationreset_config()- Reset to defaultsTrueEntropyConfig- Configuration dataclass with per-harvester flags
health()now returnssourcesdict with status of each harvesterhealth()now returnsoffline_modebooleanprint_health_report()displays source status table
test_harvesters_live.py- Live tests for all harvesters with latency metrics- Performance benchmarks with detailed reporting
BENCHMARKS.md- Historical benchmark data
start_background_collector()now respects global configcollect_once()now respects global config- Added weather and radioactive harvesters to collector
0.1.0 - 2025-12-27
EntropyPool- Thread-safe entropy accumulator with SHA-256 mixingEntropyTap- Extractor for converting entropy to random valuesentropy_health()- Pool health monitoring with score and recommendations
random()- Float in [0.0, 1.0)randint(a, b)- Integer in [a, b] with rejection samplingrandbool()- Random booleanchoice(seq)- Random element from sequencerandbytes(n)- Random bytesshuffle(seq)- Fisher-Yates shufflesample(seq, k)- Random sampling without replacement
uniform(a, b)- Uniform distributiongauss(mu, sigma)- Normal distribution (Box-Muller)triangular(low, high, mode)- Triangular distributionexponential(lambd)- Exponential distributionweighted_choice(seq, weights)- Weighted random selection
random_uuid()- UUID v4 generationrandom_token(length, encoding)- Hex/base64 tokensrandom_password(length, ...)- Secure password generation
TimingHarvester- CPU timing jitterNetworkHarvester- Network latency measurementsSystemHarvester- System state (RAM, CPU, processes)ExternalHarvester- USGS earthquakes, crypto pricesWeatherHarvester- OpenWeatherMap/wttr.in weather dataRadioactiveHarvester- random.org and ANU QRNG
trueentropy.aio- Async/await supporttrueentropy.persistence- Save/load pool statetrueentropy.pools- Multiple isolated poolstrueentropy.lazy- Lazy harvester loadingtrueentropy.accel- Optional Cython acceleration
- GitHub Actions CI (tests on Python 3.9-3.12, Linux/Windows/macOS)
- Comprehensive test suite (100+ tests)
- Type hints (PEP 561 compliant)
- Documentation (README, REFERENCES)
requests>=2.25.0psutil>=5.8.0