v0.1.7 - Memory Optimization Release
This release brings significant memory and performance optimizations to discoal while maintaining 100% backward compatibility. This serves as a transitional release before the upcoming tskit integration.
Highlights
- 80-99% memory reduction for most simulation scenarios
- Up to 50x performance improvement for high mutation rates
- Sample size limit increased from 254 to 65,535
Major Improvements
Memory Optimizations
- Dynamic allocation replaces fixed-size arrays (baseline memory: 400MB → 10MB)
- Ancestry tracking via interval trees instead of per-site arrays
- Memory-mapped files for sweep trajectories (2GB → 1.4MB)
- Reference counting enables memory sharing between nodes
- Active material tracking with segment-based structure
Performance Enhancements
- Optimized mutation handling with hash tables and binary search
- Pre-computed mutation presence matrix for output generation
- AVL tree indexing for O(log n) ancestry lookups
- Up to 50x speedup for extreme mutation rates (θ=10,000)
- 33-47x faster for extreme recombination scenarios
# Same command-line interface as v0.1.6
./discoal 50 1000 10000 -t 10 -r 10Installation
git clone https://github.com/kr-colab/discoal.git
cd discoal
make discoalWhat's Next?
The next major release (v0.2.0) will introduce full tskit integration for tree sequence recording, bringing discoal into the modern tree sequence ecosystem.