v1.0.2 - Performance Enhancements
Changes:
- Fixed progress tracking getting stuck at ~93%, functions that couldn't be processed (no MLIL/architecture) are now properly counted in progress tracking
- Implemented batched patching. All patches for a function are now collected and applied with a single mutex lock, significantly reducing lock contention
- Added work-stealing queue. Replaced static work distribution with dynamic work-stealing for better CPU utilisation
- Dynamic batch sizing. Thread batch sizes now scale down as work becomes scarce, preventing thread starvation on complex functions
- Reduced mutex overhead. UpdateAnalysis() calls are now batched per function instead of per patch
- More responsive cancellation. Added cancellation checks every 100 instructions when processing large functions
- Work queue uses adaptive batch sizes (5→3→2→1) based on remaining work, and thread synchronisation improved with condition variables for work distribution.
Full Changelog: v1.0.1...v1.0.2